基于GPRS 的整车控制策略远程监测系统的软件设计
2021-02-25邹庆勇龚元明
邹庆勇, 龚元明
(上海工程技术大学 机械与汽车工程学院, 上海 201620)
0 引 言
随着人们对汽车的动力性、经济性、安全性、舒适性的要求越来越高,汽车用电子控制单元要实现的功能也日趋复杂,导致生产周期加长,生产成本提高。 目前,在开发汽车电子控制单元时,比较常用的方式是采用硬件在环技术,根据预定目标,快速构建控制模型,通过硬件在环仿真不断测试优化,以得到所需控制策略。 控制策略执行效果的监测对ECU开发非常重要,有助于控制策略的参数标定。 如果能实现远程向硬件在环系统中的控制器下载控制策略,实时监测控制策略的执行效果以及对控制策略相关参数进行标定,将极大提高汽车控制器硬件在环台架的利用率和汽车ECU 的开发效率,因此,针对控制策略执行效果的实时监测,本文提出了一种基于GPRS 和CAN 总线的整车控制策略远程监测系统,支持远程创建测试用例、开展测试和测试数据的实时传输。 介绍了整车控制策略远程监测系统的组成和功能,主要描述了现场监测终端和服务器的通信软件设计。
1 整车控制策略远程测试系统概述
整车控制策略远程测试系统可以作为传统汽车硬件在环系统的补充,可以借助云端数据库实现汽车控制策略测试方案的快速制定,通过网络快速传输测试数据到现场监测终端实施测试方案,并将测试结果上传云端服务器和客户端以便于数据的长期存储和结果分析。 整车控制策略测试方案的快速制定、快速实施和快速分析将缩短汽车控制策略的监测时间,缩短控制器的开发周期。
2 整车控制策略远程监测系统的通信设计方案
该通信系统包括整车控制器硬件在环测试平台、测试终端、云端服务器和网页客户端几部分。 网页客户端用于显示硬件在环台架的选择和测试方案的制定,云端服务器包括应用软件和数据库,转发和存储网页客户端和测试终端提交的数据。 测试终端用于临时存储测试用例并根据用户的设置向硬件在环测试平台发送测试请求和接收测试响应,进而完成GPRS 模块的驱动[1]。 数据流程见图1。
图1 整车控制器远程测试系统数据流程Fig.1 Data flow of remote test system for vehicle controller
3 整车控制策略远程监测系统的结构
测试系统基于GPRS 和CAN 总线,由客户端、云服务器和现场设备终端构成,其中云服务器软件由2 部分构成。 一部分为以Django 为框架制作的网站服务器软件,用于与网页客户端的数据通信和数据库数据的存取,另一部分是以PyQt5 所编写的服务端界面应用程序,用于与现场测试设备的数据通信和数据库数据的存取。 系统结构见图2。
图2 整车控制器远程测试系统结构Fig.2 The structure of remote test system for vehicle controller
3.1 网页客户端
网页客户端用于创建测试条例,配置CAN 通信的基础参数,查询和下载测试结果。 为了实时显示台架的使用状态和测试数据,运用了Asynchronous JavaScript and XML(AJAX)技术,可以在异步的情况下去数据库读取数据,然后更新部分网页内容。AJAX 使用DOM 实现动态显示和交互, 通过XMLHttpRequest 实现异步数据的读取,有助于减轻服务器负担,减少用户等待时间[2]。 网页的制作还用到了HTML、CSS、JS 语言,共同完成了用户的登录、台架选择、测试条例的创建和测试结果的查询等功能。 在远程测试时可以选用云端提供的测试条例,也可以选择自己创建测试条例。 测试开始后,界面将实时显示测试结果,用户可以在测试结束后将测试结果下载保存至本地。 测试台架的选择界面和测试条例的创建界面见图3、图4。
图3 测试台架选择界面Fig.3 Web page for choosing a test bench
图4 测试条例创建界面Fig.4 Web page for creating test cases
3.2 云端服务器
由于Django 具有自带数据库访问组件和后台管理系统等优点,构成测试系统客户端和网站服务端程序选择Django 框架开发。 云端服务器平台采用阿里云服务器,用于运行Django 框架网站项目和PyQt5 应用软件,服务器软件选择性能稳定、应用广泛的Apache 服务器,云服务器数据库管理系统采用MYSQL,用于存储诊断测试条例的配置信息、测试条例以及测试终端测得的整车控制器响应数据。 服务端软件可实现多终端设备的连接和数据的解析以及数据的存储。
3.3 现场测试终端
该测试终端微控制器采用意法半导体公司推出的STM32F103ZET6 微控制器,为了存储控制器开发测试人员制定的复杂的测试条例和测试结果,终端采用SD 卡作为存储模块。 GPRS 模块选用了芯讯通公司生产的SIM900A。 微控制器通过USB-TOCAN 模块向电脑发送诊断测试报文,同时接收响应报文存储于SD 卡内并同时通过SIM900A 模块上传到云端服务器[3]。 现场测试终端硬件结构见图5。
图5 测试终端硬件结构Fig.5 Hardware structure of test terminal equipment
4 测试系统软件设计实现
远程控制器测试系统整体通信软件的基本流程如图6 所示。
图6 远程测试系统通信软件流程图Fig.6 Flow chart of communication software of remote test system
4.1 测试终端的软件设计实现
终端软件采用了模块化的设计思想,主要分为GPRS 模块、SD 卡存储模块、CAN 报文收发模块。这里拟对此展开研究分述如下。
4.1.1 CAN 初始化程序
CAN 初始化包括3 部分,分别为:模块初始化、节点初始化和报文初始化。 其中,模块初始化的配置主要是时钟频率的选择;节点初始化主要完成节点和工作模式的选择以及输入输出引脚的设置;报文初始化主要完成帧格式、消息体ID 和数据长度的设置[4]。在设置波特率和工作模式前,需要设置CAN_MCR 寄存器的INRQ 位,使CAN 进入初始化模式。 此外,还要设置INRQ 位为0,退出初始化模式。
4.1.2 CAN 报文收发模块程序
CAN 报文收发模块主要完成向CAN 总线发送测试请求报文、接收CAN 总线响应数据。 STM32F103ZET6 有一个CAN 控制器,通过滤波器可以过滤掉标识符不符的CAN 报文,从而减少CPU 处理CAN 通信的开销。
在进行简单的CAN 初始化后,即可发送数据,首先声明一个CAN 发送报文对象,设置标识符、帧类型、数据长度、要发送的数据,指定发送CAN 报文所使用的CAN 通道开始发送报文,循环检测发送结束标志直至发送完成。
在接收CAN 报文时,先要检查接收标志判断是否有新消息,若有新数据则从相应的FIFO 中读取CAN 报文消息,提取ID、帧类型、数据长度、数据等信息,再清除接收标志位。
主控制器在接收到响应报文后,将判断其响应类型并记录接收时间,将响应数据、设备号和时间等信息组成一帧数据上传至服务器。
4.1.3 SD 卡存储模块
SD 卡控制器对SD 卡的初始化和读写是通过借助于SD 总线完成的,SD 总线有数据线DATA0~DATA3、命令线CMD 和时钟线CLK 等构成[5]。 SD 控制器通过命令线将命令发到SD 卡以完成某项操作,并接受来自SD 卡的响应,分析后进行下一步操作[6]。
SD 卡初始化时,首先初始化与SD 卡连接的I/O 配置,上电并延时一段时间后发送CMD0 命令和CMD8 命令,判断SD 卡是否支持SD 2.0 协议,此后发送ACMD41 命令,根据响应判断是标准容量SD卡、还是高容量的SD 存储卡[7]。4.1.4 GPRS 模块网络通信程序
ATK-SIM900A 是ALIENTEK 推出的一款高性能工业级GSM/GPRS 模块,支持RS232 串口和LVTTL 串口。 控制器向GPRS 模块发送命令是通过AT 指令完成的,在进行通信时常用到的AT 指令见表1。
表1 GPRS 通信常用的AT 指令Tab.1 AT commands commonly used in GPRS communication
通过GPRS 传输数据时,首先确定通信的模式(TCP/UDP),然后通过AT+CIPSTART 指令发起连接,连接建立后发送AT+CIPSEND 指令,成功后再发送需要传输的数据。
GPRS 网络通信程序主要负责测试终端和云端服务器的数据交互。 终端设备启动后,将通过GPRS 向云端PyQt5 服务器程序发起连接请求,建立连接后将终端设备信息存储到数据库以供用户查询各终端设备的状态。 在用户选择好终端设备后,终端设备向云端服务器发出查询用户是否启动测试的指令,若用户没有开启测试,将循环查询,直至收到用户启动测试的信号;如果用户已经开启测试,就会发出查询用户创建的测试用例和CAN 配置信息的指令,并将接收到的数据存入SD 卡。 数据接收完毕,将SD 卡中的数据取出构建CAN 请求报文逐个发送至CAN 总线,当终端设备收到CAN 总线的响应报文后,会通过GPRS 模块发到云端数据库,以便用户可以即时查询分析和下载。 测试终端和云端服务器之间的数据通信程序如图7 所示。
图7 测试终端和云端服务器间数据通信流程图Fig.7 Flow chart of data communication between test terminal and cloud server
4.2 云端服务器软件(与现场终端设备通信部分)设计实现
与现场终端设备通信部分服务器软件用于监听各个终端设备的连接请求,连接成功后即可进行数据的传输,且支持多设备同时连接和数据传输。 程序主要流程是首先监听终端的连接请求,当有终端成功连接后创建一个线程单独处理和该终端的通信。 该线程等待接收终端的数据,接收到数据之后解析数据并执行相应的操作,主要操作有向数据库中存入该设备的信息以表示有新终端建立了连接,在数据库中删除该设备信息用于表示有设备停止了使用,查询用户是否选择了该设备以便于决策是否继续定时查询,从数据库中取出测试条例。 软件的主线程和子线程流程图如图8、图9 所示。
图8 服务器程序主线程流程图Fig.8 Flow chart of main thread of server program
图9 服务器程序子线程流程图Fig.9 Flow chart of main sub-thread of server program
4.3 数据传输协议
为保证数据的可靠传输,现场测试设备和云端服务器之间的通信采用TCP Socket 技术,云端服务器将测试用例打包发向现场测试终端,测试终端在启动测试并收到响应报文后会立即上传至云端服务器。
云端服务器向现场测试设备传输的数据帧格式见表2。 由表2 可知,云端服务器向现场测试设备传输数据由设备号、数据有效个数、请求报文和校验位构成。
表2 云端服务器向现场测试设备传输的数据帧格式Tab.2 Data frame format transmitted from cloud server to field test equipment
现场测试设备向云端服务器传输的数据帧格式见表3。 由表3 可知,现场测试设备至云端服务器传输数据帧中数据块部分包含一个请求报文和一个响应报文以及每个报文的发送或接受时间和ID。
表3 现场测试设备向云端服务器传输的数据帧格式Tab.3 Data frame format transmitted from field test equipment to cloud server
5 实验结果
测试均在实验室环境下完成,终端设备通过USB-To-CAN 设备与电脑相连,电脑运行CANTest软件用于接收和发送CAN 报文。 首先运行服务器软件,打开终端设备和服务器建立连接,此时在网页即可看到有新终端设备在线,选择该设备后进入创建测试条例界面,创建完成后点击开始测试,则在CANTest 上定时收到测试请求报文,给出响应报文后在网页也可以实时显示出来。 通过编写软件模拟终端设备向服务器软件循环发起连接,当连接数超过300 个时,终端设备仍可以正常收发数据且无明显网络延迟。 测试结果和测试系统实验实物如图10、图11 所示。
图10 测试结果显示界面Fig.10 Web page of displaying test result
图11 远程测试系统试验实物Fig.11 Test object of remote test system
6 结束语
本文研究的整车控制器远程测试系统采用在网页客户端创建测试条例,全部发送到现场终端以后再开始逐个报文的发送,在发送每帧报文的同时记录发送时间,接收到响应报文后也同样记录接收时间并连同对应的请求报文一起传输到云端服务器,以便客户端查看,避免了传统从服务器到现场终端发送报文带来的网络延迟问题。 测试系统通过现场终端和云端服务器通信软件的设计,支持多现场终端连接云端服务器,运行稳定,且实时性高。 与汽车控制器硬件在环系统连接后即可对控制器进行远程测试,实时读取故障码、汽车运行状态信息以便实时监测控制器控制策略的效果,方便调整控制策略。
未来工作中,可以围绕远程向硬件在环系统汽车控制器下载控制策略,远程对控制器参数进行标定以及多任务协同对硬件在环中各控制器控制策略同时开发展开深入的研究。