[汽车电子] 彻底理解ARXML中的PDU

目录

0 序

  • CANFD支持可变速率更大的数据长度(64字节)的情况下,可以使用DBCARXML两种数据库格式来进行报文通信,那么两者间有什么区别呢?

  • 1份 arxml 数据库文件 在 autosar explorer 2.0 中的情况:


1 DBC报文信号的发送

  • 在介绍PDU前,我们先来了解一下DBC数据库中的信号发送过程,来理解DBCARXML的区别。

  • 首先,DBCCAN数据库文件

从下图的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,其中包含PDU1PDU2PDU_3PDU4总共四个I-signal-PDU

什么是PDU?

  • PDUProtocol Data Unit),即协议数据单元,是SDUPCI的组成。

AUTOSAR_EXP_LayeredSoftwareArchitecture文档中有对应的解读。

  • SDUService Data Unit服务数据单元

是由上层传递的数据,带有传输数据的请求,可以理解为CAN数据帧报文中的数据域。

  • PCIProtocol Control Information协议控制信息

SDU从特定协议层的一个实例传输到另一个实例时需要的信息,比如目的信息
PCI一般在传输端协议层添加,在接收端把它移除。

  • 传输过程:从下图中可以看到,在发送端N+1层将PDU发送给N层,N层将该PDU解析为自身的SDU;N层在协议层部分添加上PCI后又作为该层的PDU发送给N-1层,如此从应用层网络层数据链路层进行数据发送。

PDU的类型

  • 1、从AUTOSAR网络模型架构来看,PDU可以分为I-PDUN-PDUL-PDU
  • I-PDU:表示层PDU
  • N-PDU:网络层PDU
  • L-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在其中位置,个数也是非固定的,可根据实际需要进行配置。

当配置PDU1PDU2时,只发送这两个;当配置PDU1时,只发送这一个。

总结

  • PDU的概念类似于字节域,都是规定一种数据存储的方式,在CANDLC就是8字节,包含的信号最多占满这8字节,可以看成一个PDU来处理。
  • 对于CANFD数据域来说最多64个字节,通过Container-I-Pdu去包含多个ISignal-I-Pdu的方式能够便于数据库文件信号的定义与管理动态配置灵活性来提高总线资源利用率降低负载

当然对于测试人员来说,就需要掌握上述的PDU知识,才能更好的对基于PDU的通讯问题进行检索定位。

Y 推荐文献

X 参考文献

posted @   千千寰宇  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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】
点击右上角即可分享
微信分享提示