CAN通信矩阵的理解(CAN报文信号的属性)

2023-05-16

CAN通信矩阵

1.CAN通信矩阵是什么

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

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

一般主机厂会给零部件供应商提供完整的CAN通讯矩阵 、DBC给需求工程师,再由需求工程师释放给,开发工程师,和测试工程师使用。但由于需求逻辑等方面的修改,DBC版本需要我们自己去更新,包括了字节节点的增加,删除,修改(所在有效字节的位置,起始位置,字节长度等),所以了解CAN通信矩阵是非常有必要的。

2.如何阅读CAN通信矩阵

下面我们详细介绍下怎么阅读一份通信矩阵。
在这里插入图片描述
信号名称:一般是以发送节点的名字开头,“_”后面是具体指代的内容。如BMS_GeneralStatus。

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

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

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

在这里插入图片描述
其他的一些矩阵中还会有这样的表述。

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

起始位:信号LSB(least significant bit)所在的位置。通常这个位置是按照下面这个图来说明的。
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位。大家自行填充一下。
212
在这里插入图片描述
下面说下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格式。

4.名词解释:什么是信号的高位?什么是信号的低位?什么是信号的起始位?
1)信号的高位(most significant bit),即最能表达信号特性的因子。比如转速2000rpm,0x7D0,即011111010000b。最左侧的位,数量级最大,牵一发动全身,即高位
2)信号的低位(least significant bit),即最不能表达信号特性的因子。刚才转速中,最右侧的0,即低位。
3)信号的起始位其实就是信号的最低位。主机厂在定义整车CAN总线通信矩阵时,每一个信号都从其最低位开始填写。

