ISO14229是UDS诊断应用层的协议,定义了诊断服务的实现步骤及具体的诊断服务定义。本文主要依据的是ISO14229-1:2013和ISO14229-3:2012,这是最新版协议,分别代替了之前的ISO14229-1:2006和ISO15765-3:2004,这一点请读者注意。
1 服务原语
和之前ISO15765中类似,ISO14229-1中定义了6种服务原语,分别是:
(1)服务请求原语
(2)服务请求确认原语
(3)服务指示原语
(4)服务响应原语
(5)服务响应确认原语
(6)服务确认原语
下图展示了UDS诊断服务的流程:
图1 UDS诊断服务流程(响应确认)
图2 UDS诊断服务流程(响应未确认)
此流程基于Client/Server模式,Client(Tester)请求服务,Server(ECU)根据服务请求的某一功能进行回复。
服务原语具体定义和之前讲到的ISO15765-2类似这里就不加以赘述,详情请参见ISO14229-1:2013文档。
2
协议数据单元(A_PDU)
PCI,Protocol Control information
A_PCI有两种格式,如果服务响应的第一个字节不是0x7F,则:
代码语言:javascript复制A_PCI (
SI
)
如果服务响应的第一个字节是0x7F,则:
代码语言:javascript复制A_PCI (
NR_SI,
SI
)
SI:Service Identifier,诊断ID
图3 诊断ID定义
NR_SI:服务否定响应ID,值为0x7F
否定响应A_PDU如下图所示:
图4 否定响应A_PDU
3
服务响应规则
(1)服务响应规则
分为3种:
- 强制性的(Mandatory):每个回复信息中都必须包含的
- 可选择的(Optional):回复类型可选
- 供应商自行定义的(Manufacturer/Supplier Specific):根据OEM或者供应商需求自行定义的回复类型
图5 服务响应规则示意
(2)子服务请求及响应规则
如下图所示:
图6 子服务请求及响应规则示意
(3)物理寻址方式请求服务及响应
物理寻址在之前介绍过,是一对一的通信。
图7 物理寻址方式请求子服务及响应规则示意
图8 物理寻址方式请求(无子服务)及响应规则示意
(4)功能寻址方式请求服务及响应
功能寻址是一对多的通信。
图9 功能寻址方式请求子服务及响应规则示意
图10 功能寻址方式请求(无子服务)及响应规则示意
物理寻址和功能寻址方式的ID主机厂会在CAN matrix定义好,这里不需要我们自己去区别,只需知道哪些是物理寻址方式的ID,哪些是功能寻址方式的ID,在Vector工具包中进行相应配置即可。
4
服务请求A_PDU格式
定义如下参数:
图11 A_PDU参数
- 含子服务的服务请求:
图12 请求服务A_PDU(含子服务)
子服务结构:
图13 子服务结构
- 不含子服务的服务请求:
图14 请求服务A_PDU(不含子服务)
5
服务响应A_PDU格式
- 肯定响应:
图15 肯定响应A_PDU格式
- 否定响应:
格式:0x7F SID NRC
Negative Response Code:错误响应码
6 示例
- 服务请求报文:
图16 请求报文格式
- 肯定响应:
图17 肯定响应报文格式
- 否定响应:
图18 否定响应报文格式
以上是服务请求及响应的统一格式,如想看具体实例请参见之前文章
如何读懂UDS诊断报文
7
总结
本文主要介绍了UDS诊断协议中服务请求及响应流程,ISO14229-1中还定义了常用的UDS诊断服务,笔者会在后续文章中介绍。