CAN通信协议栈(四) 之对ISO14229的理解

2022-05-25 14:59:26 浏览数 (2)

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诊断服务,笔者会在后续文章中介绍。

0 人点赞