• 【车载开发系列】UDS诊断---诊断会话控制($0x10)


    【车载开发系列】UDS诊断—诊断会话控制($0x10)

    一.概念定义

    SID$0x10就是诊断会话控制服务DiagnosticSessionControl的意思。它包含3个子功能。ECU上电时,进入的是默认会话模式(Default),如果没有收到诊断会话请求,ECU需自动进入第一个默认会话模式(01h),在同一个时刻,只能有一个诊断会话模式被激活,所以这里的会话模式更像是一个容器,其他所有的服务都将在这个“容器”当中执行。诊断工具通过此服务使ECU进入不同的诊断会话模式。

    二.三种会话模式

    在诊断会话控制服务中包含默认会话,编程会话和Extended扩展会话3个子功能。
    为什么设计三个会话模式呢?因为权限问题。默认会话权限最小,可操作的服务少;扩展模式通常用于解锁高权限诊断服务,例如写入数据/参数、读写诊断码;编程模式用于解锁bootloader相关的诊断服务,即程序烧录。

    子功能会话模式
    01默认会话模式
    02编程会话模式
    03扩展会话模式
    1)默认会话

    子服务代码是01。顾名思义,就是ECU在刚启动时保持的状态,当ECU复位的时候也是会返回默认会话,不需要超时处理。

    2)编程会话

    子服务代码是02。刷写程序时用的,超时或者刷写失败时会跳转回默认会话,即ECU从底层软件跳转到应用软件。
    编程会话从字面上就很好理解,如果需要对ECU进行程序刷写操作,就需要进入编程会话才能执行相关操作。

    3)扩展会话

    子服务代码是03。通常诊断用的大部分功能以及特殊功能都在这个会话模式下进行。
    扩展会话模式主要是用来写入一些信息如VIN和序列号等,以及控制ECU执行一些特殊请求如控制应用通信和故障信息的更新等

    三.会话模式切换

    默认会话模式 可以直接切换到扩展会话模式,但是不能直接切 换到编程会话模式,如果想进入编程会话模式, 则必须先进入扩展会话模式。同样,编程会话模式不能直接进入扩展会话模式,只能进入默认会话模式。
    ECU复位以及 S3 定时器超 时将导致 ECU 进入默认会话模式。
    在这里插入图片描述

    四.报文格式

    1)请求报文

    参数“DiagnosticSessionType”定义了要求启动哪种会话。01-03分别对应着三种会话模式。
    在这里插入图片描述

    2)肯定响应

    定时器 P2server 的数值以 1ms 计算。
    定时器 P2server 的数值以 10ms 计算
    在这里插入图片描述
    时间参数有两个,P2server_max和P2
    server_max,每个参数占用两个字节,所以一共占用四个字节。虽然每个参数都是两个字节,但是其单位(精度)是不一样的,P2参数的单位是10ms,也就是说P2的结果需要把后面两个字节的数值乘以10才是实际的时间。
    P2server_max=50ms=0x0032
    P2server_max=5000ms=50010ms=0x01F4*10ms

    3)否定响应

    在这里插入图片描述

  • 相关阅读:
    rhce第一天笔记
    传感器|基于改进贪心算法的最佳传感器位置选择(Matlab代码实现)
    【BBC新闻文章分类】使用 TF 2.0和 LSTM 的文本分类
    图学习初探Paddle Graph Learning 构建属于自己的图【系列三】
    Three.js入门详解
    ECK安装elasticsearch集群及es配置x-pack
    【OpenMV】AprilTag标记跟踪 NCC模板匹配 测距与测量物体大小
    ​Kali-linux攻击路由器​
    【Ubuntu】命令行快速移动光标
    站在自动装配角度浅析Spring和SpringBoot的区别
  • 原文地址:https://blog.csdn.net/Last_Impression/article/details/128006975