
本发明涉CAN通信技术领域,具体为一种基于Matlab的CAN报文解析方法。
背景技术:
当前,汽车电子行业相关电子控制系统(BMS、VCU、MCU、地面或车载充电机、智能仪表等)之间都普遍采用了CAN总线通信方式进行数据的交互。这些数据包含了工作状态参数、控制参数和指令、故障信息等。在整车进行调试、检查、试验的时候都需要对这些数据进行显示并分析处理。然而市场上主流的CAN总线测试监控系统动辄都在数万元以上,且数据的分析处理能力方面也存在着不足,而一般用途的CAN总线适配器虽然价格便宜,但只能用于截取和保存CAN报文。为了直观的显示和深入分析CAN总线信息,借助Matlab软件强大的数据处理能力和编辑功能,将CAN报文导入到Matlab中进行二次开发,设计了一种基于Matlab环境的CAN总线数据分析方法。
技术实现要素:
本发明要解决的技术问题是克服现有的缺陷,提供一种基于Matlab的CAN报文解析方法,可以有效解决背景技术中的问题。
为实现上述目的,本发明提出:一种基于Matlab的CAN报文解析方法,包括以下步骤:
S1):选择要解析的CAN报文文件,然后进入到步骤S2;
S2):根据每帧CAN通信报文的ID对其进行分组后进入步骤S3;
S3):对每帧CAN通信报文进行数据段进制转换后进入步骤S4;
S4):对每帧CAN通信报文的时间进行处理,处理完成后进入步骤S5;
S5):对每帧CAN通信报文进行数组拼接,拼接完成后进入步骤S6;
S6):给各帧CAN通信报文分配空间;
S7):判断每帧CAN通信报文的ID与CAN_ID_Unique是否相同,若相同则进入步骤S8,若否则直接丢弃;
S8):将每帧CAN通信报文分配至对应的空间;
S9):给各帧CAN通信报文数组赋值;
S101):分离出时间数据,然后进入步骤S19;
S102):信息数据则进入步骤S11;
S11):判断数据是否为Inter格式,若是,则低字节在前。若否,则为摩托罗拉格式,分类后的数据进入到步骤S12;
S12):对数据进行重组将其重组为64bit的信息数据,重组完成后的数据进入到步骤S13;
S13):根据Protocol对数据进行分类;分类完成后的数据进入到步骤S14;
S14):判断数据信息的Resolution是否为1,若是则进入到步骤S18;若不是,则进入到步骤S15;
S15):进行分辨率处理,处理完成后进行入到步骤S16;
S16):判断Offset是否为0,若是则进入到若是则进入到步骤S18;若否,则进入到步骤S17;
S17):对数据的偏移值进行处理,处理完成后进入到S18;
S18):对数据进行分类;
S181):若数据为状态数据则进入S1811,对数据进行定义与中文转换,转换后进入到S19;
S182):若数据为数值型数据则对数据进行分类,整型数据以整型输出,浮点型数据以浮点数输出,然后进入步骤S19;
S19):对信息进行重组,重组后进入到S20;
S20):将数据信息保存至Workspace,然后进入到步骤S21;
S21):以Excel形式将对数据进行分类输出。
与现有技术相比,本发明的有益效果是:本发明不仅解析速度快,而且可解析出直观的输出数据,使用方便,可以采集整车CAN总线上的数据,通过串口将数据发送到上位机中,由上位机监控软件进行数据的在线或离线测试和分析,而且可用于跟踪和再现车辆运行数据、分析司机驾驶操作和车辆运行状况、评价CAN总线通信品质。
附图说明
图1为本发明基于Matlab的CAN报文解析方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供以下技术方案:一种基于Matlab的CAN报文解析方法,包括以下步骤:
S1):选择要解析的CAN报文文件,然后进入到步骤S2;
S2):根据每帧CAN通信报文的ID对其进行分组后进入步骤S3;
S3):对每帧CAN通信报文进行数据段进制转换后进入步骤S4;
S4):对每帧CAN通信报文的时间进行处理,处理完成后进入步骤S5;
S5):对每帧CAN通信报文进行数组拼接,拼接完成后进入步骤S6;
S6):给各帧CAN通信报文分配空间;
S7):判断每帧CAN通信报文的ID与CAN_ID_Unique是否相同,若相同则进入步骤S8,若否则直接丢弃;
S8):将每帧CAN通信报文分配至对应的空间;
S9):给各帧CAN通信报文数组赋值;
S101):分离出时间数据,然后进入步骤S19;
S102):信息数据则进入步骤S11;
S11):判断数据是否为Inter格式,若是,则低字节在前。若否,则为摩托罗拉格式,分类后的数据进入到步骤S12;
S12):对数据进行重组将其重组为64bit的信息数据,重组完成后的数据进入到步骤S13;
S13):根据Protocol对数据进行分类;分类完成后的数据进入到步骤S14;
S14):判断数据信息的Resolution是否为1,若是则进入到步骤S18;若不是,则进入到步骤S15;
S15):进行分辨率处理,处理完成后进行入到步骤S16;
S16):判断Offset是否为0,若是则进入到若是则进入到步骤S18;若否,则进入到步骤S17;
S17):对数据的偏移值进行处理,处理完成后进入到S18;
S18):对数据进行分类;
S181):若数据为状态数据则进入S1811,对数据进行定义与中文转换,转换后进入到S19;
S182):若数据为数值型数据则对数据进行分类,整型数据以整型输出,浮点型数据以浮点数输出,然后进入步骤S19;
S19):对信息进行重组,重组后进入到S20;
S20):将数据信息保存至Workspace,然后进入到步骤S21;
S21):以Excel形式将对数据进行分类输出。
本发明好处:本发明不仅解析速度快,而且可解析出直观的输出数据,使用方便,可以采集整车CAN总线上的数据,通过串口将数据发送到上位机中,由上位机监控软件进行数据的在线或离线测试和分析,而且可用于跟踪和再现车辆运行数据、分析司机驾驶操作和车辆运行状况、评价CAN总线通信品质,数器数值将数据存放到指定的元组中,然后根据CAN通信协议进行相应的解析,转化为肉眼清晰可懂得图形或表格形式。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。