文章目录

  • 前言
  • PDU类型定义
  • Autosar定义的PDU
  • 动态Container布局
    • CANFD ContainerPDU定义
    • CANFD Signal-I-PDU定义
  • CANFD实际数据解析
  • 总结

前言

之前在没有真正接触CANFD时,理解的CANFD报文只是两个主要变化点:
1.波特率可切换
2.数据位拓展为64位

这样的话,对于之前的CAN报文来说,DBC可以很好的兼容CANFD报文,只需要定义好message中的layout即可。但目前实际使用过程中,并不是简单的一个message包括一个PDU,而是通过Arxml文件引入了Container-PDU和I-signal-PDU,一个CANFD的frame中可能包含多个I-signal-PDU。

PDU类型定义

在Arxml文件中定义的有如下类型:

PDU Type Application/Idea
ISignal-I-PduDU AUTOSAR COM标准信号PDU
N-PduDU transport layer诊断TP层
NmM-PduDU Network Management网络管理
XcpCP-PduDU XCP=Universal Measurement and Calibration ProtocolXCP标定
Multiplexed I-PDUdu 多路复用PDU
varying Signal I-PDUs at the same position
General-Purpose-PduDU
General-Purpose-I-PDUdu with category XCP replaces the deprecated XCP-PDU
DcmCM-I-PduDU Diagnostic Communication Manager
Container-I-PduDU 容器PDU,存放多个其他PDU
UserDefinedPduDU 用户自定义
UserDefinedIPduDU 用户自定义
SecuredIPdu Refers to an IPdu, that is protected against unauthorized manipulation
J1939DcmIPdu

对于标准CAN通讯来说,比较常用的就是ISignal-I-Pdu,Container-I-Pdu。后面再详细介绍。

Autosar定义的PDU

Abbreviation/ Acronym: Description:
COM I-PDU I-PDU assembled in the COM module out of COM Signals
contained I-PDU I-PDU assembled into or extracted from a Container PDU对应Arxml中的多种PDU类型
Container PDU PDU containing I-PDUs and headers包含多种PDU

对于普通CAN报文来说,一个message对应一个PDU,对于CANFD报文来说,引入Container PDU和contained I-PDU实现一个message对应多组PDU。

考虑这样做的优势:

不同的contained I-PDU可以映射到不同的Container PDU的不同位置。不仅提高了灵活性,而且也会降低总线负载率。

动态Container布局


Autosar引入了动态Container的layout,也就是说PDU存在的位置是不固定的,将PDU Header和I-PDU打包后可以放入不同Container PDU的不同位置中。
可以这么理解:PDU Header就是之前普通CAN报文的ID和DLC。

CANFD ContainerPDU定义

ContainerPDU并不是frame,但可以设置ContainerPDU包含frame所有的数据位。ContainerPDU是包含在frame中的。
对于一个CANFD-frame,定义如下:


:若CANFD报文实际只有8字节,那么就和普通报文一样,定义一个I-Signal-PDU就够了,不需要引入容器PDU

Container-I-PDU定义如下:


Header Type有三种选择:

1.ShortHeader 2.LongHeader 3.NoHeader

Autosar中定义如下:

IpduM支持两种不同的动态Container Pdu的头大小(参见ECUC_IpduM_00183: IpduMContainerHeaderSize):
IPDUM_HEADERTYPE_SHORT, 24位ID, 8位长度
IPDUM_HEADERTYPE_LONG, 32位ID, 32位长度

如果是选择的ShortHeader,那么实际数据位中会有三个byte为ID,一个byte为DLC,8个byte为数据位

在Container-PDU定义页可以选择包含的PDU及设置PDU对应的ID。

CANFD Signal-I-PDU定义


这个Signal-I-PDU就类似普通的CAN报文,里面定义了具体的信号信息,及layout信息。

CANFD实际数据解析


CANFD带Container的报文,实际数据长度为24,包含两个Signal-I-PDU(每个12个byte)

对应的Signal-I-PDU还可以继续展开解析后的信号具体信息

总结

CANFD报文若使用contained I-PDU和Container PDU,则DBC不适合再用来管理通讯矩阵,需要采用Arxml文件来管理。若没有选择使用HeaderID和DLC,则DBC还可以继续使用,对于应用来说,相对于CAN的DBC只是长度增加而已。

使用I-Signal-PDU,使得CANFD报文中的信息更加灵活,对于网关转发,信号解析更加方便。

