1 会话
$10包含3个子功能,01 Default默认会话,02 Programming编程会话,03 Extended扩展会话,ECU上电时,进入的是默认会话(Default)。
为什么设计三个会话模式呢?因为权限问题。默认会话权限最小,可操作的服务少;扩展模式通常用于解锁高权限诊断服务,例如写入数据/参数、读写诊断码;编程模式用于解锁bootloader相关的诊断服务,即程序烧录。这里来一张权限表格。带颜色的区域代表需要解锁操作。
1.1 会话权限
默认会话[10 01] : #0x22 #0x11 #0x19 #0x14 #3E
编程会话[10 02] : #0x34 #0x36 #0x37
拓展会话[10 03] : #0x27 #0x85 #0x2E #0x31
1.2 会话跳转
1.3 非默认会话回到默认会话
- 请求10 01
- #11 复位
- #3E 超时
- 上下电,休眠唤醒
1.4 会话保持
ECU一上电就会进入默认会话,通过10 SF进入非默认会话,但是非默认会话模式是需要3E持续发送来保持的
体现在下图就是Timeout S3 time.
结合下面的截图来讲讲s3 time具体是什么机制
Tester会在S3 client时间内周期性发送3E给ECU【如3E00, 3E08】,ECU收到这个请求之后,会让ECU维持在非默认会话;
如果Tester在S3server时间内都没有给ECU发送诊断请求报文,那么ECU就会从非默认会话跳转到默认会话,此时如果ECU 处于解锁状态,也会从解锁状态跳转到锁定状态。
2 格式
2.1 request格式
SID + SF
2.2 response格式
positive response: 0x40 + 0x10 + SF + Data
negative response: 0x7F + 0x10 + NRC
10服务支持的NRC代码如下: