如何理解CAN通信矩阵

什么是CAN通信矩阵

CAN通信矩阵(CAN Communication Matrix)通常由整车厂完成定义,车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享。

我们知道CAN总线是一种通信形式,ISO 11898协议仅仅规定了数据链路层和物理层,也就是说传什么ID、传什么数据是没有定义的,这留给了大家很多遐想空间。对于乘用车来说,满足UDS和尾气排放协议之后,还剩余了绝大部分的ID段。这些ID段由主机厂自主来进行分配,分配好之后会形成一个.xls格式的表格。有了CAN通信矩阵,开发人员就知道他设计的零部件应该接收什么ID的数据,需要发出什么ID的数据。

如何阅读CAN通信矩阵

下面我们详细介绍下怎么阅读一份通信矩阵。

信号名称:一般是以发送节点的名字开头,“_”后面是具体指代的内容。如BMS_GeneralStatus。

信号长度:该信号的长度,单位是bit,位。

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

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

其他的一些矩阵中还会有这样的表述。

起始字节:起始位所在的字节序号。Byte0-Byte7。

起始位:信号LSB(least significant bit)所在的位置。通常这个位置是按照下面这个图来说明的。

CAN矩阵的核心图

信号类型:Boolean 还是 Unsigned。

以上是CAN数据矩阵的基本内容。可以看出来,如何通过起始字节、起始位、数据长度,将数据矩阵中的内容对应到这64个小格子中是理解CAN数据矩阵的关键。

如何填格子

我们可以用Vector的CAN db++打开ZLG送的j1939.dbc文件。我们在Signals和Layout面板中看到,对于EEC1这个Message来说,它有8个Signal,填充时是从右向左填充的,比方说EngStarterMode这个信号,初始是第48位,长度是4,它的LSB自然就应该在Byte6的第48个位,之后向左填充,MSB是第51位。大家自行填充一下。

j1939.dbc

j1939.dbc矩阵中的EEC1信号

下面说下EngSpeed这个奇葩信号,它跨行了,即跨字节了,这就产生了先后的问题。

注意我们填格子的方式分为Intel和Motorola两种。如果你的Signals都没有跨字节的问题,那么Intel和Motorola格式出来的效果是一样的。当然这不可能,你无法确保不跨字节。

Intel格式也即小端,MSB存放在高字节单元,反映到矩阵图中就是以起始位为原点,自上而下填充。

Intel格式,MSB在LSB下面

Motorola格式也即大端,MSB存放在低字节单元,反映到矩阵图中就是以起始位为原点,自下而上填充。

Motorola格式,MSB在LSB上面

New_Signal_5自下而上填充,Motorola

具体采用哪种格式,听主机厂的,这个无绝对,两种格式都需要理解。但从经验上来看以Motorola格式为主。我们回看下EngSpeed这个信号,起始位是24bit,先填充Byte3,之后向下填充Byte4,MSB在39bit上。因此是Intel格式。

EEC1中的EngSpeed是Intel格式,Byte3是低有效,Byte4是高有效

名词解释:什么是信号的高位?什么是信号的低位?什么是信号的起始位?

信号的高位(most significant bit),即最能表达信号特性的因子。比如转速2000rpm,0x7D0,即011111010000b。最左侧的位,数量级最大,牵一发动全身,即高位。

信号的低位(least significant bit),即最不能表达信号特性的因子。刚才转速中,最右侧的0,即低位。就好像老板说给你每个月涨薪5元,你毫不在乎。

信号的起始位其实就是信号的最低位。主机厂在定义整车CAN总线通信矩阵时,每一个信号都从其最低位开始填写。

报文封装原则

1.同一个报文的所有信号须由同一个节点提供。

2.同一个报文所有信号的发送时机尽可能相同。

3.小于或等于8位的信号,不应跨越字节边界。

不大于8位,不应跨越字节边界

4.小于或等于16位的信号,不应跨越字边界。

5.信号从每个字节的起始位开始排列。

要从每个字节的起始位开始排列

6.信号排列应当紧凑。

(0)