5.报文封装原则
1.同一个报文的所有信号须由同一个节点提供。
2.同一个报文所有信号的发送时机尽可能相同。
3.小于或等于8位的信号,不应跨越字节边界。
4.小于或等于16位的信号,不应跨越字边界。
5.信号从每个字节的起始位开始排列。
6.信号排列应当紧凑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN通信矩阵的理解(CAN报文信号的属性) 的相关文章

  • 关于STM32 CAN 滤波器设置的记录

    滤波模式有以下两种 xff1a 屏蔽位模式 标识符列表模式 过滤器的位宽 xff1a 16位过滤器 32位过滤器 下面记录一下我做过测试的代码 代码说明 xff1a 这是CAN2的滤波器 xff0c stm32f107的两组CAN滤波器是共
  • CAN通讯的byte序和bit序

    听别人说起CAN通讯协议的时候总说到Intel格式和motorola格式的时候 Intel格式如何 xff0c Motorola格式又如何 xff1f 觉得很有必要搞懂这些知识 xff0c 也看了相关资料 xff0c 可直到今天还没明白 真
  • CAN通信数据帧介绍

    CAN通信有五个帧 xff0c 其中最重要的是数据帧 xff01 xff01 xff01 xff01 我们下面开始讨论数据帧 一 数据帧的格式 xff08 数据帧有七个段组成 xff09 xff0c 帧起始 表示数据帧开始的段 xff0c
  • CAN通信讲解(3)——错误据帧

    本文注意参考了 CAN入门书 xff0c 源于此书图片不再特殊标注 目录 3 1 总线错误的种类3 1 1 位错误3 1 2 ACK错误3 1 3 填充错误3 1 4 CRC错误3 1 5 格式错误 3 2 错误帧结构3 3 错误状态3 3
  • 下一代CAN通信技术CAN XL简介

    众所周知 xff0c CAN网络具有易于实现 可扩展 并支持复杂拓扑结构等诸多优点 xff0c 所以目前在各个行业特别是汽车领域 xff0c 得到了非常广泛的应用 但是 xff0c 它也存在着诸多问题 xff0c 其中最大的一点就是总线带宽
  • 解决ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

    如何解决ERROR 2003 HY000 Can t connect to MySQL server on localhost 10061 1 登录到安装Mysql的主机 xff0c 打开cmd命令行工具 xff0c 执行命令mysql u
  • CAN总线多帧即连续帧数据发送 拆包与重装

    1939协议支持多帧数据发送即数据超过8个的帧发送 用户可以通过ID来识别当前帧是否为多帧发送 xff08 连续帧 xff09 xff0c 如果是多帧发送ID xff0c 举例 xff1a 1C EC F4 56 其中 F4和56为目标地址
  • c#通过串口及CAN模块实现上位及下位机通讯

    目录 前言 一 串口 CAN总线 二 使用步骤 1 RS232串口通讯 xff08 指令下发与接收 xff09 2 CAN总线通讯 总结 前言 学习及工作中我们经常会遇到上位机与下位机通讯等工作 xff0c 结合场景使用不同的通讯方式实时通
  • 基于NRF24L01的CAN数据透传

    闲谈 xff1a 闲来无聊 xff0c 恰好公司又经常用CAN数据的传输 xff0c 自己觉得要是用无线传送多好 xff0c 然后 xff0c 就是一个奇想 xff0c 就想做一个无线数据的透传 xff0c 恰好身边又有NRF24L01 那
  • Nvidia jetson agx xavier can通讯失败,修改时钟源pllaon

    一 问题详情 在调试Xavier can的过程中 xff0c can通信始终有问题 xff0c 收发都会报错 后来发现时钟源导致波特率不匹配 xff0c 所以不能通信 二 修改时钟源 在虚拟机使用官方sdkmanager xff0c 下载安
  • linux的socket CAN驱动介绍

    https blog csdn net linyangspring article details 27186911 在linux中 xff0c CAN总线的驱动有两种实现方式 xff1a 字符设备以及socket can驱动 Socket
  • RT-thread 中CAN总线的应用

    准备 xff1a RT thread Studio 2 2 5 CubeMX 6 6 1 rt thread驱动包 4 0 3 1 新建项目 2 打开CubeMX Settings xff0c 设置CAN 找到CAN1 xff0c 并勾选激
  • Rt-thread的CAN应用2

    1 rtt中使能CAN1 2 CubeMX生成部分代码 xff0c 完成下面操作然后生成MDK ARM项目文件 3 将CubeMX生成的 HAL CAN MspInit 函数 粘贴到drv can c中 并在rt hw can init 函
  • STM32 CAN通信的学习笔记总结

    转载地址 xff1a STM32 CAN通信的学习笔记总结 xff08 从小白开始 xff09 目录 1 总体概述 1 1 基本概念1 2 通讯方式1 3 为什么使用CAN 1 4 CAN的协议及组成 2 上帝视角看CAN的通讯过程 2 1
  • QT5使用PCAN读取CAN数据

    文章目录 QT5使用PCAN读取CAN数据 CAN Bus example 重点讲解 pro文件 创建CAN bus Device 参数设置 接收报文 PCAN支持的QCanBusDevice ConfigurationKey类型 QT5使
  • 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析

    1 CAN总线的基本概念以及由来 CAN Controller Area Network 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 它起初用于实现汽车内ECU之间可靠的通信 后因其简单实用可靠等特点 而广泛应用于工
  • CAN与CANOpen(一)

    CAN与CANOpen 一 基本概念 CAN与CANOpen 二 报文格式 CAN与CANOpen 三 错误处理 CAN与CANOpen 四 CANOpen对象字典 CAN与CANOpen 五 PDO和SDO CAN与CANOpen 六 网
  • 电池充放电自动测试系统介绍

    电池是国民经济的基础产品 广泛运用在交通运输 通讯 电力 铁路 国防 计算机 应急设备等各个领域 传统电池检测生产方式已经很难满足电池产品的市场需求 那么如何高效快速的进行电池产品的性能检测呢 今天就给大家介绍一款全能型电池测试系统 电池充
  • CAN/CANFD 总线负载率及计算(源码和工具)

    CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标 一般建议负载率峰值不要高于80 平均负载率不要超过50 当然这只是一般建议 具体根据使用场景和系统设计而定 负载率定义 关于CAN负载率的定义和计算 很多文章写得不求甚解
  • 难懂?这样理解SPI与CAN很简单!

    难懂 这样理解SPI与CAN很简单 什么是串行通讯 为什么仍需使用串行通讯 SPI与CAN SPI 接口特点 CAN现场总线特点 什么是串行通讯 在正式进入主题前 我么先来介绍一下什么叫做 串行通信 串行通信是计算机的一种数据传输通信方式

