星期六, 02 10月 2021 07:46

UDS服务中CAN ID跟N_AI怎么关联?

N_AI(Network Address Information),定义了PDU(Network Protocol Data Unit )的地址信息部分,主要包括N_SA,N_TA,N_TAtype和N_AE。针对题主的问题,N_SA,N_TA是与CAN ID 相关的,N_TAtype也有些间接关系。
首先需要明白的是,ISO15765定的只是一个大致的协议或是规范,具体在软件实现的时候可以自由去定义数据结构,甚至协议也可适当调整,不同协议栈的实现方式大致相同,但都会有一些细节上的不同。
N_SA,N_TA分别表示源地址和目的地址,其实就是表示报文传输的来源以及去向。而在实际整车CAN网络中,每个ECU都会被分配三个或四个CAN ID作为诊断的发送ID和接收ID。不难看出,N_SA表示ECU发送报文的地址信息,会携带ECU静态定义并明确标识此ECU的ID,即对应ECU发送ID,N_TA表示ECU接收报文的地址信息,会携带来自网络并标识Tester的ID,即对应ECU接收ID。
举个ECU例子,某ECU的发送ID为0x788,接收ID为0x780和0x7DF(为什么两个?后面解释),当某诊断仪或Tester发送诊断报文后,此ECU接收并响应发送报文回去,这种情况下,CAN ID为0x780的报文从诊断仪或Tester发出,ECU接收处理后会以0x788为CAN ID发送响应出去。这里N_SA相当于关联上了0x788,表示来源于此ECU,N_TA关联于0x780,表示诊断仪或Tester的目的地址为此ECU。
而0x7DF是神马东西呢?这个就是关联于N_TAtype,表示物理寻址和功能寻址。简单来说,前者表示通信方式是一对一,后者表示一对多。这个0x7DF就是来源于功能寻址的ID,也就是说不止此ECU会接收处理此报文,其他ECU也会。
---------------

15765-2有五种地址类型,标准地址,标准混合地址,扩展地址,29位混合地址,11位混合地址。其中 标准地址 、扩展地址、11位混合地址 ,这些ID是特定的,是车厂给我们定好的。比如,我是车厂的整车控制器供应商,车厂会告诉我以下信息:

1.整车控制的CAN ID是1,是物理地址

2.收发的时候使用的是标准数据帧

3.这个ID=1是属于标准地址(标准地址,标准混合地址,扩展地址,29位混合地址,11位混合地址 这五种里面的一种)。请注意标准地址和CAN 的标准帧不是一个概念哦!

4.多包传输的时候(ISO15765-2是实现多包传输的),和ID是9的一个节点进行通讯,ID=9就是Tester

5.和ID=9的节点支持多包通讯。

6.ID=0xDF,是功能地址,不支持多包。

7.收到ID=0xDF后,你要响应。

以上是UDS for 标准地址,这也是大家通用的东西。ID是我瞎写的

当然以上也符合扩展地址、11位的混合地址(混合地址的话,规则制定者还必须告诉你AE信息)。

我在写一下 基于15765-2的 标准混合地址、扩展地址、29位的混合地址的东西,和上面差不多。只不过这三个地址,CAN ID是可以拆分的。

1.使用标准混合地址通讯。

2.收发的时候使用的是通过扩展数据帧

2.整车控制器的地址是0x4,

4.当接受到地址是0x5的信息的时候,要回复哦~!

5.优先级P=6

看到没 ,信息就这么少,为什么呢,我来通过15765-2解释一下。

根据第1条得知使用标准混合地址通讯,查阅15765-2得知 物理通讯是PF=218(十六进制是0xDA),功能通讯PF=219(十六进制是0xDB),所以我们可以得知当我们接受到0x18DA0405的帧,就是给我们整车控制器发的。,并且是物理通讯,支持多包。 当我们接受到0x18DB0405的时候,是功能通讯,是不支持多包的。是一对多。 这里有人问了,一对多,为什么Ta却是04?其实这里的确不应该是04.因为一对多,Tester用来“广播”的,因为这个地址信息是符合J1939的。其实这里的Ta应该是0xFF才对,所以应该是0x18DBFF05 这样才是广播。

把PF=205 206 (混合地址)换上去,再加上AE信息,通用。

关于标准地址说法肯定对的,关于标准混合地址、29位混合地址的说法是通过阅读文档,按照对文档的理解所写的。有可能不对。

以上是对15765-2的所有理解。

查看 2962
本栏更多文章: « UDS汽车协议总结