相关推荐

  • 入门车载以太网

    前言 近些年来,随着为了让汽车更加安全.智能.环保等,一系列的高级辅助驾驶功能喷涌而出.未来满足这些需求,就对传统的电子电器架构带来了严峻的考验,需要越来越多的电子部件参与信息交互,导致对网络传输速率 ...

  • 纯电动汽车车载充电系统通信研究

    纯电动汽车车载充电系统通信研究

  • 车载总线通信数据库开发工具 — VDE

    概述 INTEWORK-VDE(Vehicle Database Editor)是一款网络通信及数据库开发工具,支持车型平台.车型.网段等多个层级的通信系统设计,支持 CAN(FD).LIN.J193 ...

  • 基于CAN的AutoSAR网络管理知识要点

    上篇文章介绍了OSEK网络管理知识要点,本篇介绍AutoSAR网络管理知识要点. 01 AutoSAR网络管理机制 AutoSAR网络管理机制比OSEK简单,AutoSAR网络管理机制是基于周期型网络 ...

  • 电动汽车动力总成解读 | E2E通信保护

    电动汽车动力总成解读 | E2E通信保护

  • 国六PM传感器CAN通信报文矩阵

    PM传感器通信CAN报文矩阵详细教学 1.传感器发送18FF0055 250Kb 1000ms 扩展帧Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Byte0Byte1Byte2By ...

  • 【DBC专题】-3-CAN Signal信号字节顺序Motorola和Intel介绍

    原创 汽车电子行业工程师 汽车电子助手 2020-12-23 收录于话题 #DBC 5个 目录 0 引言 1 小端(Intel)模式排列     1.1 Signal信号不跨字节     1.2 Si ...

  • 【学术论文】基于FPGA的MEWTOCOL-COM 与MODBUS RTU协议快速转换的设计与实现

    摘要: 在工业智能化过程中,现场总线设备之间需要信息交换,但种类繁多的总线通信协议造成了不同设备之间无法进行正确的信息交换.为解决这个问题,首先深入研究了MEWTOCOL-COM和MODBUS RTU ...

  • 理解RNA-seq表达矩阵的两个形式

    RNA-seq我们在生信技能树应该是至少推出了400篇教程,而且是我们全国巡讲的标准品知识点,其中还有一个阅读量过两万的综述翻译及其细节知识点的补充: RNA-seq的counts值,RPM, RPK ...

  • 矩阵乘法的四种理解

    两个矩阵相乘AB=C,这个简单的形式有四种理解角度:1.元素视角:C中的元素Cij是A中的第i行乘以B中j列对应元素相乘再相加:2.列向量视角:把A,B看做是列向量组,C就可以看成是A的列向量以B的列 ...

  • UART通信中流控RTS和CTS的理解

    一.流控,顾名思义就是流量控制的意思.目的是协调收发双方,使数据不会丢失. 二.很多人用了串口很久都不知道这回事,这是因为很多场合确实没有必要.收发双方波特率固定,并且接受数组足够大,这时不会出现接收 ...

  • 深入理解PROFINET的通信等级(RT/IRT)

    前段时间有小伙伴和我讨论PROFINET实时通信的问题,PROFINET分布式IO设备和IO控制器之间采用的是实时通信(RT)还是等时同步通信(IRT)呢?今天这篇文章,我们就来讨论下这个问题.本文包 ...

  • 看初学者如何理解RNA-seq的count矩阵

    我布置了一个作业,让大家可以尝试把cox可以火山图为什么gsea结果不行 这个里面的数据集 GSE101668 ,里面的表达矩阵,进行热图可视化,很多同学完成了作业,我随机挑选其中一个学徒的优秀笔记跟 ...

  • 三阴性乳腺癌表达矩阵探索之数据下载及理解

    学徒和学员已经陆续出师,是时候把生信技能树的舞台交给后辈了!(视频观看方式见文末) 下面是<GEO数据挖掘课程>的配套笔记(第二篇) 了解数据挖掘 公共数据库:(数据来源) GEO和TCG ...

  • 利用“4P和4C”矩阵,重新理解市场营销

    什么是市场营销?我们要想真正地去理解市场营销,关键是要学会洞察4P和4C背后的逻辑.角色及它们之间的联系. 相信大多数营销人都有以下我这样类似的经历和困惑: 在我之前就职的一家口腔医院,当医生介绍专业 ...

  • 向军队学习:华为对矩阵管理的理解

    一位前美国将军评价:"为什么西方公司畏惧华为?原因之一,西方公司过去20多年的高管大多是从商学院毕业的,而华为是向军队学习管理." 军队采用矩阵型的组织结构,矩阵的"横轴 ...