本发明涉及汽车技术领域,具体是一种基于matlab/simulink的车载总线的数据分析方法。
背景技术:
随着汽车各个控制模块逐步向自动化和智能化的方向发展,汽车电气系统变得日益复杂。传统点对点的通讯方式无法满足现代汽车的发展和现代社会对汽车安全、乘坐舒适等不断提高的要求。在汽车设计中,车载总线技术是满足这些要求的最佳解决方法,而且已得到广泛应用,这些车载总线包括can、lin、flexray、ethernet等网络。各个控制模块通过车载总线进行数据交互,总线上的数据包含汽车控制模块的控制指令、运行状态、故障信息等,因此,快速有效的解析并处理这些数据显得尤为重要。
然而,目前市场上主流的车载总线开发工具价格在十几万左右,且在总线数据解析后的数据分析和数据计算方面存在不足;而一般的总线分析工具虽然价格便宜,但功能单一(只支持can总线报文的录取和录制等基本功能),不能满足车载总线数据的测量和解析、数学运算等的要求。
专利号为201811605371.7公开的一种基于matlab的can总线报文解析方法,将can总线报文导入到matlab中实现解析can总线的数据,但不适用于其他总线数据的解析。专利号为201610181331.9公开的一种基于can通讯的总线报文解析方法,将can的的十六进制数据直观的解析为十进制的物理值,该方案只能解析can总线报文,无法完成总线报文数据的数学运算、算法开发。
技术实现要素:
本发明的目的在于提供一种基于matlab/simulink的车载总线的数据分析方法,以解决上述背景技术中提出的问题。
本发明的技术方案是:
一种基于matlab/simulink的车载总线的数据分析方法,包括有
步骤s1:首先选择车载总线的通信模式,根据选择的通信模式确定对应的解析方法;
步骤s2:载入待解析的总线报文到matlab工作空间;
步骤s3:根据载入的总线报文和对应的通信规范由对应的解析算法对总线报文所包含的参数和意义进行解析,并建立矩阵[t,signal]
步骤s4:simulink模块中读取需要处理的矩阵[t,signal];
步骤s5:将解析后的数据根据用户需求进行输出、显示、保存至matlab的workspace的便于数据的二次处理;
所有所述解析方法均包括有以下步骤:
步骤s31:接收到总线报文数据后,甄别出目标id所有的行向量,并分别创建目标id的数组;
步骤s32:根据数组列的长度和周期创建时间数组[t],根据数组行数和总线报文周期设置为simulink模块运行时间;
步骤s33:根据总线报文格式和总线报文规范中对总线报文初始值、长度、偏移量、精度的要求,进行总线报文实际物理值的转换,并创建signal数组[siganl];
步骤s34:对解析后的数据进行重组,创建时间和signal的矩阵[t,signal];
所述步骤s33中接收到总线报文数据后,甄别出目标id所有的行向量,并将总线报文从十六进制转换为十进制。
所述步骤s2中将matlab工作空间根据总线报文的各帧数据分配出若干个工作目录,并通过目标id的行向量,分别将目标id存储到对应的工作目录内,便于数据解析提取。
所述步骤s5中二次处理后的数据通过excel分类输出的方式输出。
本发明通过改进在此提供一种基于matlab/simulink的车载总线的数据分析方法,与现有技术相比,具有如下改进及优点:
其一:本发明无需专门的网络开发环境,利用matlab&simulink环境,分析总线数据。
其二:本发明通过配置总线模式,支持多种总线数据的解析,而不是仅支持单一的总线通信。
其三:本发明可将总线报文的数据进行二次开发,数据处理能力增强。
附图说明
下面结合附图和实施例对本发明作进一步解释:
图1是本发明的车载总线数据分析方法的示意图;
图2是本发明的总线报文解析算法的示意图;
具体实施方式
下面对本发明进行详细说明,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明通过改进在此提供一种基于matlab/simulink的车载总线的数据分析方法,如图1-图2所示,包括有
步骤s1:首先选择车载总线的通信模式,根据选择的通信模式确定对应的解析方法,车载总线的通信模式包括有can、lin、flexray、ethernet等网络,根据车载总线的通信模式来对应的解析方法。
步骤s2:载入待解析的总线报文到matlab工作空间;
步骤s3:根据载入的总线报文和对应的通信规范由对应的解析算法对总线报文所包含的参数和意义进行解析,并建立矩阵[t,signal],根据总线报文格式和总线报文规范的要求,对总线报文进行总线报文实际物理值的转换,建立矩阵[t,signal]。
步骤s4:simulink模块中读取需要处理的矩阵[t,signal];
步骤s5:将解析后的数据根据用户需求进行输出、显示、保存至matlab的workspace的便于数据的二次处理,将电压和电流相乘后对时间进行积分得到车辆耗电量等其他数据。
所有所述解析方法均包括有以下步骤:
步骤s31:接收到总线报文数据后,甄别出目标id所有的行向量,并分别创建目标id的数组,根据目标id的行向量,能快速提取需要的数据,并建立数组。
步骤s32:根据数组列的长度和周期创建时间数组[t],根据数组行数和总线报文周期设置为simulink模块运行时间,能够以最短的解析时间解析数据;
步骤s33:根据总线报文格式和总线报文规范中对总线报文初始值、长度、偏移量、精度的要求,进行总线报文实际物理值的转换,并创建signal数组[siganl],根据总线报文的各帧数据分配出若干个工作目录,并通过目标id的行向量,提取对应的signal数组[siganl]。
步骤s34:对解析后的数据进行重组,创建时间和signal的矩阵[t,signal],以待simulink模块中读取。
所述步骤s33中接收到总线报文数据后,甄别出目标id所有的行向量,并将总线报文从十六进制转换为十进制,可解析出直观的输出数据;
所述步骤s2中将matlab工作空间根据总线报文的各帧数据分配出若干个工作目录,并通过目标id的行向量,分别将目标id存储到对应的工作目录内,便于数据解析提取。
所述步骤s5中二次处理后的数据通过excel分类输出的方式输出,可用于跟踪和再现车辆运行数据、分析司机驾驶操作和车辆运行状况。
实例一:
利用车辆总线报文数据对车辆行驶时的功率进行分析,具体步骤如下:
车载总线的can通信,将can总线报文载入到matlab工作空间;
筛选总线报文中数据域中包含总电流i所对应的目标id的所有行;
通过[i]行的长度*t总线报文周期计算出t总线报文总时长,将该时长设置为simulink模块运行时间,创建i的时间数组[it]=[t总线报文周期:t总线报文周期:t总时长];
根据总线报文格式和总线报文规范中i物理值=i初始值+i总线值*精度+偏移量,实现总线报文总线值到物理值得解析,并创建数组isignal=[isiganl],合并[it]和[isignal]生成矩阵[it,isignal];同理生成总电压v所对应的矩阵[vt,vsignal];
simulink模块中通过workspace调用[it,isignal]和[vt,vsignal],将电压和电流相乘后对时间进行积分得到车辆耗电量。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现,因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。