彻底理解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.rhkb.cn/news/470254.html

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

相关文章

OpenGL【C++】台灯

#include<gl/glut.h> #include <math.h>/**************************************/ /* 设置灯旋转角度初始值和一些所用参数 */ /**************************************/ static GLfloat yrot -100.0; static GLfloat zrot 40.0; const GLfloat PI 3.141592…

初探鸿蒙:从概念到实践

一、鸿蒙开发的环境准备 开发工具&#xff1a;使用 DevEco Studio&#xff0c;支持 ArkTS 语法。 系统要求&#xff1a;确保计算机符合 DevEco Studio 的最低系统需求。安装步骤&#xff1a;下载 DevEco Studio&#xff0c;安装合适的 SDK 和模拟器 二、鸿蒙应用可以…

React Native 全新架构来了

React Native 0.76 现已在 npm 上以全新架构默认发布&#xff01; 在 0.76 版本的发布博客中&#xff0c;我们分享了此版本包含的一系列重大更改。在本文中&#xff0c;我们将概述全新架构以及它如何塑造 React Native 的未来。 全新架构全面支持现代 React 功能&#xff0c;…

git commit 校验

commitlint官方链接 1. npm install --save-dev commitlint/config-conventional commitlint/cli 2. 配置commitlint.config.cjs(项目根目录中&#xff09; module.exports {extends: [commitlint/config-conventional],rules: {type-enum: [2,always,[Feat, Fix, Doc, Style,…

vue2.x elementui 固定顶部、左侧菜单与面包屑,自适应 iframe 页面布局

vue elementui 固定顶部、左侧菜单与面包屑&#xff0c;自适应 iframe 页面布局 疑问点&#xff1a;iframe无法高度100%&#xff0c;如果写了100%就会有滚动条&#xff0c;所以只写了99.5% 【效果图】 路由示例 const routes [{title: Index,path: /,name: "Index"…

Coggle数据科学 | RAG编码模型对比:谁与OpenAI最为相似?

本文来源公众号“Coggle数据科学”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;RAG编码模型对比&#xff1a;谁与OpenAI最为相似&#xff1f; 在设计检索增强型生成&#xff08;RAG&#xff09;系统时&#xff0c;选择嵌入模型…

golang分布式缓存项目 Day1 LRU 缓存淘汰策略

注&#xff1a;该项目原作者&#xff1a;https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO&#xff08;First In, First Out&#xff09;先进先出 原理&…

工业相机选取

1.相机分类&#xff1a; 1.1 在相机曝光方式中&#xff0c;全局曝光和卷帘曝光是两种主流技术。CCD相机通常采用全局曝光方式&#xff0c;而CMOS相机则可能采用卷帘曝光。 面阵相机与全局曝光关联与区别 关联&#xff1a;面阵相机可以使用全局曝光作为曝光方式&#xff0c;但…

如何查看电脑关机时间

要查看电脑的关机时间&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 打开事件查看器&#xff1a;按下键盘上的Windows键R键&#xff0c;然后在弹出的运行对话框中输入"eventvwr.msc"&#xff0c;并按下Enter键。 2. 在事件查看器窗口中&#xff0c;单击左侧窗…

jwt用户登录,网关给微服务传递用户信息,以及微服务间feign调用传递用户信息

1、引入jwt依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency> 2、Jwt工具类&#xff0c;生成token以及解析token package com.niuniu.gateway.uti…

SQL练习(2)

题源&#xff1a;牛客官网 选择题 假设创建新用户nkw&#xff0c;现在想对于任何IP的连接&#xff0c;仅拥有user数据库里面的select和insert权限&#xff0c;则列表语句中能够实现这一要求的语句是&#xff08;&#xff09; A grant select ,insert on *.* to nkw% B grant…

【MySQL从入门到放弃】InnoDB磁盘结构(一)

前言 从MySQL 5.5版本开始默认 使用InnoDB作为引擎&#xff0c;它擅长处理事务&#xff0c;具有自动崩溃恢复的特性&#xff0c;在日常开发中使用非常广泛。 下面是官方的InnoDB引擎架构图&#xff0c;主要分为内存结构和磁盘结构两大部分。 上一篇文章&#xff0c;我们解析了…

RT-DETR融合CVPR[2020]轻量化卷积模块Ghost Module模块

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《GhostNet: More Features from Cheap Operations》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/1911.11907 代码链接&#xff1a;GitHub - huawei-noah/Effici…

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信

《TCP/IP网络编程》学习笔记 | Chapter 11&#xff1a;进程间通信 《TCP/IP网络编程》学习笔记 | Chapter 11&#xff1a;进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信 运用进程间通信习题&#xff08;1&#xff09;什么是进程间通信&…

2024 kali操作系统安装Docker步骤

1、更新系统 在开始之前&#xff0c;确保你的Kali系统是最新的。打开终端并运行以下命令&#xff1a; apt update 2、安装 apt install docker.io 3、查看启动状态 systemctl status docker 4、安装完 Docker 后&#xff0c;启动 systemctl start docker 5、启动并使…

LLMs之Code:Github Spark的简介、安装和使用方法、案例应用之详细攻略

LLMs之Code&#xff1a;Github Spark的简介、安装和使用方法、案例应用之详细攻略 目录 Github Spark的简介 Github Spark的安装和使用方法 1、安装 2、使用方法 Github Spark的案例应用 Github Spark的简介 2024年10月30日&#xff0c;GitHub 重磅发布GitHub Spark 是一…

MySQL数据库:SQL语言入门 【上】(学习笔记)

SQL&#xff08;Structured Query Language&#xff09;是结构化查询语言的简称&#xff0c;它是一种数据库查询和程序设计语言&#xff0c;同时也是目前使用最广泛的关系型数据库操作语言。&#xff08;95%适用于所有关系型数据库&#xff09; 【 SQL是关系型数据库通用的操作…

腾讯云nginx SSL证书配置

本章教程,记录在使用腾讯云域名nginx证书配置SSL配置过程。 一、nginx配置 域名和证书,替换成自己的即可。证书文件可以自定义路径位置。服务器安全组或者防火墙需要开放80和443端口。 server {#SSL 默认访问端口号为 443listen 443 ssl; #请填写绑定证书的域名server_name c…

使用electron-egg把vue项目在linux Ubuntu环境下打包并安装运行

electron-egg一个入门简单、跨平台、企业级桌面软件开发框架https://www.kaka996.com/electron-egg 跳转地址 1,使用 git下载代码到本地,如果没有git需要进行安装 # gitee git clone https://gitee.com/dromara/electron-egg.git # github git clone https://github.com/dro…

Nginx配置自带的stub状态实现活动监控指标

场景 为了确保应用以最佳性能和精度运行&#xff0c;需要清晰地了解有关其活动的监控指标。 NGINX 提供了多种监控选项&#xff0c;例如 stub 状态。 注&#xff1a; 博客&#xff1a;霸道流氓气质-CSDN博客 实现 启用 NGINX stub 状态 启用 NGINX HTTP 服务器内 locati…