目前主要只用到了I-Signal-PDU,若用到其他的,会持续更新本文~~
若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~
你的鼓励是对小弟的最大支持~~~

建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

详解Autosar Arxml中的CANFD报文及格式相关推荐

  1. php执行md5sum,Linux_详解Linux系统中md5sum命令的用法,MD5算法常常被用来验证网络文 - phpStudy...

    详解Linux系统中md5sum命令的用法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任 ...

  2. float属性html,详解CSS样式中的float属性

    详解CSS样式中的float属性.float是 css 样式的定位属性.我们在印刷排版中,文本可以按照需要围绕图片.一般把这种方式称为"文本环绕".在网页设计中,应用了CSS的fl ...

  3. java调用项目中的文件_详解eclipse项目中.classpath文件的使用

    1 前言 在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用? 2 作用 .classp ...

  4. Session机制详解及分布式中Session共享解决方案

    Session机制详解及分布式中Session共享解决方案 参考文章: (1)Session机制详解及分布式中Session共享解决方案 (2)https://www.cnblogs.com/jing ...

  5. 图文详解】Chrome中安装JsonView插件

    图文详解]Chrome中安装JsonView插件 Chrome中如何安装JsonView插件?chrome插件网为您图文详解. 1.下载JsonView插件 在github中搜索JsonView,找到 ...

  6. 【NLP】四万字全面详解 | 深度学习中的注意力机制(四,完结篇)

    作者 | 蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attention小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的注意力机制(二) 四万字全面详解 ...

  7. 【NLP】四万字全面详解 | 深度学习中的注意力机制(三)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attenion小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的 ...

  8. 【NLP】四万字全面详解 | 深度学习中的注意力机制(二)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记  前情提要:四万字全面详解 | 深度学习中的注意力机制(一) 目前深度学习中热点之一就是注意力机制(Attention ...

  9. 详解深度学习中的Normalization,不只是BN(2)

    " 深度神经网络模型训练之难众所周知,其中一个重要的现象就是 Internal Covariate Shift. Batch Normalization 大法自 2015 年由Google ...

  10. html子布局不超出父布局,详解flex布局中保持内容不超出容器的解决办法

    在移动端,flex 布局很好用,它能够根据设备宽度来自动调整容器的宽度,用起来很方便,已经越来越离不开它,但是最近在做项目的时候发现一个问题. 就是在一个设置了 flex:1 的容器中,如果文字很长, ...

最新文章

  1. 自动驾驶车通过动作捕捉,学会阅读街上人们的肢体语言
  2. linux常见命令汇总
  3. 用或非门构造D型触发器
  4. Science上发表的超赞聚类算法
  5. 三个角度来解决无线路由故障
  6. java 数组拼接_打印Java数组最优雅的方式是什么?这波操作闪瞎我
  7. python 函数进度条怎么_python输出结果刷新及进度条的实现操作
  8. Resharper 安装以及破解
  9. opencv videocapture读取视频cap.isOpened 输出总是false
  10. SSM项目使用Idea打war包
  11. vmware vsphere powercli 因为在此系统中禁止执行脚本
  12. 宫崎骏最美最经典的语录是什么?
  13. php如何处理耗时的任务,PHP如何在请求完毕后继续处理耗时任务
  14. Atitit.常用分区api的attilax总结
  15. java手机连点脚本_自动连点器app下载 自动连点器(屏幕点击器) for Android v1.0 安卓版 下载-脚本之家...
  16. php中怎么缩放图片,php中图片的缩放比例-php教程
  17. 今日头条推荐算法原理全文详解之六
  18. 关于“长尾理论”(The Long Tail)
  19. 异常org.apache.ibatibinding.BindingException: Invalid bound statement (not found): com.sxt.mybatis.map
  20. Java Swing中JFreeChart构建双纵轴(双Y轴)图表的使用纪要

热门文章

  1. python数据分析有哪些模型-python数据挖掘的基本流程有哪些?
  2. dos2unix 安装和使用
  3. 2017数学建模B题摘要
  4. 如何在java中把两个PDF拼接到一个
  5. c语言算术转换例子,关于C语言算术表达式中“寻常算术转换”的问题
  6. TCL语言语法简介(上)
  7. qdir 自动创建多级目录_QDir 类 - 目录信息类
  8. Fiddler对安卓模拟器里的APP抓包(步骤详细,各种抓包工具总结)
  9. I tell you网站如何下载
  10. Spark-SQL教程