基于嵌入式Linux的整车控制器硬件在环远程测试系统的设计
2022-07-15邹庆勇龚元明
邹庆勇,龚元明
(上海工程技术大学 机械与汽车工程学院,上海 201620)
0 引 言
环境污染、能源短缺问题越来越严重,电动汽车由于在节能、环保方面的突出优势越来越得到人们的青睐,传统车企和新兴车企都开始将电动汽车作为未来发展的方向。然而,作为电动汽车控制中心的整车控制器功能复杂、安全性要求严格,在软件开发的过程中涉及大量的测试工作,因此开发周期较长、成本高。为了提高汽车控制器的开发效率,目前,比较常用的方式是采用硬件在环,通过硬件在环仿真测试平台对控制器不断测试优化,但仅仅依赖传统的硬件在环仿真测试平台,测试用例的创建和测试数据的分析等测试工作往往只能由现场测试人员完成,难以实现更多的人员快速参与到汽车控制器的开发工作中。如果采取远程测试的方案,则会更大发挥整车控制器硬件在环测试的优越性,提高整车控制器的开发效率。因此,本文提出了一种基于嵌入式Linux的整车控制器硬件在环远程自动测试系统,主要包括远程诊断测试中心和现场测试终端,现场测试终端设备通过OBD接口与硬件在环仿真平台相连。通过该系统,远程测试人员可以远程创建诊断测试用例、开展测试。
1 整车控制器硬件在环远程测试系统概述
该远程测试系统由远程客户端、云端服务器和现场测试终端构成。远程客户端通过与测试人员的交互实现所需测试内容、CAN通讯配置信息的输入以及测试结果的显示。云端服务器程序分为网站后端程序和与现场测试终端通信的TCP服务器程序,网站后端程序用于存储测试人员的测试命令和测试内容,TCP服务器程序用于及时监测诊断测试指令,做出响应、接收现场测试终端的测试结果并存储于数据库中。现场测试终端用于接收测试内容,根据UDS协议和CAN通讯配置参数构建诊断测试CAN报文,通过与硬件在环仿真平台进行数据的交互从而实现对整车控制器的诊断测试。
硬件在环远程测试系统的整体结构如图1所示。
图1 硬件在环远程测试系统整体结构图Fig.1 The overall structure of the hardware in-the-loop remote test system
硬件在环仿真系统选用dSPACE平台,德国dSPACE公司研发的dSPACE实时仿真系统准确稳定、操作简便、功能强大。该整车控制器硬件在环仿真测试系统的主要功能是通过仿真模型等模拟整车控制器的运行环境,接收控制器的输出信号,为控制器提供所需的输入信号。硬件在环仿真平台有OBD接口,现场测试终端可以通过CAN转OBD接入整车控制器硬件在环仿真平台,实现与仿真平台的数据交互。
2 现场测试终端设计
为了实现对硬件在环仿真平台中的整车控制器的诊断测试,通过CAN总线接入到仿真平台中整车控制系统中,通过CANID选择整车控制器进行测试。由于现场测试终端需要和云端TCP服务器程序通讯,而且需要较快的通信速度,所以现场测试终端选用以太网模块。现场测试终端需要提供图形交互界面,便于用户操作,实现与云端服务器的连接、测试状态及测试结果,故需要触摸显示屏。
另外,由于该远程测试系统要求具有较高测试精度,现场测试终端需要具备较强的处理能力以便与控制器快速通信、数据的解析处理及上传测试结果。为了支持复杂的应用程序,现场测试终端选用嵌入式Linux操作系统,其硬件平台的结构设计如图2所示。
图2 现场测试终端硬件平台的结构设计Fig.2 The structure design of field test terminal hardware platform
2.1 现场测试终端硬件选型
2.1.1 嵌入式微处理器的选择
基于Cortex-A7内核的MCIMX6Y2CVM05AB处理器是恩智浦公司推出的一款高性能的工业级处理器,该处理器的主频高达800 MHz,带有2个FlexCAN、1个RGB_LCD控制器、两个10/100 M以太网MAC控制器等,还提供多种内存接口,包括DDR3、NAND flash、EMMC接口等。本文通过MMDC接口和EMMC接口扩展了512 MB的DDR3内存和8 G的存储Flash。
2.1.2 存储器的选择
(1)非易失存储器。为了使搭建的硬件平台具有更好的性能,需要为处理器搭配一个存储芯片,以便于存储数据和操作系统,常见的非易失性存储芯片有NAND Flash、NOR Flash和EMMC等。其中,NOR Flash写入和擦除速度较低,NAND Flash写入和擦除速度较快,但是其对处理器的要求较高,数据传输时常常需要主机具备相应的控制器。为了充分发挥NAND Flash的优点,同时又不对处理器提出特殊要求,本文选用将NAND FLASH和控制芯片封装在一块的EMMC作为非易失存储器。EMMC内部分为3部分,分别为Flash Memory、Flash Controller和Host Initerface。
(2)内存芯片。MCIMX6Y2CVM05AB处理器自带的RAM比较小,只有128 KB的OCRAM,故需要外接一个RAM芯片。MCIMX6Y2CVM05AB处理器自带MMDC接口,可以方便地实现外接DDR3L或DDR3存储芯片,综合考虑存储芯片的性能和使用电压,选择DDR3L存储芯片作为外接的RAM芯片。
2.1.3 以太网模块
MCIMX6Y2CVM05AB处理器内部集成了两个MAC控制器,系统选择使用第二个MAC,支持10/100 Mbit/S的动态配置,可以实现3层网络加速,支持加速的网络协议包含TCP和IP等;实现数据的收发需要外加一个PHY芯片,PHY芯片选择LAN8720A,该芯片一端和MAC控制器相连,另一端通过变压器和RJ45相连。MAC控制器和PHY芯片的数据传输分为MII接口和RMII接口。由于MII接口所需信号线较多,比RMII接口多出9根信号线,本系统选择了RMII接口。另外,MAC控制器还需要对PYH芯片进行配置和寄存器读取,实现这部分功能的通信接口是MDIO接口。
芯片上MAC和LAN8720A的连接框图如图3所示。
图3 MAC和LAN8720的连接框图Fig.3 Connection block diagram of MAC and lan8720
2.1.4 LCD显示器
MCIMX6Y2CVM05AB处理器自带有一个显示屏接口eLCDIF,该接口支持RGB接口的LCD显示屏。另外,该处理器自带的显示屏接口支持RGBLCD的DE模式和VSYNC模式,可以实现数据的高速传输。
RGBLCD由RGB三原色像素构成,不同比重的RGB组合成不同的颜色,当全亮时为白色,全暗时为黑色。LCD显示器显示信息丰富、功耗低,选用星翼电子推出的4.3寸电容触摸显示屏,分辨率为800×480,并行24位RGB接口,工作芯片为GT9147。
2.1.5 CAN通信模块
CAN全称Controller Area Network,广泛应用于汽车电子、工业自动化等方面。CAN作为一种串行通信方式,数据的传输稳定可靠、传输速率块、传输距离远。CAN通信最高速度达到1 Mbps,最远传输10 KM。实现CAN通信需要CAN控制器和CAN收发器共同完成。MCIMX6Y2CVM05AB处理器内部已经包含了CAN控制器FlexCAN,只需外加一个CAN收发器即可。本系统中,CAN收发器选用的是耐用、稳定性好并且传输速率快的TLE6250GV33型号芯片。
2.2 现场测试终端软件设计
现场测试终端和云端服务器程序进行数据的收发采用的是TCP Socket通讯。Socket是一种客户端和服务器程序间进行通信的机制,为TCP/IP通信协议提供了独立的网络编程接口,应用程序通过调用这些网络编程接口实现计算机之间的数据传输。
现场测试终端软件设计主要的功能模块有:
(1)测试内容的接收和存储模块;
(2)现场测试终端对硬件在环仿真测试平台中的整车控制器进行诊断测试和结果上传模块。
现场测试终端软件流程图如图4所示。
图4 现场测试终端软件流程图Fig.4 Flow chart of software for field test terminal
2.2.1 存储模块设计
Sqlite数据库体积小、性能稳定且使用简单,是非常适合嵌入式设备的轻量数据库。Sqlite程序与测试终端应用程序共用一个进程空间,使用方便简单。另外,现场测试终端的应用程序使用QT编写,QT是一种跨平台的C++图形用户界面应用程序开发框架,具有丰富的模块,其中QT SQL模块可以方便地实现对Sqlite数据库的各种操作。在QT内借助QtSql模块所包含的各种类来实现对Sqlite数据库的各种操作。因此,现场测试终端选择Sqlite作为存储测试数据的数据库。
2.2.1.1 CAN通讯配置参数表
ECU动态数据流获取功能测试模块使用的CAN通讯配置参数表的字段主要有帧类型、数据标识符个数和状态参数上传周期period等,见表1。
表1 CAN通讯配置参数表Tab.1 CAN communication configuration parameter table
2.2.1.2 DID数据表
DID数据表主要存储获取的状态参数对应的数据标识符,见表2。
表2 DID数据表Tab.2 DID data sheet
2.2.2 现场测试终端诊断测试模块设计
现场测试终端接收全部测试内容后,会向云端TCP服务端程序发送存储完毕信号,云端服务器接收到该信号,将向测试终端发送“所有测试信息都已发送并开启测试”命令,此时,诊断测试过程开始。
诊断测试模块由子线程执行相应诊断测试函数实现,满足远程测试人员随时执行停止测试和重新测试等的要求,使得系统更加灵活。
当用户退出测试以后,软件会清理测试过程中创建的数据表、初始化仿真测试平台,关闭负责诊断测试的子线程,最后向云端发送退出完成回复。
整车控制器通过不断获取汽车的状态信息,可以更好的实现对汽车的控制,还可以将一部分状态数据提供给驾驶员,比如:转速,车速等使其对汽车的运行状态有更清晰的了解。因此,整车控制器应能够及时准确地获取汽车的状态参数,通过车辆状态参数获取功能测试即可判断VCU是否可以实现这一重要功能。在对VCU状态参数的获取功能进行测试时,主要使用的数据传输服务为ReadDataByIdentifier(0x22)。
3 云端TCP服务器软件设计
云端TCP服务器软件用于为现场测试终端提供完整的诊断测试服务,包括测试内容的发送以及测试结果的接收等。
测试内容发送及测试结果接收模块程序流程图如图5所示。TCP服务器程序接收到现场测试终端查询是否已启动测试的命令之后,通过创建子线程定时从相关数据表中查询用户的测试启动命令,一旦检测到启动信号,立即向TCP客户端发送“测试人员已启动测试”信号,发送成功之后,线程结束。在线程检测启动信号的过程中,由于TCP服务端仍然可以正常接收TCP客户端信息,如心跳包,所以TCP客户端和服务端可以始终保持正常连接状态。
图5 测试内容发送和测试结果接收程序流程图Fig.5 Flow chart of the procedure for sending test content and receiving test results
“测试人员已启动测试”信号发送成功后,TCP服务端将接收到获取测试内容的命令,这时,需要创建子线程,用于发送测试内容等。
4 远程客户端设计
远程客户端和后端服务器程序采用B/S架构。网站的开发使用Django。Django使用的是MTV架构,即Model、Template和View。其中Model负责网站的数据存储,通过Modle可以轻松实现网站和数据库的数据交互;Template下存放html文件,即前端网页的内容,其和负责网页显示样式的css文件以及负责网页逻辑功能的js文件共同构成一个完整的前端网页;View负责对数据的逻辑处理,负责实现前端网页的跳转和用户命令的接收、处理以及结果的反馈。
车辆状态参数获取功能测试界面用于创建所要获取的车辆状态参数,以及实时显示车辆的各种状态。用户创建好CAN通讯配置信息以及需要读取的车辆状态参数后,系统将各状态参数对应的数据标识符以及读取车辆状态的命令等信息发送至云端数据库中,由TCP服务器程序监测并转发至现场测试终端。
5 系统功能测试与验证
为了检测状态参数获取功能测试模块的实际效果,可以通过硬件在环仿真测试平台模拟驾驶员的操作,改变车辆的状态参数,然后在远程测试界面创建将要获取的车辆状态参数,通过该远程测试系统读取模拟的车辆状态信息,对比模拟的车辆状态和远程测试界面实际获取的车辆状态,从而判断状态参数获取功能测试模块是否满足要求。
通过硬件在环仿真测试平台中的仿真模型设置车辆的状态参数,包括右后门玻璃升降开关状态、外后视镜镜片方向调节开关、中控锁开关、遥控钥匙命令、左后门玻璃升降开关状态等,见表3。
表3 硬件在环仿真测试平台模拟的车辆状态信息Tab.3 Vehicle status information simulated by the hardware inthe-loop simulation test platform
在客户端进入状态参数获取功能测试模块,创建需要读取的车辆状态,测试完成后,现场测试终端显示测试结果,与表3中硬件在环仿真测试平台模拟的车辆状态进行对比,结果一致,表明现场测试终端可以实现对硬件在环仿真测试平台中的整车控制器进行测试,现场测试终端获取状态参数功能正常。
现场测试终端接收到车辆状态参数数据后也会立即上传至云端服务器,远程客户端实时读取状态信息并显示,显示结果与表3一致,表明远程客户端与现场测试终端之间的通讯以及数据解析正常。综上,该远程测试系统具备实时查询车辆状态参数的功能,可以实现对整车控制器的车辆状态信息获取功能的测试。
6 结束语
为了打破地域限制,充分利用硬件在环仿真测试平台设备,让更多的人更方便地参与汽车控制器的开发,从而缩短汽车控制器的开发时间,本文详细设计了一种整车控制系统硬件在环远程测试系统。该远程测试系统主要由远程网页客户端、云端服务器、现场测试终端和硬件在环仿真测试平台构成,主要实现的功能是远程对整车控制器进行车辆状态参数获取功能测试。现场测试终端通过创建QT应用程序使得操作更加方便,测试过程更加清晰。
未来工作中,考虑远程下载控制器的控制策略程序到在环仿真系统中,对控制器参数进行标定等展开更加深入的研究。