基于OBDⅡ和GPS的汽车远程监控系统设计*
2022-04-13赵耕云王佳李万敏朱有地
赵耕云, 王佳, 李万敏, 朱有地
(兰州工业学院 汽车工程学院, 甘肃 兰州 730050)
为了远程监控和管理行驶的汽车,保障车辆安全行驶,基于无线移动网络的汽车远程监控系统成为车联网研究领域的一个热点。第二代车载诊断系统OBDⅡ(On-Board DiagnosticsⅡ)主要用于检测与排放有关的汽车状态参数和故障信息。目前中国很多高校在积极研发基于OBDⅡ和无线网络技术的汽车远程监控系统,实现对汽车行驶状态参数的实时监控。也有高校研发基于全球定位系统(GPS)或北斗定位系统的汽车远程监控系统。该文设计一套结合OBDⅡ、GPS和百度地图的汽车远程监控系统,实现车辆行驶状态参数、位置和行驶轨迹的远程监控。
1 系统总体方案设计
如图1所示,汽车远程监控系统分为车载数据采集系统和监控中心两部分。车载数据采集系统主要包括单片机、OBDⅡ诊断模块、GPRS/GPS模块及紧急停车模块。单片机串行口1与OBDⅡ诊断模块相连接,OBDⅡ诊断模块与汽车ECU通信,读取车辆状态信息。单片机串行口0与GPRS/GPS模块相连接,通过该模块的GPS功能获取车辆所在位置的GPS经纬度信息,并将采集的车辆运行状态信息和GPS经纬度信息通过GPRS网络发送到Internet网络。监控中心运行在PC端,主要对接收到的汽车状态数据进行图形化显示和数据存储。此外,监控中心还能将监管人员的控制命令发送到下位机,控制车辆紧急停车。
图1 汽车远程监控系统总体结构
2 车载数据采集系统设计
车载数据采集系统选用恩智浦KEAZ128单片机作为主控制器。该单片机基于48 MHz主频的32位ARM Cortex-M0+处理器,集成了128 kb FLASH及16 kb RAM,具有3个UART串行口,是飞思卡尔Kinetis EA系列中功能最全、规格最高的一款产品,适合面向汽车网络的应用设计。主控制器负责将汽车状态数据和经纬度数据解析处理后通过GPRS网络发送到公网。
2.1 硬件电路设计
车载数据采集系统的硬件主要包括GPRS/GPS电路和OBDⅡ诊断模块。GPRS/GPS模块选用图2所示SIM808模块,它是一个四频段GSM/GPRS模块,结合GPS卫星导航技术,支持中国移动2G、3G、4G网络。SIM808模块的GPRS数据下行传输速率最大为85.6 kb/s,上行传输速率最大为86.5 kb/s,GPS水平精度小于2.5 m,满足系统设计要求。KEAZ128单片机通过串行口0与该模块的RXD、TXD引脚相连进行信息交互。
图2 SIM808模块
OBDⅡ诊断模块以STM32F103C8T6单片机作为控制器、TJA1050作为CAN收发器,有标准的16针OBDⅡ诊断接口。STM32F103C8T6单片机的程序中写有符合ISO-15765协议的标准函数,KEAZ128单片机通过串行口向OBDⅡ诊断模块(其电路见图3)发送AT+XXX指令,即可从该串行口接收到车辆ECU响应的数据流。
图3 OBDⅡ诊断模块电路图
紧急停车模块选用HK4100F继电器,将继电器常闭触点串联在发动机各缸点火信号线上,电路改造相对简单。试验车辆选用长城哈弗H6,该车采用四缸独立点火方式,需要四路继电器控制四路点火信号线。KEAZ128单片机的PB4、PB5、PB6、PB7引脚输出高电平信号控制继电器常闭触点断开,远程控制紧急停车。
2.2 软件设计
车载数据采集系统将采集的汽车发动机转速、冷却液温度及位置数据通过GPRS网络采用TCP协议发送到公网,同时从公网接收控制指令,若收到紧急停车指令,则发出控制信息,切断汽车点火系统的点火信号。如果TCP传输数据的客户端和服务端都处于空闲状态达到一定时间,网络运营商的网关会自动断开通信链路,使车载数据采集系统与监控中心无法通信。为避免这种不利情况,在车载数据采集系统发送数据时,每隔10 s发送心跳包数据“OK”,监控中心收到心跳包数据后回应心跳包数据“KO”,以此来保持通信链路的连接。当车载数据采集系统不能收到来自监控中心返回的心跳包数据“KO”时,则认为通信链路已断开,重新启动TCP连接,建立通信链路。车载数据采集系统的程序流程见图4。
图4 车载数据采集系统的程序流程
2.2.1 GPS报文的读取和解析
KEAZ128单片机通过串行口0向SIM808发送“AT+CGNSINF”指令,获取GPS导航信息,并将其存储在定义的串行口接收数据缓冲区中。SIM808模块GPS定位成功后,向单片机发送位置报文信息。位置报文信息格式为:+CGNSINF:〈GNSS run status〉,〈Fix status〉, 〈UTC date & Time〉,〈Latitude〉,〈Longitude〉,〈MSL Altitude〉,〈Speed Over Ground〉,〈Course Over Ground〉,〈FixMode〉,〈Reserved1〉,〈HDOP〉,〈PDOP〉,〈VDOP〉,〈Reserved2〉,〈GNSS Satellites in View〉,〈GNSS Satellites Used〉,〈GLONASS Satellites Used〉,〈Reserved3〉,〈C/N0 max〉,〈HPA〉,〈VPA〉。其中Latitude为纬度,Longitude为经度。将报文信息按“,”分割,解析出经纬度数据,并将数据赋给相应变量。
2.2.2 OBDⅡ诊断模块通信设计
OBDⅡ诊断模块是主控制器KEAZ128与车辆ECU之间通信的桥梁,通过接收来自主控制器KEAZ128的AT指令,解析后与车辆ECU通信,获取所需车辆工况参数的数据流,并将该数据流通过串行口发送到主控制器KEAZ128,获得车辆状态信息。经测试,试验车辆采用的OBDⅡ诊断协议为ISO 15765-4协议。主控制器KEAZ128通过串行口1向OBDⅡ诊断模块发送AT指令,相关指令见表1。单片机首先发送500 kb/s标准CAN协议激活指令,建立汽车ECU与OBDⅡ诊断模块的数据链路,再发送“AT+DS041,DS048”指令,从单片机串行口1缓冲区接收发动机转速和冷却液温度数据流。
表1 OBDⅡ诊断模块部分AT指令
2.2.3 数据ID编号设计
为便于识别数据类别,车载数据采集系统将采集的车辆数据按类别给予ID编号(见表2)。KEAZ128单片机将ID编号和对应的数值整合成一维数组,ID在前,数值在后,每次只发送一组数据,通过SIM808模块的GPRS功能发送到公网。采用ID编号,不仅能减少单次发送数据量,而且便于上位机根据ID编号解析数据,有利于后续系统升级,为增加监控数据留下空间。
表2 数据类别ID编号
3 监控中心设计
采用LabVIEW软件设计汽车远程监控系统上位机,进行发动机转速、冷却液温度、车辆地理位置的数据显示及存储。
3.1 TCP通信
TCP/IP协议是Internet最基本的协议,是由不同层次上的多个协议组合而成的协议族。TCP传输控制协议是一种面向连接的基于字节流的传输层通信协议。采用LabVIEW自带的TCP操作函数建立TCP服务器,该服务器主要由一个TCP发送循环和一个TCP接收循环组成。车载数据采集系统根据TCP服务器所在主机的IP地址和端口号发出连接请求,服务器与车载数据采集系统建立连接后通过TCP读写函数进行数据通信。如图5所示,按下“紧急停车”按钮控件,发送循环将“紧急停车”的控制命令“+IPD,9:!stopcar*”通过公网发送给车载数据采集系统,对车辆进行远程控制。
图5 TCP发送循环
接收循环读取从公网传来的车辆状态数据,通过ID判断数据类别,将各类别数据分别处理后传递给相应控件进行显示,并将该数据连同当前时间保存在相应excel文件中(见图6、图7)。汽车GPS纬度数据传递给局部变量“WGS-84纬度”,经度数据传递给局部变量“WGS-84经度”(见图8、图9),为调用百度地图显示车辆位置和行驶轨迹作好数据准备。接收到心跳包“OK”时,控制工作指示灯闪烁,同时返回心跳包“KO”。
图6 TCP接收循环(接收并存储冷却液温度数据)
图7 TCP接收循环(接收并存储发动机转速数据)
图8 TCP接收循环(接收并存储纬度数据)
图9 TCP接收循环(接收并存储经度数据)
3.2 百度地图定位显示
远程监控系统采用百度地图进行车辆定位显示,通过创建WebBrowser ActiveX控件,调用百度地图静态图API,在WebBrowser控件的URL地址中输入标准的HTTP请求,HTTP请求中包含百度地图API的网址参数,从而实现地图创建,将百度地图以图片形式显示在LabVIEW前面板中。每次采集的经纬度值转换成字符串后通过反馈节点连接成路径字符串,作为网址的paths参数,在百度地图上画出车辆的行驶轨迹。图10为LabVIEW调用百度地图程序框图。
图10 调用百度地图程序框图
由于GPS采用的是WGS-84坐标系,百度地图采用的是BD-09百度坐标偏移标准,需进行坐标系转换。在程序框图中调用“坐标系转换子VI”,将WGS-84坐标系转换为百度地图BD-09坐标。
最终设计完成的汽车远程监控系统前面板见图11。
图11 汽车远程监控系统前面板
4 系统试验
在兰州工业学院南校区进行汽车远程监控系统实车试验,试验车辆为长城哈弗H6。热车后开始试验,试验车辆以低挡位低速行驶一圈用时约87 s。在百度地图上绘制的行车轨迹和最后停车位置见图12。
图12 试验车辆行驶轨迹
监控中心在该时段内共采集到试验车辆冷却液温度与发动机转速数据各31组,存储在excel表格中(见图13)。
A列为存储时间,如20210205032748.50 指的是2021年2月5日15:27′48.50″;左图B列为冷却液温度(℃),右图B列为发动机转速(r/min)
经过多次测试,远程监控系统工作稳定,车辆的冷却液温度和发动机转速监控数据准确;在百度地图上形成的轨迹基本符合试验车辆的实际行驶路线;监控中心向试验车辆发送停车指令后,车载数据采集系统能切断车辆的点火信号线,使车辆熄火。
5 结语
设计针对汽车状态参数和位置的远程监控系统,采用OBDⅡ诊断模块读取车辆状态参数,选用SIM808模块采集车辆经纬度数据,设计KEAZ128单片机程序,将所采集的数据通过GPRS网络发送到监控中心。设计基于LabVIEW的监控中心,调用百度地图,将车辆的实时位置和行驶轨迹标注在百度地图上。系统长时间运行结果表明:该监控系统运行稳定,能实时监控车辆工况参数,监控数据准确,定位基本准确,在地图上形成的轨迹能较真实地反映车辆实际行驶路线,能远程控制车辆熄火。