随机推荐

  • Ubuntu18.04 CoppeliaSim Edu 安装教程 (2022年11月)

    Ubuntu18 04 CoppeliaSim Edu 安装教程 1 软件包下载2 启动 CoppeliaSim3 终端快捷命令 测试平台 xff1a Ubuntu 18 04 测试时间 xff1a 2022年11月10日 本文以 Ubun
  • Ubuntu18.04 安装完成后的开发配置

    Ubuntu18 04 安装完成后的开发配置 1 终端工具2 屏幕录制工具3 屏幕截图工具4 向日葵远程操作与开机自启动设置5 MarkDown笔记工具6 ROS 机器人操作系统安装7 编程开发工具8 机器人仿真环境Gazebo 安装Web
  • Ubuntu 20.04 安装 Latex 并使用 vscode 作为文本编辑器

    Ubuntu 20 04 安装 Latex 并使用 vscode 作为文本编辑器 1 Texlive 下载与安装1 1 镜像文件下载1 2 安装步骤1 3 查看是否安装成功1 4 相关依赖安装 2 安装 windows 字体3 vscode
  • Windows下Keil 4工程默认Keil 5打开的解决办法

    案例背景 xff1a 在安装Keil 4进行51系列单片机学习之后安装Keil 5进阶STM32系列单片机的学习 刚安装完后 xff0c 之前编辑的Keil 4工程还是默认Keil 4打开 xff0c Keil 5的工程默认Keil5打开
  • Python3 利用requests 库进行post携带账号密码请求数据

    span class hljs keyword import span urllib json requests url 61 span class hljs string 39 http 127 0 0 1 8000 account lo
  • Python爬虫 requests使用post请求登录需要验证码的网站

    具体代码为 xff1a import requests span class hljs built in from span bs4 import BeautifulSoup s 61 requests Session get url 61
  • WinSock API网络编程——UDP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_udp)

    WinSock API网络编程 UDP协议作者 xff1a 陆军 Email xff1a ldlujun 64 163 com 时间 xff1a 2004 11 14UDP协议 xff08 User Datagram Protocol xf
  • Raspberry 静态IP配置

    前言 Raspberry 在使用过程中 xff0c 需要手动设定静态IP地址 xff0c 但是深入下去发现不同的raspberry版本不同 xff0c 设置上也存在差异 etc network interfaces 在之前的文章 Raspb
  • 【硬件】调试经验:串口RS232不通,怎么办

    写作时间 xff1a 2020 07 24 目录 xff1a 1 关键词 2 坑坑坑 xff08 不要跳 xff09 3 小技巧与说明 正文 xff1a 1 关键词 串口 串口助手上位机 usb转232线缆 串口命令 RS232 2 检查点
  • 【Github】git bash无法复制粘贴

    参考教程https www cnblogs com slw0113 p 15602715 html 使用git bash时只能使用手工敲击所有命令 xff0c 非常不方便 1 在屏幕右键打开git bash命令窗口 2 在左上角右键 xff
  • 报错{“msg“:“invalid token“,“code“:401}问题的解决

    报错 msg invalid token code 401 问题的解决 xff1a 解决办法 xff1a 将精确的路由放在最上面 xff0c 模糊的路由放在最下面 xff0c 防止精确的路由被覆盖
  • Android 电池管理系统

    https blog csdn net bhj1119 article details 52947344 Android电池服务的源码结构 Framework base services java com android server Sy
  • eBPF技术介绍

    前言 eBPF起源于linux内核 xff0c 它可以以砂箱程序运行在操作系统内核的特权上下文 xff0c 高效 xff0c 安全 xff0c 易于扩展而不需要修改内核源码或者加载内核模块 操作系统一直是实现观测 xff0c 安全和网络功能
  • eBPF开发工具链

    有几个开发工具链可以帮助开发和管理eBPF程序 它们都满足了用户的不同需求 xff1a bcc BCC是一个框架 xff0c 使用户能够编写嵌入其中的eBPF程序的python程序 该框架主要针对涉及应用程序和系统分析 跟踪的用例 xff0
  • Off-CPU分析

    前言 性能问题可以分为两种类型 xff1a On CPU xff1a 线程花时间在CPU上运行的地方 xff1b Off CPU xff1a 在I O xff0c 锁 xff0c 计数器 xff0c 分页 交换上阻塞等待的时间 Off CP
  • uint8_t / uint16_t / uint32_t /uint64_t数据类型详解

    https blog csdn net bruce 0712 article details 72805903
  • 什么是系统调用?为什么要用系统调用?

    什么是系统调用 Linux内核中设置了一组用于实现各种系统功能的子程序 xff0c 称为系统调用 用户可以通过系统调用命令在自己的应用程序中调用它们 从某种角度来看 xff0c 系统调用和普通的函数调用非常相似 区别仅仅在于 xff0c 系
  • android的surfaceflinger原理学习

    概念 SurfaceFlinger是一个系统服务 xff0c 如 xff1a audioflinger xff0c audiopolicyservice等等 xff0c 系统的主要服务通过这个文章进行了解 xff0c Android的系统服
  • labview界面分隔和自定义窗口大小

    gt gt gt gt gt gt 我的博客目录导航 转自 statemic LabVIEW程序界面的布局 控件的显示效果与监视器是密切相关的 xff0c 因此在程序设计时需要考虑目标监视器的颜色 分辨率等因素 xff0c 并明确运行该应用
  • CAN通信矩阵的理解(CAN报文信号的属性)

    CAN通信矩阵 1 CAN通信矩阵是什么 CAN通信矩阵 xff08 CAN Communication Matrix xff09 通常由整车厂完成定义 xff0c 车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享 我们知道C