陳子昊 王超逸 楊超 武利偉 呂小磊 顧金龍
吉利汽車集團有限公司 浙江省寧波市 315336
隨著汽車行業的高速發展,人們對汽車在安全性,舒適性等方面要求越來越高,隨之而來的是關于汽車上ECU模塊的種類越來越多,車型配置越來越復雜,對于EOL電檢系統的腳本開發和驗證的要求也越來越高,現階段大部分的電檢系統的腳本驗證都是通過實車驗證或者是臺架驗證,但是實車驗證和臺架驗證存在以下幾點問題:1.無論是實車驗證或是臺架驗證都是需要實體資源,在緊急情況下可能很難及時得到驗證。2.實車和臺架驗證跟腳本存在需求不同的可能,難以得到驗證。3.驗證效率低,可能并沒有擁有新版腳本的驗證條件。因此,本文提出利用VSPY通過模擬仿真外部ECU的回復,對診斷設備發出的指令進行回復,從而起到對整車電檢系統腳本虛擬驗證的效果。
在汽車總線仿真測試行業中,一般使用最多的為兩款軟件,一是Vector公司的CANOE,另外一個則是英特佩斯公司的VSPY。
Vector公司CANoe是為了開發,測試和分析整個ECU網絡和單個ECU而設計的全面的軟件工具,它能夠參與整個開發流程,它的功能較為豐富多樣,在全球大部分汽車廠和一級供應商得到廣泛的應用,但是其產品分模塊和功能進行銷售,同時其銷售的價格昂貴。
而英特佩斯的VSPY是一款專業的汽車總線仿真測試軟件,專業的CAN/LIN總線分析儀,能夠進行汽車故障診斷,ECU節點仿真開發,ECU自動化測試,總線數據采集,CAN/LIN線解碼/破解,XCP/CCP協議的ECU標定,以及車輛網絡總線數據監測。簡單易學,更重要的是價格只有Vector公司CANoe的價格的1/5,購買軟件就可以獲得全部功能,操作方便,因此,在車輛虛擬驗證臺架的搭建過程中,采用VSPY較為合適,不僅提高整個搭建過程的效率,也降低了搭建的成本。
通過VSPY工具對整車EOL電檢系統虛擬環境的搭建,主要利用到VSPY SPY3版本的診斷報文編輯區、功能測試項編輯區、message模塊編輯區三個模塊編輯區。
診斷報文編輯區中主要分為三個板塊:請求報文編輯區(Receive),響應報文編輯(Transmit),數據庫(database),在虛擬驗證中主要用到Receive功能和Transmit功能。
請求報文編輯區主要的作用是編輯識別并比對設備發出的報文,并與Function Block功能結合,完成對設備報文的驗證,如果驗證比對成功則通過Function Block功能調用發送響應的報文回復。
響應報文編輯區的主要作用是編輯設備請求報文對應的響應報文,通過報文編輯區的數據報文識別設備發送的報文,通過Fuction Block中的腳本,回復響應報文區鏈接的報文。
Function Block功能是整車EOL系統虛擬驗證的重要部分,也是VSPY中常用的腳本控制語言,它既可以在VSPY中運行,也可以用VSPY可將其編譯程CoreMini寫入neoVI硬件產品中脫機運行。目前Function Block大概含有三十條指令,包括常用的邏輯控制、數據記錄、發送報文等。
在測試驗證過程中,通過Function Block實現幾點功能:1.用于判斷外部設備的請求報文,然后發送相應的響應報文。2.設置診斷地址,報文響應時間,響應次數等。3.創建診斷序列,按照一定的順序和發送響應報文。4.動態設置ECU響應的狀態值。
在診斷設備開始發送報文后,我們可以通過Spy Networks-Message進入報文查看界面,所有與報文信息有關的查看均在此界面進行。
在message界面下,可以看查看各個參數,在查看CAN報文即默認狀態的情況下,有以下的主要內容可以查看。

表1 message 可視化內容
虛擬驗證的實現方式為將待驗證的腳本release導入測試診斷儀中,然后通過通訊接口跟搭建好的臺架進行數據交互,設備發出測試的DID,通過接口在虛擬臺架中進行判斷,然后虛擬臺架會根據條件回復相關的回復DID通過通訊接口,反饋到診斷設備中,從而達到虛擬驗證腳本的目的。

圖1 虛擬臺架的指令傳輸結構
如下圖所示,在虛擬驗證系統結構中,主要分為診斷報文編輯區和功能測試項編輯區,在診斷報文編輯區模塊中,通過設置請求報文編輯區的相關的指令進行識別并比對設備發出的相關報文,通過編輯響應報文編輯區中相關數據,來進行存儲相關的回復報文,兩者通過Function Block進行連接,也可以理解為診斷報文編輯區起到整個虛擬驗證系統的數據庫的功能,Function Block從中調用已經編輯好的相關報文用來進行比對或是回復。

圖2 虛擬驗證系統結構
以吉利SS11車型的寫入功能測試協議為例,Function Block的script類型與C語言類似,首先為if語句進行判斷,判斷條件為請求報文編輯區中的設置好的RX_SIM_2EF101模塊,而RX_SIM_2EF101模塊中編輯的報文為2E F1 01,即在lin線的數據流中,如果出現 2E F1 01的報文,即開始執行該條件下的腳本,同理Else If類同于C語言中的功能,從而實現判斷不同指令執行不同的腳本的作用。

圖3 function block 正反饋邏輯圖(部分功能)
Wait Until語句為當前條件循環,類同于C語言中的While語句,控制腳本一直處理等待狀態,直到設置的條件為真才繼續往下執行。
而Transmit語句則是發送響應報文編輯區中設置好的報文,發送到數據流中,對If語句的判斷條件進行回復,而最后的set value則是使這次回復的次數為1次,如果取消這個語句,則腳本會對判斷報文一直循環發送回復報文。發送結束后,跳到End If語句結束腳本的運行。
通過上述操作可以驗證正反饋的腳本驗證,同理,也可以對相關腳本的負反饋也進行驗證,流程圖如下,由此可見,虛擬驗證不僅可以驗證腳本的正反饋,也可以測試負反饋是否會對腳本產生影響。
基于SS11車型 ESC模塊進行測試驗證,正負反饋均驗證成功,驗證總時長約3S,測試結果的部分信息如下圖所示。

圖4 測試正反饋部分結果
以UK lotus為例,當初版腳本導入后,經過實車驗證關于腳本問題平均一周發現并解決的腳本問題為2個,而通過虛擬臺架驗證腳本問題一天平均發現并解決腳本問題為5個,大大提高了腳本的驗證效率,降低了腳本在實車測試運行失敗的風險。
提出一種利用VSPY工具,搭建整車EOL電檢系統腳本驗證的虛擬環境的方法,該方法也可根據編輯不同的報文模塊,完成對電檢腳本不同工位的進行測試。解決了當前缺少實體資源和實體資源與腳本測試條件不符的情況,同時也提高了電檢系統腳本的驗證效率,降低腳本的邏輯錯誤的概率,為后面的基地實車腳本驗證提供了技術支持。