1.物理寻址和功能寻址的差别
物理寻址,从字面上理解就是知道你的物理实体地址,按照物理地址找你干活,一找一个准,是诊断仪和模块之间点对点的通讯。
功能寻址,从字面上理解就是不知道你的物理实体地址,只知道有这个功能,那就得拿着大喇叭喊,模块都接收,谁有这个功能谁理会,是一对多的通讯。
2.14229中关于DTC(19服务)的一些解释
#3 DTCStatusMask具体解释如下:
注意第4列是对第3列的解释,其中有部分位置0了
通常会请求19 02 09,其中09表示bit0和bit3置1了
bit0置1表示请求时测试失败,一般认为是当前DTC
bit3置1表示请求时确认过失败,一般认为是历史DTC
关于bit3有一个注意点,aging criteria,也就是这个DTC不一定需要一直存着,有一个老化机制,达到一定条件好就清除历史DTC
规范中有各种子功能的示例:
这里面有个重点#4-#7、#8-#11这四个四个一组的怎么定义的
每一组中的最后一个字节很好理解就是statusOfDTC
而DTCHighByte、DTCMiddleByte、DTCLowByte来源如下:
接下来参考 ISO 15031-6
再来看附录D了解下DTC low byte(FailureTypeByte)
高4位表示大类,低4位表示子类型
失效模式太多,这里只截图了一小部分,常用的有11(短路到地)和13(开路)还有88(busoff)等等
接着看DTCHighByte、DTCMiddleByte
Byte1的bit7、bit6t表示有4类模块
00:powertrain;
01:chassis;
10:body;
11:network
每类模块有可以分成4套,虽然说有4套,但实际使用的只有一套,因为Byte1的高位的后2bit只有为01才是主机厂可以使用的
因此一般DTC列表都是B1000-B1FFF、C1000-C1FFF、P1000-P1FFF、U1000-U1FFF,因此每类可定义4096个故障码,再加上故障类型(开路/短路/busoff等),可以定义更多的具体DTC
例如:
B10 07 13:B1是固定的,13表示开路了,中间的007可自由发挥可定义为左前大灯
B10 4D 17:B1是固定的,17表示过电压,中间的04D可自由发挥,可定义为TBOX
U10 4D 88:U1是固定的,88表示busoff,中间的04D和上面一样可定义为TBOX
3.供应商可以使用的DID范围
适用于0x22、0x2E、0x2F、0x19等服务
4.否定响应的定义
诊断服务中经常有些否定影响,它们有具体的定义
0x12表示子功能不支持,没这个子功能,发错了
0x78表示再等等还没准备好
肯定响应的具体要求需要参考具体服务的示例
5.禁止肯定相应位
只影响肯定响应的回复,否定响应直接回复不影响
禁止肯定响应,在保持在线中经常用,上位机为了让模块保持在线,会间隔一会发送 3E 80,这个8就是禁止肯定响应,因为这时候上位机只是通知模块需要保持在线,不需要模块进行回复,否则发送 3E 00,模块就需要回复一下,这样会占用总线浪费资源。
以上标准截图来自于ISO 14229-1-2013及ISO 15031-6 2003