作用:切换不同的会话模式;
子服务:01:默认会话(Default)不需要超时处理;
02:编程会话(Programming)刷写程序时使用;
03:拓展会话(Extended)大部分功能会话;
一次只能有一个会话,不能既是默认会话同时又是扩展会话,除了默认会话不需要保持之外,其他会话均需要发送指令来维持会话,否则超时之后返回默认会话。
security access有以下步骤:
1、诊断仪向ECU发送请求“seed”;
2、ECU向诊断仪发送“seed”经过安全算法计算的一个“key”;
3、诊断仪向ECU发送key;
4、ECU判断诊断仪发送的key与自己计算的key是否匹配。
key匹配则可以安全访问,否则访问失败;
安全等级的级别 Security Level=(security Access Type(requestseed)+1)/2;
01/02=Level01 03/04=Level02
该服务用于打开/关闭某些类别的报文的发送接收(应用报文或网络管理报文),报文的收发模式包括:只收不发,只发不收,不发不收,即发又收。
子服务:
0x00 enableRxAndTx (使能接收和发送)
0x01 enableRxAndDisableTx(使能接收和关闭发送)
0x02 disableRxAndEnableTx(使能发送和关闭接收)
0x03 disableRxAndTx(关闭接收和发送)
0x04 enableRxAndDisableTxWithEnhancedAddressInformation(使能接收和关闭发送,针对特定的地址)
0x05 enableRxAndTxWithEnhancedAddressInformation(使能接收和发送,针对特定的地址)
0x06 - 0x7F都是保留或者留给厂商自定义的。
用于读取 ECU 的 DTC 诊断信息,例如读取某一 DTC Status 的 DTC 数量,读取某 DTC 的快照数据或者扩展数据等。
子服务:
01 (读取符合掩码条件的DTC数量)(必须支持),后面的参数是DTC状态掩码;
02(读取符合掩码条件的DTC列表及其状态)(必须支持),后面的参数是DTC状态掩码;
03 获取DTC快照记录ID;
04(读取快照信息),也叫冻结帧,请求指定故障码(DTC)的快照信息,通过查找故障发生时刻的这些数据,来分析故障原因;
06(读取扩展信息),比如故障发生的次数、老化次数、已老化次数等;
0A(读取ECU支持的所有DTC列表及其状态)(必须支持)
除状态掩码的bit4和bit6位均被清零;
14 FF FF FF:意味着清除全部DTC信息;
可以清除特定的DTC,也可以清除一组DTC;
作用:控制诊断故障码设置服务就是让服务端停止或恢复DTC状态位更新。
子服务:0x00 : ISOSAEReserved(保留)
0x01 : on (DTC 开启)
0x02 : off (DTC 关闭)
0x03-0x7F :保留或者厂家自定义
恢复状态位DTC的更新方式有:
1、在非默认会话下超时,重新回到默认会话;
2、ECU复位(实际复位操作/请求ECU复位服务);
3、重新恢复ECU状态位更新。
DID就是某一存储在非易失性存储器(NVM)里、表示汽车或者软件的一些标识的ID。
服务的目的就是在非易失性存储器(NVM)里写入DID对应的数据。
作用:用于client主动请求server去对相关输入输出信号进行控制,没有子服务。
IO的控制类型:
00是控制权还给ECU,Return Control To ECU;
01是复位为默认值,Reset to Default;
02是冻结当前的状态,Freeze Current State;
03是短暂接管控制权,Short Term Adjustment;
若控制类型是00-02这三种,请求报文是4个字节;
若控制类型是03,请求报文的第五字节是控制代码,可以是数字量,比如01是开,00是关;也可以是模拟量,比如空调风门的开度
作用:对主机厂定义的一些特定程序的控制操作(启动程序、停止程序、请求运行结果)
子服务:
0x01 startRoutine (启动例程)
0x02 stopRoutine (停止例程)
0x03 requestRoutineResults (请求结果)
这个服务的目的是确保诊断服务或者之前激活的通信还处在激活的状态即会话保持的功能。
可以设置固定时间选择发送3E80 来维持通信,发送报文3E80 不用应答,3E00 会有应答之后的报文返回。