zoukankan      html  css  js  c++  java
  • CAN总线数据解析(Intel格式)

    1.1 CAN总线输出数据表头:
    解析CAN数据的相关基础知识:

    1.channel:CAN通道。

    2.Identifier:在某个时间点发送一条报文,该报文的ID号,将这个ID号对照解析文件,从而进行报文解析。
    3.Is Standard:判断是否是标准帧。
    CAN的消息帧格式有两种,分别是CAN2.0A标准帧(standard)和CAN2.0B扩展帧(extended)。
    标准帧用11个bit表示ID编号(identifier),注意11bit的ID是一个有符号数,需要用偏置(offset)补偿。【扩展帧用?个bit表示ID编号,是否是有符号数?】
    4.Is Data:判断帧类型是否是数据帧。
    帧的类型有四种类型,分别是数据帧、远程帧、错误帧、超载帧。
    远程帧:接收数据的节点可以通过发送远程帧要求源节点发送数据,远程帧没有数据场。
    错误帧:是6个连续的显性位。
    5. Is TX:判断是接收节点还是发送节点(TX)
    6.DLC:数据长度码,占4个bit,可包括0~8Byte,本例中为8Byte。
    7~14:报文(包含8个字节),十六进制表示。
     
     
    1.2 解析原始数据的公式
    【程序中的ui表示Ui(unsigned int)无符号整型数据,不同公司的CAN解析有各自的解析规则,需要解析文件】
    CAN总线发送出来的原始数据是有符号数,需要转化为无符号数,所以需要加一个offset偏置量。factor是调整(状态参数物理值和报文数值)的比例系数
    offset含义:将有符号数值(比如100 0000 0000)转化为无符号数(000 0000 0000)需要+1024。
    【100 0000 0000(bin)=1024 (dec)
    CAN总线传输出的数据是 100 0000 0000 ,但是第一个bit表示的是符号位,1表示负号,其真正想传输的是0(十进制的数值0),所以需要解析的时候需要+1024;
    100 0000 0000 是11个bit,这是由于标准帧表示ID的bit个数是11;【那么扩展帧的偏置是29bit,偏置+2^29?】
    factor含义:
    按照老师程序的编写方式:解析规律= 状态值 = (报文解析出的十进制数值 + offset) * factor (有空可以再去看看一般的CAN解析公式)
    【程序中的/10,/8,/100  对应的就是 factor=0.1,0.125,0.01】
  • 相关阅读:
    hdu 1260 Tickets
    hdu 4738 Caocao's Bridges(桥的最小权值+去重)
    找规律
    C语言快速排序
    数组的初始化方法
    C语言选择排序
    副本机制
    安装完Kali的后续操作
    Bool盲注
    Python中的列表
  • 原文地址:https://www.cnblogs.com/feynmania/p/13290434.html
Copyright © 2011-2022 走看看