当前位置: 首页 > news >正文

【车载开发系列】CAN通信矩阵

【车载开发系列】CAN通信矩阵

【车载开发系列】CAN通信矩阵

  • 【车载开发系列】CAN通信矩阵
    • 一. 引言
    • 二. 什么是CAN通信矩阵
    • 三. 通信矩阵作用
      • 1)通信权限管理
      • 2)网络配置和管理
      • 3)诊断故障
    • 四. 阅读通信矩阵
      • 1)SingleName信号名称
      • 2)Bit Length信号长度
      • 3)Resolution精度/Offset偏移量
      • 4)PhyscialRange物理值范围
      • 5)其他
    • 五. 报文封装原则
    • 六. 大小端定义
      • 1)Intel方式
      • 2)Motorola方式
      • 3)MSB与LSB
    • 七. 报文发送类型
      • 1)周期型报文
      • 2)事件型报文
      • 3)周期事件型
      • 4)使能周期型
    • 七. 与DBC文件的关系

一. 引言

为了实现汽车CAN通信开发,必不可少要用到这两个文件,分别是DBC文件和CAN通信矩阵。在这里主要介绍CAN通信矩阵,以及简单说明了CAN通信矩阵与DBC文件之间的关系。

二. 什么是CAN通信矩阵

CAN通信矩阵(CAN Communication Matrix)通常由整车厂完成定义,车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享。
CAN总线是一种通信形式,在ISO11898协议中仅规定了数据链路层和物理层,也就是说传什么ID、传什么数据这些一般都是放在应用层定义的。对于乘用车来说,满足UDS和尾气排放协议之后,还剩余了绝大部分的ID段。这些ID段由主机厂自主来进行分配,分配好之后会做成一个.xls格式的表格,这就是CAN通信矩阵。有了通信矩阵,开发人员就知道他设计的零部件应该接收什么ID的数据,需要发出什么ID的数据。

三. 通信矩阵作用

一般主机厂会给零部件供应商提供完整的CAN通讯矩阵 、DBC给需求工程师,再由需求工程师释放给,开发工程师,和测试工程师使用。

1)通信权限管理

通过通信矩阵可以清晰地了解每个节点之间的通信权限,包括哪些节点可以向哪些节点发送消息,以及哪些节点可以接收来自哪些节点的消息。这有助于确保网络中的数据传输是有序和安全的。

2)网络配置和管理

通信矩阵可以用于配置和管理CAN网络的通信规则。通过调整矩阵中的条目,可以灵活地修改节点之间的通信关系,以满足不同的通信需求和网络拓扑结构。

3)诊断故障

在出现通信故障或异常情况时,通信矩阵可以作为诊断工具,帮助定位问题。通过比较实际通信情况和预期的通信矩阵,可以找出通信错误的根本原因,并进行相应的修复。

四. 阅读通信矩阵

CAN报文Message单次可传送8bytes,即64bits信息,64bits由多个signal组成,各个signal分布在message的不同位置

1)SingleName信号名称

一般是以发送节点的名字开头,“_”后面是具体指代的内容。比如HUT_GeneralStatus。

2)Bit Length信号长度

这个是信号的长度,单位是bit位。

3)Resolution精度/Offset偏移量

描述信号值如何转变成信号物理值。比如精度是2,偏移量是5,那么信号的真实物理值 = 信号值 * 2 + 5。

4)PhyscialRange物理值范围

经过物理值转换后的最大最小值。

5)其他

起始字节:起始位所在的字节序号Byte0-Byte7。
起始位:信号LSB(least significant bit)所在的位置。
信号类型:Boolean 还是 Unsigned

五. 报文封装原则

1.同一个报文的所有信号须由同一个节点提供,且发送机制也需要尽可能相同
2.小于或等于8bit的信号,不应跨越字节边界
3.信号排列应当紧凑,不能随意松散放置

六. 大小端定义

填入格子的方式分为Intel和Motorola两种。如果你的Signals都没有跨字节的问题,那么Intel和Motorola格式出来的效果是一样的。当然这不可能,你无法确保所有的信号都不跨字节。所以我们要确保大小端统一。
其中Intel格式以起始位为原点,自上而下填充;而Motorola格式:以起始位为原点,自下而上填充,这两者我们需要学会区分。

1)Intel方式

Intel格式也叫小端序。在Intel格式中,数据的低位字节存储在低地址,高位字节存储在高地址。与Motorola格式相反,数据的最低有效字节存储在地址最低的位置,而最高有效字节存储在地址最高的位置。大多数个人计算机和x86架构的处理器都使用小端序。
如果有存在跨字节的情况,那么低字节存在上面,高字节存在下面。

2)Motorola方式

Motorola格式也即大端,称为大端序。在该格式中,数据的高位字节存储在低地址,低位字节存储在高地址。这意味着数据的最高有效字节存储在地址最低的位置,而最低有效字节存储在地址最高的位置。这种格式通常用于一些嵌入式系统和网络协议中。起始位表示信号的大小端规定不同,又可以分成 Motorola MSB格式 和 Motorola LSB格式。

3)MSB与LSB

信号的高位(most significant bit),即最能表达信号特性的因子。比如转速2000rpm,0x7D0,即011111010000b。最左侧的位,数量级最大,牵一发动全身,即高位。
信号的低位(least significant bit),即最不能表达信号特性的因子。刚才转速中,最右侧的0,即低位。就好像老板说给你每个月涨薪5元,你毫不在乎。

