彻底理解ARXML中的PDU
文章目录
- 一、DBC报文信号的发送
- 二、ARXML报文信号的发送
- 2.1 什么是PDU
- 2.2 PDU的类型
- 2.3 Container-I-PDU的发送
- 三、小结
在CANFD支持可变速率和更大的数据长度(64字节)的情况下,可以使用DBC和ARXML两种数据库格式来进行报文通信,那么两者间有什么区别呢?
一、DBC报文信号的发送
在介绍PDU前,我们先来了解一下DBC数据库中的信号发送过程,来理解DBC与ARXML的区别。
首先,DBC是CAN的数据库文件。从下图的Powertrain网络中可以看到,CANFD总线上有两个节点,Engine节点能够发送0x7FF报文。
通过DBC文件能够看到0x7FF报文包含很多信号,当Engine节点想要把信号Test_Signal_Byte_03_05发送给Gateway节点时,对于DBC来说报文的长度是固定下来的,要发送Test_Signal_Byte_03_05信号就必须把0x7FF这一整帧包含的所有信号全部发出去。但对于Gateway节点来说此时它只需要Test_Signal_Byte_03_05信号来进行相关功能执行,这种固定好通信内容,只是增加报文长度的方式在总线高负载的情况下就会造成总线资源的浪费,增加负载率;并且由于无法调整报文长度,灵活性较差。
二、ARXML报文信号的发送
在ARXML数据库中就引入了PDU的概念,在AUTOSAR中规定:Frame是由PDU组成,PDU是由signal组成。一般CAN报文是由I-signal-PDU组成,CANFD报文中由Container-PDU组成,Container-PDU又是由若干个I-signal-PDU组成。如图所示,PDUCont作为一个Container-PDU其中包含PDU1、PDU2、PDU_3、DPU4总共四个I-signal-PDU。
2.1 什么是PDU
PDU(Protocol Data Unit),即协议数据单元,是SDU和PCI的组成。在AUTOSAR_EXP_LayeredSoftwareArchitecture文档中有对应的解读。
SDU:Service Data Unit,服务数据单元。是由上层传递的数据,带有传输数据的请求,可以理解为CAN数据帧报文中的数据域。
PCI:Protocol Control Information,协议控制信息。将SDU从特定协议层的一个实例传输到另一个实例时需要的信息,比如源与目的信息。PCI一般在传输端由协议层添加,在接收端把它移除。
传输过程:从下图中可以看到,在发送端N+1层将PDU发送给N层,N层将该PDU解析为自身的SDU;N层在协议层部分添加上PCI后又作为该层的PDU发送给N-1层,如此从应用层到网络层到数据链路层进行数据发送。
2.2 PDU的类型
1、从AUTOSAR网络模型架构来看,PDU可以分为I-PDU、N-PDU和L-PDU。
- I-PDU:表示层PDU
- N-PDU:网络层PDU
- L-PDU:数据链路层PDU
类比2.1小节中介绍的PDU传输过程,可以理解为PDU信息在不同层添加上各自的PCI后发送给下一层后成为其他层的PDU信息。
2、根据功能划分PDU有多种类型,Container-I-PDU(容器PDU,包含多个其他PDU)、Dcm-I-PDU、Gennral-Purpose-PDU、Gennral-Purpose-I-PDU、I-Signal-I-PDU(标准信号)、Multiplexed-I-PDU、NM-PDU(网络管理)、N-PDU(诊断TP层)、User-Defined-PDU、User-Defined-I-PDU、XCP-PDU、J1939-Dcm-I-PDU、Secured-I-PDU。当然,比较常用的是加粗的几个PDU类型,也是见的最多的。其他不常用的PDU信息可以在数据库PDU Type Filter中看到,对应去查查相关功能。
2.3 Container-I-PDU的发送
Container PDU是在ARXML数据库中发送CANFD报文常会用到的PDU类型。它包含的多个I-signal-PDU可以实现动态配置,不固定PDU的位置和数量,提高通讯效率
。Container PDU的结构如下:
仍然以上面介绍的PDUCont作为例子,从数据库中可以看到它包含的四个I-signal-PDU每个都有不同的Header ID Short Header,有了这个HeaderID我们就能找到与其对应的data信息。可以看到还有Header ID Long Header,两者的区别如下:
- Short Header:ID占24bit,DLC占8bit
- Long Header:ID占32bit,DLC占32bit
PDUCont的发送过程如下图Trace展示,可以看出Container PDU可以动态配置各个I-signal-PDU在其中位置,个数也是非固定的,可根据实际需要进行配置。当配置PDU1和PDU2时,只发送这两个;当配置PDU1时,只发送这一个。
三、小结
PDU的概念类似于字节域,都是规定一种数据存储的方式,在CAN中DLC就是8字节,包含的信号最多占满这8字节,可以看成一个PDU来处理。对于CANFD的数据域来说最多64个字节,通过Container-I-Pdu去包含多个ISignal-I-Pdu的方式能够便于数据库文件信号的定义与管理、动态配置灵活性来提高总线资源利用率和降低负载。当然对于测试来说,就需要掌握上述的PDU知识,才能更好的对基于PDU的通讯问题进行检索定位。