鄒慶勇,龔元明
(上海工程技術大學 機械與汽車工程學院,上海 201620)
環境污染、能源短缺問題越來越嚴重,電動汽車由于在節能、環保方面的突出優勢越來越得到人們的青睞,傳統車企和新興車企都開始將電動汽車作為未來發展的方向。然而,作為電動汽車控制中心的整車控制器功能復雜、安全性要求嚴格,在軟件開發的過程中涉及大量的測試工作,因此開發周期較長、成本高。為了提高汽車控制器的開發效率,目前,比較常用的方式是采用硬件在環,通過硬件在環仿真測試平臺對控制器不斷測試優化,但僅僅依賴傳統的硬件在環仿真測試平臺,測試用例的創建和測試數據的分析等測試工作往往只能由現場測試人員完成,難以實現更多的人員快速參與到汽車控制器的開發工作中。如果采取遠程測試的方案,則會更大發揮整車控制器硬件在環測試的優越性,提高整車控制器的開發效率。因此,本文提出了一種基于嵌入式Linux的整車控制器硬件在環遠程自動測試系統,主要包括遠程診斷測試中心和現場測試終端,現場測試終端設備通過OBD接口與硬件在環仿真平臺相連。通過該系統,遠程測試人員可以遠程創建診斷測試用例、開展測試。
該遠程測試系統由遠程客戶端、云端服務器和現場測試終端構成。遠程客戶端通過與測試人員的交互實現所需測試內容、CAN通訊配置信息的輸入以及測試結果的顯示。云端服務器程序分為網站后端程序和與現場測試終端通信的TCP服務器程序,網站后端程序用于存儲測試人員的測試命令和測試內容,TCP服務器程序用于及時監測診斷測試指令,做出響應、接收現場測試終端的測試結果并存儲于數據庫中?,F場測試終端用于接收測試內容,根據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接入整車控制器硬件在環仿真平臺,實現與仿真平臺的數據交互。
為了實現對硬件在環仿真平臺中的整車控制器的診斷測試,通過CAN總線接入到仿真平臺中整車控制系統中,通過CANID選擇整車控制器進行測試。由于現場測試終端需要和云端TCP服務器程序通訊,而且需要較快的通信速度,所以現場測試終端選用以太網模塊?,F場測試終端需要提供圖形交互界面,便于用戶操作,實現與云端服務器的連接、測試狀態及測試結果,故需要觸摸顯示屏。
另外,由于該遠程測試系統要求具有較高測試精度,現場測試終端需要具備較強的處理能力以便與控制器快速通信、數據的解析處理及上傳測試結果。為了支持復雜的應用程序,現場測試終端選用嵌入式Linux操作系統,其硬件平臺的結構設計如圖2所示。

圖2 現場測試終端硬件平臺的結構設計Fig.2 The structure design of field test terminal hardware platform
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型號芯片。
現場測試終端和云端服務器程序進行數據的收發采用的是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)。
云端TCP服務器軟件用于為現場測試終端提供完整的診斷測試服務,包括測試內容的發送以及測試結果的接收等。
測試內容發送及測試結果接收模塊程序流程圖如圖5所示。TCP服務器程序接收到現場測試終端查詢是否已啟動測試的命令之后,通過創建子線程定時從相關數據表中查詢用戶的測試啟動命令,一旦檢測到啟動信號,立即向TCP客戶端發送“測試人員已啟動測試”信號,發送成功之后,線程結束。在線程檢測啟動信號的過程中,由于TCP服務端仍然可以正常接收TCP客戶端信息,如心跳包,所以TCP客戶端和服務端可以始終保持正常連接狀態。

圖5 測試內容發送和測試結果接收程序流程圖Fig.5 Flow chart of the procedure for sending test content and receiving test results
“測試人員已啟動測試”信號發送成功后,TCP服務端將接收到獲取測試內容的命令,這時,需要創建子線程,用于發送測試內容等。
遠程客戶端和后端服務器程序采用B/S架構。網站的開發使用Django。Django使用的是MTV架構,即Model、Template和View。其中Model負責網站的數據存儲,通過Modle可以輕松實現網站和數據庫的數據交互;Template下存放html文件,即前端網頁的內容,其和負責網頁顯示樣式的css文件以及負責網頁邏輯功能的js文件共同構成一個完整的前端網頁;View負責對數據的邏輯處理,負責實現前端網頁的跳轉和用戶命令的接收、處理以及結果的反饋。
車輛狀態參數獲取功能測試界面用于創建所要獲取的車輛狀態參數,以及實時顯示車輛的各種狀態。用戶創建好CAN通訊配置信息以及需要讀取的車輛狀態參數后,系統將各狀態參數對應的數據標識符以及讀取車輛狀態的命令等信息發送至云端數據庫中,由TCP服務器程序監測并轉發至現場測試終端。
為了檢測狀態參數獲取功能測試模塊的實際效果,可以通過硬件在環仿真測試平臺模擬駕駛員的操作,改變車輛的狀態參數,然后在遠程測試界面創建將要獲取的車輛狀態參數,通過該遠程測試系統讀取模擬的車輛狀態信息,對比模擬的車輛狀態和遠程測試界面實際獲取的車輛狀態,從而判斷狀態參數獲取功能測試模塊是否滿足要求。
通過硬件在環仿真測試平臺中的仿真模型設置車輛的狀態參數,包括右后門玻璃升降開關狀態、外后視鏡鏡片方向調節開關、中控鎖開關、遙控鑰匙命令、左后門玻璃升降開關狀態等,見表3。

表3 硬件在環仿真測試平臺模擬的車輛狀態信息Tab.3 Vehicle status information simulated by the hardware inthe-loop simulation test platform
在客戶端進入狀態參數獲取功能測試模塊,創建需要讀取的車輛狀態,測試完成后,現場測試終端顯示測試結果,與表3中硬件在環仿真測試平臺模擬的車輛狀態進行對比,結果一致,表明現場測試終端可以實現對硬件在環仿真測試平臺中的整車控制器進行測試,現場測試終端獲取狀態參數功能正常。
現場測試終端接收到車輛狀態參數數據后也會立即上傳至云端服務器,遠程客戶端實時讀取狀態信息并顯示,顯示結果與表3一致,表明遠程客戶端與現場測試終端之間的通訊以及數據解析正常。綜上,該遠程測試系統具備實時查詢車輛狀態參數的功能,可以實現對整車控制器的車輛狀態信息獲取功能的測試。
為了打破地域限制,充分利用硬件在環仿真測試平臺設備,讓更多的人更方便地參與汽車控制器的開發,從而縮短汽車控制器的開發時間,本文詳細設計了一種整車控制系統硬件在環遠程測試系統。該遠程測試系統主要由遠程網頁客戶端、云端服務器、現場測試終端和硬件在環仿真測試平臺構成,主要實現的功能是遠程對整車控制器進行車輛狀態參數獲取功能測試?,F場測試終端通過創建QT應用程序使得操作更加方便,測試過程更加清晰。
未來工作中,考慮遠程下載控制器的控制策略程序到在環仿真系統中,對控制器參數進行標定等展開更加深入的研究。