陳思濤 吳長水 羅素云



摘? 要:為了解決某發動機電子控制單元測試軟件的測試效率低下與測試數據管理的問題,本文設計了一種發動機電子控制單元測試軟件。軟件設計基于模塊化思想,利用Windows環境中的C#語言、Visual Studio 2015開發平臺和SQL Server 2005數據庫,實現了具有測試配置簡單、測試數據自動保存、導出等功能的測試軟件。軟件應用表明,該軟件運行穩定、易于操作、提高了發動機電子控制單元測試系統的效率,方便了用戶管理數據。
關鍵詞:發動機電子控制單元;測試;數據庫;軟件
中圖分類號:TP311.5? ? ?文獻標識碼:A
Abstract: This paper proposes an electronic control unit (ECU) test software to improve test efficiency and test data management of a certain engine. Based on the idea of modularization, this software is designed by using C# language in Windows environment, Visual Studio 2015 development platform and the SQL Server 2005 database. The completed test software has functions of simple test configuration, automatic test data saving, export, etc. Application results show that the software runs stably and is easy to operate. It helps to improve the efficiency of the engine ECU test system, and facilitate users to manage data.
Keywords: engine ECU; test; database; software
1? ?引言(Introduction)
隨著技術的發展,電子產品的日益更替,為了驗證汽車電子控制單元(ECU)的控制策略邏輯的正確性,保證產品質量,測試是必不可少的環節。ECU產品復雜度越高,測試越復雜,測試需求也就越多,為了確保測試中覆蓋所有的ECU工況測試點,人工測試已經遠遠不能滿足,并且人工可能會出現錯誤,費時費力。因此采用測試軟件對測試系統進行測試成為人們關注的熱點。測試軟件能有效地將人力測試行為轉為為機器執行測試,具有節省人工、縮短測試時間、提高測試效率等優點[1-3]。比如,中國西南電子技術研究通過利用QT語言和python語言所設計的嵌入式軟件自動化測試及管理系統,有效地提高了測試效率和質量[4]。吉林大學所設計的汽車發動機電子控制單元的測試軟件,利用Visual C++6.0和Dreamwaver兩款編程軟件,結合SCPI指令,提高了發動機ECU測試效率,并可對動態數據進行監控[5]。此外,目前一些測試軟件的開發較多利用圖形化編程軟件LabView和測試管理軟件TestStand[6],通過在LabView中調用TsetStand編寫的測試序列,從而達到自動測試管理,提高測試效率。
本文通過對測試軟件的研究,結合當前應用的發動機電子控制單元測試系統,設計一種測試軟件。該測試軟件通過前臺界面與后臺數據庫進行信息交互,將數據化的東西轉變成圖形化按鈕,使得測試用例的配置簡單易懂,數據方便管理,從而提高發動機電子控制單元的測試效率。
2? ?設計要求(Design requirements)
發動機電子控制單元(ECU)涉及發動機運行狀態,是汽車的核心,其運行狀態的復雜性決定了發動機ECU需要測量的工況點數據眾多,單一靠人工去測量費時費力。因此通過對前人測試軟件的研究,結合目標ECU測試系統,所設計的軟件需具備以下要求:
(1)測試用戶權限可管理,支持多用戶操作,且每個用戶的記錄可保存;
(2)應有足夠的數據空間,可供發動機ECU眾多工況點的存儲;
(3)發動機ECU測試用例配置簡單,測試流程簡易;
(4)測試記錄數據可保存、查詢、導出,方便管理;
(5)測試軟件運行穩定,易于維護和升級,界面簡潔美觀。
3? ?系統框架設計(System framework design)
發動機ECU測試系統軟件的設計主要由六部分組成,分別是用戶登錄管理、通訊連接模塊、測試標準模塊、測試數據配置模塊、測試執行模塊、測試記錄模塊。軟件各模塊的編寫語言采用C#,它是一個面向組件的程序語言[7],易于學習,易于移植,靈活性高,是微軟公司為.NET Framwork量身定做的程序語言。用戶的測試數據管理采用SQL Server 2005,有著加密功能,安全性更高,全局搜索性更強,數據存儲量更大[8]。此外,軟件的開發需要特定的開發環境,采用與C#有著密不可分的Visual Studio 2015平臺進行軟件開發,Visual Studio功能強大,集成了很多.NET程序,能更好的將C#與.NET Framework進行交互,界面設計直觀化、圖形化。圖1為測試軟件的系統架構圖。
4? ?通訊接口設計(Communication interface design)
軟件與硬件數據信息的交互,往往需要一定的通訊方式,常見的TCP\IP通訊、藍牙通訊、CAN通訊等。對于本文所研究的發動機ECU,測試系統采用CAN通訊連接。CAN報文的數據傳輸是基于一定波特率進行的,報文支持11位標準消息幀和29位擴展消息幀[9]。由于絕大多數測試軟件運行在個人電腦上,而自動測試設備往往不具有與個人電腦硬件接口相匹配的CAN接口,無法直接進行CAN報文信息傳輸。通過選用某型號USB-CAN設備,把CAN報文形式轉換為個人電腦可識別的報文信號,從而實現測試軟件與測試系統設備的通訊。USB-CAN設備往往提供API和DLL給用戶進行二次開發,通過對APP和DLL的調用和程序編寫,從而來設計符合用戶自身的CAN通訊接口程序。圖2為CAN通訊接口設計流程圖。
首先使用DWORD CanOpenDevice(DWORD DevType, DWORD DevIndex)函數打開設備,DevType表示設備類型,DevIndex表示設備號;若設備打開成功,使用DWORD__stdcall InitCan(DWORD DevType, DWORD DevIndex, DWORD CANIndex, P_INIT_CONFIG pInitConfig)函數去初始化CAN設備,CANIndex表示第幾路CAN,pInitConfig表示CAN報文設置的結構體,定義報文傳輸形式。結構體內容如下:
{AccCode;AccMask;Reserved;Filter;Timing0;Timing1;Mode;}
AccCode表示驗收碼;AccMask表示屏蔽碼;Reserved表示保留位;Filter表示濾波方式;Timing0、Timing1 組合表示CAN波特率,如Timing0=0x03,Timing1=0x1C,表示波特率為125kbps;Mode表示CAN的模式,包括正常模式、只聽模式。
當CAN配置初始化成功,進而使用DWORD__stdcall StartCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex)函數啟動CAN設備;每進行一次函數調用,對返回值ERR_CAN進行判斷,查看操作是否成功,不成功則重新執行。
當CAN啟動成功,接下來準備CAN信息幀定義,定義一個信息幀結構體CAN_OBJ。結構體內容分別定義了幀ID、時間標識、幀類型、是否為遠程幀、是否為擴展幀、數據長度、數據和額外提供的保留位。當登錄軟件之后,對需要的參數進行定義,啟動CAN即可,這就完成了CAN通訊模塊的設計。圖3為CAN通訊模塊界面。
5? ?數據功能接口設計(Data function interface design)
發動機ECU測試系統的重要一環是體現在數據操作的簡單化和數據自動管理方面,優秀的測試軟件能夠幫助用戶節省大量時間去簡化測試配置、更改數據和管理數據等。數據功能接口的設計是提供用戶在軟件界面配置發動機ECU測試工況點的。在Visual Studio 2015平臺下,通過微軟(Microsoft)公司提供的數據庫訪問組件和對象的功能[10],可以實現前臺界面與后臺數據信息的交互,極大地提高了數據交互的能力,因此只要通過數據配置接口和編寫相關的數據處理代碼,就可完成數據功能接口的設計,從而提高發動機ECU測試系統的測試效率。
5.1? ?ECU電源管理模塊
對于任意自動測試系統來說,能用軟件自動完成的就不要用人工去操作。發動ECU測試設備往往需要電源供電,傳統的方式是使用人工直接去操作開關電源,這樣做既不安全也費時。本文針對發動機ECU測試設備,使用一種串口通訊的方法去控制設備的電源開關。將測試設備電源線連接至程控電源,再通過個人電腦使用USB轉RS232去連接程控電源。通過在測試軟件中發送串口指令,可以控制電源的通斷、電壓等,進而實現自動電源管理。圖4為自動電源管理示意圖。
5.2? ?測試數據用例模塊
由于發動機ECU需要測試點數據眾多,簡易的測試用例配置能節約大量時間,提高測試效率。因此,該軟件通過設計測試標準、配置測試數據、配置分組管理這三步進行測試用例設計。
第一步,測試標準的設計是發動機ECU測試結果的參照,每個測試數據都有一個結果范圍,發動機ECU最終的測試結果由測試標準決定。在后臺數據庫中測試人員導入所有的發動機ECU工況點數據,每個工況點有唯一數據ID,每個數據ID對應不同的測試數據,是后臺數據庫唯一索引依據。當測試人員建立發動機ECU測試標準時,首先通過建立標準測試ID,此ID由代碼自動生成,即為建立一個測試標準總表,這由軟件自動完成。在總表里面,通過下拉選項依次選擇相應的發動機ECU工況點測試數據,即可完成測試標準的建立。
第二步,測試配置的設計是建立在指定型號發動機ECU測試標準之上,只有在一定的測試標準上建立測試數據配置才是有意義的。用戶通過界面下拉選項選擇相應測試標準,并命名不同配置名稱,不同的配置名稱代表不同的發動機ECU工況點數據,然后再通過測試需求選擇發動機ECU測試所需全部數據。測試數據是通過發動機ECU信號類別進行分類,方便測試人員快速查找選擇數據。
第三步,配置分組管理設計是配置具體發動機ECU測試用例。用戶根據第二步配置的發動機ECU數據,輸入測試分組名稱,再依照某型號發動機ECU測試需求及發動機ECU工作順序依次選擇數據,完成測試用例建立。圖5為測試用例設計示意圖。
6? 執行及測試記錄模塊(Execution and test recording module)
6.1? ?執行模塊
軟件的執行模塊和數據記錄往往是軟件功能強大的體現之一。測試過程需要對測試軟件下發的數據和上傳到測試軟件的數據進行解析管理。首先當下發數據時,執行模塊調用底層函數庫中ULONG__stdcall Transmit(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
P_CAN_OBJ pSend, ULONG Len)函數,通過USB-CAN傳輸即可完成測試用例的自動下發。當測試對象ECU及測試設備上傳數據時,測試軟件需要對數據進行解析。在整個測試執行過程中,當一則CAN信息幀上傳到測試軟件時,CAN通訊模塊自動調用USB-CAN的驅動接收函數ULONG__stdcall Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime=-1)將接收到的信息幀傳遞給軟件實時監聽函數tmrRead_Tick(),進而會自動調用CAN接收函數ReadMessages(),該函數通過讀取USB-CAN接收到的報文,將其拆解成各個字段并拼接成字符串,通過函數this.lbxRec.Items.Add(str)賦值給待處理緩存數組lbxRec,為下一次接收準備;然后調用CAN報文分析函數fxMessage(),此函數負責解析報文數據,然后提取出具體數據顯示到軟件執行界面。同時,在該軟件測試執行模塊中,還提供程控電源COM,測試用例導入、可視化電壓、耐久測試開關等,這些都為發動機ECU測試提供了便利。圖6為執行界面。
6.2? ?測試記錄模塊
當測試結束時,完整的測試記錄的分析、保存和導出功能,可以為測試人員對測試設備進行數據統計和分析提供方便。測試記錄保存方式以時間測試序列進行保存,每結束一次測試就保存一次,保存分為主表項保存和明顯表保存。當查詢記錄時,可根據時間日期進行查詢,方便快速尋找。查詢結果先顯示主表項,主表項為發動機ECU測試流水號,當點擊某一主表項時,顯示對應的測試明細表,明細表記錄了測試的配置。當需要導出記錄時,軟件通過調用第三方插件Interop.Excel.dll可分別導出主表和明細表。同時,測試記錄添加了測試分析功能,可以對某時間段的測試對象合格率進行統計。圖7為測試記錄分析界面。
7? ?軟件應用(Software application)
為了測試軟件的運行情況,對某一型號的發動機ECU進行測試。測試人員首先進行硬件連接,包括測試對象連接、測試接口連接和通訊連接;然后開啟軟件,操作流程如下:用戶登錄→CAN通訊連接→測試標準配置→測試用例配
置→測試用例選擇→測試執行→測試記錄查詢并分析結果。測試人員按此操作流程只需要關心測試數據的配置,設計好功能測試順序,確定對哪些功能進行測試,而不需要考慮如何更改數據,如何檢測功能。測試軟件還支持批量測試,節省了大量的人力。此外,測試完成后,數據可自動保存,方便測試人員查詢。應用表明,該測試軟件有效地提高了測試效率,節省了發動機ECU的開發周期。表1列出了發動機ECU自動化測試前后對比。分析可知,整體測試效率提高了73.1%。
8? ?結論(Conclusion)
本文充分利用了Windows平臺的C#編程語言、SQL Server 2005數據庫及Visual Studio 2015開發環境各自的優點,基于軟件設計模塊化的思想,從設計需求出發,依次設計了通訊模塊、數據模塊、執行模塊及測試記錄模塊,最后開發出了測試配置簡單,流程操作簡便,測試記錄自動管理的發動機ECU自動測試系統軟件。同時,經過實驗證明,該軟件能極大地提高發動機ECU自動化測試系統的效率。軟件模塊化的設計方便后期維護與升級,但是該軟件存在的問題是個人電腦必須啟用SQL Server服務,否則測試軟件將不能使用,這也是該方法設計軟件的缺陷。在以后對軟件進行升級過程中,將考慮采取其他方法進行數據交互。
參考文獻(References)
[1] 陳佐,張懷相,方景龍.嵌入式軟件自動化測試技術[J].計算機工程與設計,2018,39(10):3125-3131.
[2] 呂名雪.某嵌入式軟件自動化測試平臺的設計與實現[D].北京工業大學,2016.
[3] 陶雪華.汽車電子控制器嵌入式自動化測試系統的開發設計[J].內燃機與配件,2018(20):237-238.
[4] 陽長永,王月波,代林.嵌入式軟件自動化測試及管理系統研究[J].計算機測量與控制,2019,27(09):57-60;75.
[5] 吳昊,李一鳴,付成偉,等.汽車發動機電子控制單元的自動測試系統開發[J].汽車技術,2014(05):35-39.
[6] 孫立行.基于PXI和虛擬儀器的高壓共軌ECU自動測試系統[D].浙江大學,2018.
[7] 于國防,李劍,張玉杰.C#語言Windows程序設計[M].北京:清華大學出版社,2015:2-3.
[8] Devraj, G.P. Dixit, P.K. Katiyar, et al. Design and implementation of on-line data submission and retrieval system for coordinated research trials in food legumes[J]. Legume Research, 2016,39(3):442-447.
[9] 李秀娟,徐惠鋼,謝啟.基于虛擬儀器技術的發動機ECU自動測試系統[J].機床與液壓,2015,43(21):138-141.
[10] Visual Studio Document center[Z]. https://docs.microsoft.com.