全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

什么是CAN通信矩阵 如何理解CAN通信矩阵

时间:2022-09-08 09:57

人气:

作者:admin

标签: CAN通信 

导读:什么是CAN通信矩阵 如何理解CAN通信矩阵-CAN通信矩阵(CAN Communication Matrix)通常由整车厂完成定义,车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享。...

1.什么是CAN通信矩阵

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

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

2.如何阅读CAN通信矩阵

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

5edf163e-2f0e-11ed-ba43-dac502259ad0.png

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

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

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

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

5eebd59a-2f0e-11ed-ba43-dac502259ad0.png

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

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

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

5efe8ffa-2f0e-11ed-ba43-dac502259ad0.png

CAN矩阵的核心图

信号类型:Boolean 还是 Unsigned。

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

3.如何填格子

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

5f117278-2f0e-11ed-ba43-dac502259ad0.png

j1939.dbc

5f23731a-2f0e-11ed-ba43-dac502259ad0.png

j1939.dbc矩阵中的EEC1信号

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

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

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

5f2ffb30-2f0e-11ed-ba43-dac502259ad0.png

Intel格式,MSB在LSB下面

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

5f3c76ee-2f0e-11ed-ba43-dac502259ad0.png

Motorola格式,MSB在LSB上面

5f564e98-2f0e-11ed-ba43-dac502259ad0.jpg

New_Signal_5自下而上填充,Motorola

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

5f66fbc6-2f0e-11ed-ba43-dac502259ad0.png

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

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

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

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

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

4.报文封装原则

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

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

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

5f8e7c3c-2f0e-11ed-ba43-dac502259ad0.jpg

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

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

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

5fa5911a-2f0e-11ed-ba43-dac502259ad0.jpg

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

6.信号排列应当紧凑。

编辑:黄飞

 

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信