基于CAN总线的汽车实时数据采集与可视化研究
2021-07-27廖向阳余剑武张诗语黄鹏海争平
廖向阳,余剑武,张诗语,黄鹏,海争平
(1.湖南交通职业技术学院汽车工程学院 汽车工程系,湖南 长沙 410132;2.湖南大学 汽车车身先进制造国家重点实验室,湖南 长沙 410082)
0 引言
随着我国国民经济水平的提高与汽车工业的发展,汽车的产量及保有量也随之不断提升。在汽车日益普及的趋势下,为了使汽车保持良好的运行状态,降低故障发生率,保障行车安全,对汽车运行状态进行实时可视化显示以及对异常状况进行实时警报具有重要意义。
数据采集是汽车运行状态监控的基础。在汽车电控系统中,汽车ECU对汽车各个系统的控制依赖于汽车内部的各个传感器。传感器将被测工况转换为电信号输入ECU,ECU根据输入信号做出相应的控制指令并输出给执行器[1]。汽车传感器信号不仅是ECU进行控制的依据,同时还反映出相应系统的运行状态。目前,CAN总线是绝大部分汽车中车载电子控制装置ECU以及微控制器之间的通信渠道。伴随着汽车电子化程度的提升以及ECU数量的增多,CAN 总线的集约化程度也有了显著提升,实现了多路复用以及高效通信。在此基础上,利用CAN收发器将数据采集设备接入CAN总线网络,获取并解析总线报文,并开发相应的数据处理软件,在理论上便可实现车辆运行状态的实时监测[2-4]。
国内外诸多学者在这一方面做了大量的研究工作。重庆大学的张海逢[5]、大连理工大学的刘洪星[6]以及中北大学的高阳,李永红等[7]设计了CAN总线数据采集设备,完成了汽车状态数据的采集并实现了数据向PC的传输;同济大学的刘翔、吴光强等[8]以及中北大学的岳强、尉庆国等[9]在CAN总线数据采集的基础上设计了数据可视化界面,将大量数据中的信息通过图表的形式表达出来。丹奥尔堡大学的K Jakobsen和SCH Mouritsen等[10]以及美国麻省理工学院的Umberto Fugiglando等[11]设计了CAN总线数据采集方法,并且利用数据实现了对驾驶人员的驾驶行为的分析。
在上述研究的基础上,为了更加全面地采集汽车运行时的各种状态参数、改善运行状态信息的表达效果,本文将用于数据采集的数据采集解析模块与用于数据处理和显示的上位机软件相结合,设计了一套汽车实时数据采集与可视化系统。数据采集解析模块对汽车CAN总线报文进行采集并基于ISO11898协议进行解析,获取包括发动机转速、发动机负荷以及冷却液温度等在内的12个物理量的实时数值,并转化为串口数据的形式传输到上位机PC端;借助LabVIEW开发上位机软件,对串口数据进行提取和处理,实现汽车运行实时数据的可视化显示以及对异常状况的实时警报,帮助车主及时、准确地掌握汽车运行状态。
1 数据采集解析模块的硬件设计
数据采集模块通过OBD-Ⅱ接口接入汽车CAN总线网络获取总线报文。对报文进行解析,转换为串口数据并传输给PC端。针对上述功能,在数据采集模块中集成了控制芯片、电源模块、串口通信收发器以及CAN总线收发器。图1是数据采集模块的电路原理图。
图1 数据采集模块电路原理图
1.1 控制芯片
控制芯片采用3.3V供电电压。设置UART引脚用于连接串口收发器,规定接收5V或3.3V的TTL电平,发送3.3V的TTL电平;CAN引脚接CAN收发器的TXD和RXD接口;设置IAP和RST引脚,用于对芯片进行模式切换和重置。
1.2 电源模块
电源模块包含LM2579电源模块和AMS1117模块。LM2576电源模块用于电源供电,额定电压9-30V。AS1117模块主要用于电压转换,将5V转为3.3V为芯片供电。
1.3 通信收发器
串口通信主要采用RS232收发器SP232EEN。RS232S的TX、RX分别接控制芯片的RX和TX引脚。VCC采用5V电压输入。
CAN通信主要采用高速CAN收发器PCA82C51。高速CAN的高频信号在传输线终端会形成反射波,干扰原信号。为了保证数据通信的抗干扰性和可靠性,在总线终端接入两个120Ω的电阻,用于匹配总线阻抗。
2 汽车状态参数解析
汽车CAN总线包括高速CAN总线和低速CAN总线。发动机控制ECU、自动变速器控制ECU以及ABS控制单元等系统与汽车动力输出和控制密切相关。这些系统所传递的信息量较大,对信息传递速度的要求较高,因此挂载在高速CAN总线上。汽车状态监测和故障诊断所需要的物理量主要集中在与汽车动力输出和控制相关的系统上。这些物理量包括行驶速度、节气门开度、发动机转速、发动机负荷、瞬时油耗、电瓶电压以及冷却液温度等。为了获取上述物理量的实时数据,需要获取汽车高速CAN总线的报文并加以解析。
CAN总线是广播类型的总线,这意味着总线上所有节点都可以侦听到总线上的报文,但是每个节点会根据报文的内容决定是否对报文做出响应。汽车CAN总线报文分为数据帧、远程帧、错误帧和过载帧四种类型。数据采集模块的CAN收发器发送特定的远程帧报文向总线上的相应节点请求数据。对应节点收到远程帧报文后向总线上发送数据帧报文,数据帧报文当中包含了汽车ECU内存储的各传感器数据。CAN收发器接收总线上的数据帧报文。控制芯片对CAN收发器接收到的数据帧报文进行解析,即可得到如表1所示的12个状态参数的实时数值。
表1 汽车运行状态参数表
3 汽车状态参数的实时采集与可视化
3.1 上位机软件的功能规划与设计方案
汽车运行状态实时数据的可视化显示以及异常状况实时警报能够帮助车主及时、准确地了解汽车当前的运行状态,使车主能够在汽车出现异常后及时采取相应措施,这对于汽车的日常维护以及行车安全的保障具有显著意义。与此同时,存储下来的汽车运行状态历史数据可以在故障诊断及车辆维修时为工作人员提供可供参考的信息,并能够帮助车主改善驾驶习惯,提高行车的经济性和安全性。为此,在数据采集解析模块的基础上,还需要在上位机上开发相应的软件以实现上述功能。
LabVIEW是基于数据流的图形化编程软件,具有强大的控件库,便于串口数据的处理,与数据采集仪器加以组合便可设计出用于数据显示的虚拟仪表,为汽车状态数据可视化软件的开发提供了良好平台[12]。
综上所述,本系统借助LabVIEW图形化编程语言开发上位机软件,用于向模块发送串口指令、读取模块返回的串口数据并对数据进行处理,以实现状态数据的实时显示、存储以及异常工况报警等功能,并预期达到用户界面友好、界面清晰、操作简单、功能可靠的目标。
3.2 上位机软件的LabVIEW程序设计
上位机软件包含实时模式和线下模式。实时模式用于在汽车行驶时显示并保存实时状态数据,以及在出现异常状况时及时发出警报。在LabVIEW中设置模块初始化参数簇,对波特率、数据位、停止位、奇偶校验和流控制等参数进行初始设定。之后由上位机向模块发送实时数据流自动上报指令,模块每隔1秒钟向上位机串口发送一条反映汽车实时运行状态的消息,消息的格式如下:“$OBDRT=13.741,1362,16,17.25,56.9,54,10.00,3617.26,8.2,11.3,76,39 ”。其有效载荷为“$OBDRT=”与“ ”之间的数据,表示汽车运行状态参数的实时数值(与表1中的状态参数自上而下依次对应)。采用循环结构实现消息的连续读取、显示和保存,由布尔控件控制循环的起始。为了避免读取时发生遗漏,以每条消息末尾的换行符 作为读取终止符,保证对串口消息逐条进行读取。上位机读取到模块返回的消息后,设置字符串扫描控件和数组索引控件提取出目标状态参数的实时数据,并利用数组写入控件将数据保存到本地文档。在本系统中对蓄电池电压、发动机转速、行驶速度和冷却液温度这四个状态参数的实时数据进行了提取。对于以上各状态参数,在程序中分别添加相应的虚拟仪表、波形图表、报警灯以及蜂鸣器控件与之对接,并设置状态参数在正常工况下的数据范围,从而实现汽车状态数据的可视化显示以及对异常工况的警报。线下模式用于将线上模式所保存的历史数据生成为波形图。在LabVEW程序中设置电子表格读取控件,将保存到本地的数据文档读取为数组,并设置数组索引控件和波形图控件将数组中对应状态参数的历史数据提取出来并以折线图的形式显示。上位机软件的LabVIEW程序框图如图2所示。
图2 汽车状态数据可视化程序框图
在汽车行驶状态下,进入上位机软件的实时模式,虚拟仪表盘和温度计显示汽车的蓄电池电压、发动机转速、行驶速度以及冷却液温度的实时数据,波形图显示对应数据的变化情况。其中软件上显示的行驶速度和发动机转速与汽车仪表盘上的数据一致。在行驶速度超过60km/h的瞬间,上位机虚拟报警灯闪烁,蜂鸣器报警。状态参数实时数据显示界面如图5所示(限于篇幅此处以蓄电池电压为例)。
4 系统功能验证试验
在K2汽车上进行了汽车实时数据采集与可视化系统的功能验证试验。在实车试验中,利用数据采集解析模块得到了汽车状态参数的实时数据,并将数据保存到本地文档中,以便后续的处理和分析。模块实物及试验现场如图3、图4所示。
图3 数据采集解析模块
图4 数据采集试验现场
在汽车行驶状态下,进入上位机软件的实时模式,虚拟仪表盘和温度计显示汽车的蓄电池电压、发动机转速、行驶速度以及冷却液温度的实时数据,波形图显示对应数据的变化情况。其中软件上显示的行驶速度和发动机转速与汽车仪表盘上的数据一致。在行驶速度超过60km/h的瞬间,上位机虚拟报警灯闪烁,蜂鸣器报警。状态参数实时数据显示界面如图5所示(此处以蓄电池电压为例)。
图5 蓄电池电压实时数据显示界面
在试验行程结束后,进入上位机软件的线下模式。在线下模式中将本次行驶过程中的相关参数历史数据绘制成折线图,其中行驶速度和发动机转速的折线图如图6、图7所示。折线图反映了本次试验行驶过程基本未出现异常状况。实车试验证明了本系统具有实时性、准确性和可靠性。
图6 行驶速度曲线图
图7 发动机转速曲线图
5 结论
(1)开发了汽车实时数据采集与可视化系统。系统充分利用了汽车CAN总线网络的优势,借助简单的硬件设备,准确、实时、全面地获取了汽车状态数据;借助LabVIEW软件强大的串口数据处理功能及虚拟仪表库,开发了上位机软件,实现汽车异常工况的报警以及运行状态实时数据的显示、保存与分析,为汽车状态监控及故障诊断提供数据支持。
(2)系统扩大了被监控物理量的范围,更加综合、全面地反映汽车的运行状态;通过可视化的方式有效解决了因数据量过大造成信息可读性差的问题;突破了传统仪器仪表的限制,降低了汽车状态监控的经济成本。
(3)本系统可以进一步扩展,应用于车联网的信息上传和共享。可借助互联网、局域网实现车载终端系统和远程控制中心的信息交互,并利用云端服务器扩大用户数量,实现大量用户数据的管理和存储。