【CAN报文分析】

文章详细介绍了如何解析CAN报文中的数据,通过dbc文件来理解canID和Data值的含义。解释了Motorola和Intel两种格式的数据排序方式,以及如何根据信号的StartBit、Length、Factor和Offset来计算物理值。文中通过实例展示了具体计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在看Trace 报文的时候,看到的信息主要包括

canID 以及对应 Data值

虽然能够看到id和对应的data 值, 但是我不知道里面的意思是什么?

这里就需要使用dbc文件来解析。 如果没有dbc文件, 你拿到这些报文也不知道是什么意思

可以通过信号中的定义信息的信息来解析上面的报文值。

  • Name : 信号的名字
  • Message: 信号所在的报文名
  • StartBit: 开始位
  • Length:长度
  • ByteOrder: 排序方式
    • Motorola  0
    • Intel  1
  • Factor: 分辨率(就是传输数据时每一位(bit)代表的最小单位数据量)
  • Offset: 偏移量(偏移量就是在传输数据中加上一个数据量;有些数据传输只能传输正整数,负物理量就需要偏移量转换成正整数传输)

我们主要就是根据dbc文件中的定义来解析报文

 解析Motorola格式的报文

 这里对应的是一条报文       1字节(byte)=8位(bit)       报文的id 0x123

报文的值(长度8字节) 20 02 17 00 00 00 00 07

根据 Motorola 格式,将 上面报文值(16进制) 转换成 2进制 下面的表格中对应的二进制值就是上面报文值对应的值。

 根据dbc文件中的定义 我们来计算一下 GTS_CRC 这条信号对应的值。

这个信号对应的 StartBit 是8 ,  length为 8,   factor: 1 , offset:0

根据排序,对应的值 是下面的表格中的值

 开始取值:取到的对应的二进制的值是:  0000 0010

将二进制 转换为10进制的值:  0000 0010 = 2(raw_value)

根据 factor: 1 , offset:0(偏移量)

2*1+0 = 2  (把原始信号转换物理值)(physical_value = raw_value*factor+offset)

所以这个信号解析之后的值是 2

 根据这个计算方式,我们再来看一条报文

 GTS_D 对应的 startBit:20,length:4, Factor:1,offset:0

 对应的二进制: 0001

换算 10进制:  0001 = 1

根据 factor 和offset  :1*1+0 = 1

再看一条

startbit: 56    length:32      factor:1        offset:0

 

对应的二进制的值:0000 0000 0000 0000 0000 0000 0000 0111

转换成10进制: 0000 0000 0000 0000 0000 0000 0000 0111 = 7

7*1+0 = 7   所以这个值是7

 解析Intel 格式的报文

 这里有条报文,报文的id 0x123 报文的data C5 09,   对应的dbc文件

 先来解析 OnOff

startbit:0       length:1       类型: intel       factor:1            offset:0

data值 C5 09 只有两个字节, 也就说总共16bit

Intel数据排序 相反 (高位在下,低位在上)

对应的排序, 从最低开始为 0 ,1,2 ,3 ,4.....

 取到值就是 1

1 * 1 +0 = 1 (physical_value = raw_value*factor+offset)

 EngineSpeed的dbc定义

startbit: 1       length:15

对应的二进制值为: 0000 1001 1100 010

所以现在转换成 10进制:0000 1001 1100 010 = 1250

计算 1250*1+0 = 1250

 

对应的can信息

canid: 64     data: 37 0E 29 23 0E 01 EE 02

根据报文解析之后的结果是

| EngSpeed 3639 rpm E37(物理值对应的信号值)

| EngTemp 32 degC 29

| IdleRunning Running 0

| PetrolLevel 35 l 23

| EngForce 270 N 10E

| EngPower 7.5000 kW 2EE

对应的dbc文件

 

 

 can信号:https://www.isolves.com/it/wl/zs/2022-07-07/57309.html

spy3 can报文分析是指对CAN总线上的数据报文进行解析分析CAN(Controller Area Network)总线是一种广泛应用于汽车和工业控制领域的通讯协议,通过CAN总线进行数据交互。Spy3是一款用于CAN总线数据监测和分析的工具。 在进行CAN报文分析时,首先需要获取到CAN总线上的数据报文。spy3可以通过连接到CAN总线的设备来获取报文数据。这些报文数据包含了发送者的地址、接收者的地址、报文的数据内容等信息。 接下来,可以使用spy3提供的功能进行报文解析。spy3可以解析报文的ID字段,根据ID字段的不同可以识别报文的类型和含义。例如,某个ID可能代表汽车引擎的转速信息,另一个ID可能代表车辆的速度信息。通过解析报文的ID字段,可以对报文进行分类和归纳。 此外,spy3还可以解析报文的数据内容。CAN总线上传输的数据通常是二进制格式的,而spy3可以将这些二进制数据转换为可读的十进制或十六进制形式,以便更好地理解和分析报文的内容。例如,可以将报文的数据字段解析为温度、压力等具体的物理量。 在报文分析的过程中,可以利用spy3提供的过滤功能来筛选感兴趣的报文。通过设定特定的条件,可以只显示符合条件的报文,从而减少冗余数据的干扰,更加便于针对性地进行分析。 总而言之,spy3 can报文分析是一种利用spy3工具对CAN总线上的数据报文进行解析分析的过程。通过解析报文的ID字段和数据内容,可以对报文进行分类和归纳,并获取其中包含的有用信息。这有助于对CAN总线的通讯过程进行理解和优化。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值