[汽车电子] 彻底理解ARXML中的PDU
目录
0 序
-
在
CANFD
支持可变速率和更大的数据长度(64字节)的情况下,可以使用DBC
和ARXML
两种数据库格式来进行报文通信,那么两者间有什么区别呢? -
1份 arxml 数据库文件 在 autosar explorer 2.0 中的情况:
1 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
信号来进行相关功能执行,这种固定好通信内容,只是增加报文长度的方式在总线高负载的情况下就会造成总线资源的浪费,增加负载率;并且由于无法调整报文长度,灵活性较差。
2 ARXML
报文信号的发送
- 在
ARXML
数据库中就引入了PDU
的概念,在AUTOSAR
中规定:Frame
是由PDU
组成,PDU
是由signal
组成。
Frame > PDU > Signal
一般CAN
报文是由I-signal-PDU
组成,CANFD
报文中由Container-PDU
组成,Container-PDU
又是由若干个I-signal-PDU
组成。
如图所示,PDUCont
作为一个Container-PDU
,其中包含PDU1
、PDU2
、PDU_3
、PDU4
总共四个I-signal-PDU
。
什么是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层,如此从应用层到网络层到数据链路层进行数据发送。
PDU的类型
- 1、从
AUTOSAR
网络模型架构来看,PDU
可以分为I-PDU
、N-PDU
和L-PDU
。
I-PDU
:表示层PDUN-PDU
:网络层PDUL-PDU
:数据链路层PDU
类比上一小节中介绍的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中看到,对应去查查相关功能。
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的通讯问题进行检索定位。
Y 推荐文献
X 参考文献

本文链接: https://www.cnblogs.com/johnnyzen/p/18751384
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2024-03-04 [系统] 开源通用系统框架(Java)
2021-03-04 [Linux]常用命令之【mkdir/touch/cp/rm/ls/mv】