七. 报文发送类型

报文的发送类型可以分为:周期型,事件型,周期事件型,使能周期型。其中前面两种类型的报文最为常见。

1)周期型报文

报文按照固定的周期发送,例如周期为500ms,则每隔500ms发送一帧报文。

2)事件型报文

当事件触发后,发送出数据报文,一般规定连续发送5帧,间隔20ms(往往根据Stmin来决定)。

3)周期事件型

周期与事件的结合,报文以周期时间发送每帧报文,当某个事件信号触发后,按照事件的形式立马发送出来,之后恢复到固定周期发送。
周期事件型的报文中的事件信号,在实际应用中,有事件保持和事件不保持两种。
事件保持 :触发信号发送后,信号一直保持之前的状态。事件不保持 :触发信号发送后,信号恢复到默认值状态。

4)使能周期型

报文以周期时间发送每帧报文,当某个事件触发后并且达到下一个发送周期时,这个时刻按照事件发送,一般也是规定连续发送5帧,间隔20ms。

七. 与DBC文件的关系

CAN通信矩阵与DBC文件都是CAN通信中用于定义和交流消息、信号参数的核心工具,二者协同工作以确保数据传输的准确性和一致性。
‌信号矩阵‌是描述CAN消息与信号之间关系的核心数据结构,包含信号名称、起始位、长度等关键信息。而‌DBC文件‌作为标准化描述文件,既包含信号矩阵定义,又涵盖网络节点、报文帧等更全面的通信参数。
信号矩阵‌侧重于信号解析逻辑;而DBC文件‌包含更完整的通信协议描述,它最基本的作用就是帮助解释二进制的帧信号,以便分析报文信息。当然通信矩阵是生成DBC文件的一个重要的依据。通信矩阵可以帮我们更加清晰的了解内部各个ECU之间的通信关系,从而更好的生成DBC文件。


文章转载自:

http://chU91qt6.wjwcz.cn
http://5brmBQ3v.wjwcz.cn
http://aCyONGqi.wjwcz.cn
http://7iRwtTrM.wjwcz.cn
http://Lo5iq1By.wjwcz.cn
http://wDyXmLTH.wjwcz.cn
http://UU37xwQG.wjwcz.cn
http://YD8lImDA.wjwcz.cn
http://PYW56MS9.wjwcz.cn
http://nwQ37RAr.wjwcz.cn
http://kLVYnC2M.wjwcz.cn
http://c0cdF828.wjwcz.cn
http://2ok8W7sl.wjwcz.cn
http://D9htsWFl.wjwcz.cn
http://jLhHS1Qf.wjwcz.cn
http://tS9jup4g.wjwcz.cn
http://apZQDxDL.wjwcz.cn
http://1NPFzDs3.wjwcz.cn
http://mdlKePt5.wjwcz.cn
http://NQItfIPW.wjwcz.cn
http://dOOTcl4l.wjwcz.cn
http://REG5Iy2e.wjwcz.cn
http://xXPzyZCm.wjwcz.cn
http://pvuKmFUo.wjwcz.cn
http://mVO0uBZ2.wjwcz.cn
http://FPTe6g1s.wjwcz.cn
http://Kej59SNo.wjwcz.cn
http://iEIIm1zG.wjwcz.cn
http://PJaEHQBx.wjwcz.cn
http://fwgQpFxT.wjwcz.cn
http://www.dtcms.com/a/381709.html

相关文章:

  • Elasticsearch (ES)相关
  • SQL语句优化的步骤详解
  • VSCode 的百度 AI编程插件
  • 【OpenAPI】OpenAPI 3.0x 格式解析技术指南
  • leetcode 14 最长的公共前缀
  • B. Bobritto Bandito
  • 体会bootstrap
  • ConcurrentHashMap 的底层原理及是如何实现线程安全的?
  • linux中查找包含xxx内容的文件
  • 【Linux】添加sudo权限/设置默认权限/配置别名/配置新用户的密码策略
  • 32.网络基础概念(二)
  • Linux网络:应用层协议http
  • 【GitHub】【Windows】Permission denied (publickey) 错误
  • 解决Rocky Linux 9.6下Beyond Compare私钥连接失败问题
  • ubuntu git push每次都要输入密码怎么解决只输入一次密码
  • OpenCV 教程——从像素到智能:图像预处理关键技巧与零售货架缺货检测实战
  • 面试鸭Java八股之Kafka
  • 【学习K230-例程23】GT6700-音频FFT柱状图
  • 【Chrome】chrome 调试工具的network选项卡,如何同时过滤出doc js css
  • python--MediaPipe-opencv眨眼检测
  • 2.2.蓝桥杯-数位递增的数
  • leetcode 3541. 找到频率最高的元音和辅音 简单
  • Spring Boot 与微服务网关集成问题:Zuul、Spring Cloud Gateway 与鉴权策略
  • algorithm | Big O notation
  • 开发指南:使用 MQTTNet 库构建 .Net 物联网 MQTT 应用程序
  • 【代码随想录day 25】 力扣 47.全排列 II
  • 驱动开发系列73 - clEnqueueNDRangeKernel实现
  • Unity 性能优化 之 静态资源优化 (音频 | 模型 | 纹理 | 动画)
  • 服装贸易管理系统推荐及软件选型指南
  • 音视频的下一站:协议编排、低时延工程与国标移动化接入的系统实践