彻底理解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的通讯问题进行检索定位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-scrollbar 动态更新内容 鼠标滚轮无效

有以下功能逻辑,实现了一个时间轴组件,点击、-号后像地图那样放大组件以显示不同的UI。 默认显示年月: 当点击一下加号时切换为年: 当点击减号时切换为日: 即加号、减号点击就是在年月日显示进行切换。给Scrollvie…

LED点阵显示(Proteus 与Keil uVision联合仿真)(点阵字模提取)

点阵字模提取: https://pan.baidu.com/s/1DZSeLyD_SUkaHRgTm26o-A 提取码: 1111 一、LED点阵显示器结构 点亮点阵中一个发光二极管条件:对应行为高电平,对应列为低电平。如在很短时间内依次点亮很多个发光二极管,LED点阵就可显示…

.NET中通过C#实现Excel与DataTable的数据互转

在.NET框架中,使用C#进行Excel数据与DataTable之间的转换是数据分析、报表生成、数据迁移等操作中的常见需求。这一过程涉及到将Excel文件中的数据读取并加载至DataTable中,以便于利用.NET提供的丰富数据处理功能进行操作,同时也包括将DataTa…

「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用

本篇将带你实现一个多选问卷小应用,用户可以勾选选项并点击提交按钮查看选择的结果。通过本教程,你将学习如何使用 Checkbox 组件、动态渲染列表、状态管理及用户交互,构建完整的应用程序。 关键词 UI互动应用Checkbox 组件状态管理动态列表…

Java 并发编程学习笔记

参考资料: JAVA并发专题 - 终有救赎的专栏 - 掘金 Java并发编程学习路线(建议收藏��) | Java程序员进阶之路x沉默王二 面试题目: JUC第一讲:Java并发知识体系详解 面试题汇总(P6熟练 P7精通…

【Linux系统】—— 基本指令(二)

【Linux系统】—— 基本指令(二) 1 「alias」命令1.1 「ll」命令1.2 「alias」命令 2 「rmdir」指令与「rm」指令2.1 「rmdir」2.2 「rm」2.2.1 「rm」 删除普通文件2.2.2 「rm」 删除目录2.2.3 『 * 』 通配符 3 「man」 指令4 「cp」 指令4.1 拷贝普通…

Pytorch cuda版本选择(高效简洁版)

简而言之 Pytorch cuda版本选择 只需要低于cuda驱动版本即可,cuda驱动版本查看命令是nvidia-smi, nvcc -V 是runtimeapi版本可以不用管 1.只要看cuda驱动版本 安装pytorch 选择cuda版本,只要看你电脑cuda驱动版本即可。 2.选择依据 pytorch中cuda版本只…

Flink API 的层次结构

Apache Flink 提供了多层 API,每层 API 针对不同的抽象层次和用途,使得开发者可以根据具体需求选择合适的 API 层次。以下是 Flink API 的层次结构及其简要说明:

GPU集群上分布式训练大模型

总结一下如何在超算系统上进行预训练大模型的分布式训练 / 微调,文中代码已上传至 github 实验环境 集群1:国家广州超算 星逸A800智能AI集群 GPU:8 * Nvdia Tesla-A800 80G显存 CPU:2 * 28核 Intel Xeon Gold 6348 内存&#xff…

python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf

目录 零一、保存网页快照的三种方法二、利用打印机保存pdf的方法 零 最近星球有人问如何使用页面打印功能,另存为pdf 一、保存网页快照的三种方法 解决方案已经放在星球内:https://articles.zsxq.com/id_55mr53xahr9a.html当然也可以看如下代码&…

Redis 中 Bitmap 原理和应用

Bitmap Redis中的Bitmap(位图)是一种较为特殊数据类型,它以最小单位bit来存储数据,我们知道一个字节由 8个 bit 组成,和传统数据结构用字节存储相比,这使得它在处理大量二值状态(true、false 或…

elementUI 点击弹出时间 date-picker

elementUI的日期组件,有完整的UI样式及弹窗,但是我的页面不要它的UI样式,点击的时候却要弹出类似的日期选择器,那怎么办呢? 以下是elementUI自带的UI风格,一定要一个输入框来触发。 这是我的项目中要用到的…

微软日志丢失事件敲响安全警钟

NEWS | 事件回顾 最近,全球最大的软件公司之一——微软,遭遇了一场罕见的日志丢失危机。据报告,从9月2日至9月19日,持续长达两周的时间里,微软的多项核心云服务,包括身份验证平台Microsoft Entra、安全信息…

2021-04-22 51单片机玩转点阵

理论就不赘述了,网络上多得很,直接从仿真软件感性上操作认识点阵,首先打开ISIS仿真软件,放置一个点阵和电源与地线就可以开始了;由点阵任何一脚连线到地线,另一边对应的引脚就连接到电源,如图:点击运行看是否点亮?看到蓝色与红色的点表示电源正常但是没有任何亮点,这时对调一下…

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.事务管理(事务进阶) 7.MySQL 索引 1.DQL数据查询语言 分为五大…

恭喜!2024年度大连市科技人才创新、科技人才创业项目拟立项公示!

精选SCI/SSCI/EI SCI&EI ●IEEE 1区TOP 计算机类(含CCF); ●EI快刊:最快1周录用! 知网(CNKI)、谷歌学术期刊 ●7天录用-检索(100%录用),1周上线; 免费稿件评估 …

【前端】-音乐播放器(源代码和结构讲解,大家可以将自己喜欢的歌曲添加到数据当中,js实现页面动态显示音乐)

前言:音乐播放器是前端开发中的一个经典项目,通过它可以掌握很多核心技术,如音频处理、DOM操作、事件监听、动画效果等。这个项目不仅能提升前端开发的技能,还能让开发者深入理解JavaScript与HTML的协同作用。 页面展示&#xff1…

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包: MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件: #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…

03_CC2530基于定时器3的Delay_ms函数

CC2530定时器3与Delay_ms延时函数 前言 ​ Delay函数是开发中常用到的函数,可以用于按键消抖,LED闪烁,生成一定频率信号等(软件模拟通讯协议)。由于利用循环执行一定次数的空指令实现的延时函数在精度上并不能让人满意,而用定时…

【系统面试篇】其他相关题目——虚拟内存、局部性原理、分页、分块、页面置换算法

目录 一、相关问题 1. 什么是虚拟内存?为什么需要虚拟内存? (1)内存扩展 (2)内存隔离 (3)物理内存管理 (4)页面交换 (5)内存映…