席剛剛
(同濟大學,上海 201800)
EPS(Electronic Power Steering,電子助力轉(zhuǎn)向)由機械轉(zhuǎn)向系統(tǒng)加上轉(zhuǎn)矩傳感器、車速傳感器、電子控制單元、減速器、電動機等組成。它在傳統(tǒng)機械轉(zhuǎn)向系統(tǒng)的基礎(chǔ)上,根據(jù)方向盤上的轉(zhuǎn)矩信號和汽車的行駛車速信號,利用電子控制裝置使電動機產(chǎn)生相應(yīng)大小和方向的輔助動力,協(xié)助駕駛員進行轉(zhuǎn)向操作,作為整車安全件之一,要通過測試來確保軟件的性能。壓力測試是給軟件不斷加壓,強制其在極限情況下的運行,觀察它可以運行到何種程度,從而發(fā)現(xiàn)性能缺陷。通過搭建與實際環(huán)境相似的測試環(huán)境,通過測試程序在同一時間內(nèi)或某一段時間內(nèi),向系統(tǒng)發(fā)送預(yù)期數(shù)量的交易請求、測試系統(tǒng)在不同壓力情況下的效率狀況,以及系統(tǒng)可以承受的壓力情況。然后做針對性的測試與分析,找到影響系統(tǒng)性能的瓶頸,評估系統(tǒng)在實際使用環(huán)境下的效率情況,評價系統(tǒng)性能以及判斷是否需要對應(yīng)用系統(tǒng)進行優(yōu)化處理或結(jié)構(gòu)調(diào)整。本文結(jié)合實際案例,在響應(yīng)多個診斷指令時EPS負反饋,響應(yīng)代碼是72,截取部分診斷指令,對EPS 進行壓力測試,然后對測試結(jié)果處理,檢查是否存在軟件缺陷。
需要準備好12 V 電源,集成CANoe licence 的CAN 盒一個,EPS 樣件,EPS 所配套的電源線束和通信線束,終端電阻,測試電腦一臺,按照圖1 進行連接(網(wǎng)絡(luò)喚醒)。
圖1 測試連接
由上位機軟件自動發(fā)出診斷請求,等待EPS 給出響應(yīng)后,判斷是否為正響應(yīng),是正響應(yīng)繼續(xù)進行下個請求,直到所有的請求全部發(fā)完。診斷流程如圖2 所示。
測試案例基于CANoe環(huán)境,利用CAPL 語言進行編程,本次診斷壓力測試案例開發(fā)中,主測試Case 包含5 個事件,依次分別是進入擴展會話模式、向EPS 請求安全認證種子、向EPS 發(fā)送安全認證key、寫入?yún)?shù)1、寫入?yún)?shù)2、寫入?yún)?shù)3、寫入?yún)?shù)4。
/*cycle send*/
for(i=0;i<10;i++)
{
EnterExtendSession();
RequestSecuritySeed();
SendSecurityKey();
WriteParameter1();
WriteParameter2();
WriteParameter3();
WriteParameter4();
testWaitForTimeout(2000);
}
實際上整車廠造車時涉及到的診斷服務(wù)遠超過這些,本次只截取其中某個工位涉及到的診斷服務(wù),對其進行連續(xù)循環(huán)測試,同時發(fā)送整車級報文。設(shè)定總線負載率達到60%以上(通過發(fā)送小周期報文實現(xiàn)),驗證EPS 在惡劣工況下能否響應(yīng)診斷工具的請求,檢查軟件的表現(xiàn)性能(圖3)。
基于不同的ECU(Electronic Control Unit,電子控制單元),在循環(huán)寫入?yún)?shù)時,需要注意有些ECU 在連續(xù)寫入相同值時不響應(yīng)請求,基于這樣的軟件邏輯,本次Case 中連續(xù)寫入值不同,采用交替值寫入,以寫入?yún)?shù)1 請求函數(shù)為例,對請求服務(wù)的第8個字節(jié)進行交替賦值。此處的變量i 在主測試已經(jīng)定義,并在for 循環(huán)中進行自加加運算,結(jié)合請求函數(shù),能夠?qū)崿F(xiàn)連續(xù)兩次寫入的值不同。
i=i%2;
if(i==0)
{diagTX.byte(7)=0x2B;}
if(i==1)
{diagTX.byte(7)=0x2C;}
為了詳細觀察EPS 表現(xiàn),在測試完成后需要對測試數(shù)據(jù)進行處理,測試目的是為了檢測軟件在極限工況下的表現(xiàn)0 根據(jù)需求,EPS 在收到請求后750 ms 內(nèi)判斷是否寫入,寫入成功發(fā)送正響應(yīng),寫入不成功發(fā)送負響應(yīng),因此在出現(xiàn)負響應(yīng)時檢查請求到響應(yīng)之間的時間間隔,測試數(shù)據(jù)為總線數(shù)據(jù)(圖4)。借助spy3 工具,把CANoe 記錄的數(shù)據(jù)轉(zhuǎn)化成.CSV 文件,然后在Excel 里面打開(圖5),再利用公式if(P3=7F,(B3-B2)*1000,0)計算,然后用max 篩選出最大的時間,判斷其是否超過750 ms。
圖2 診斷流程
圖3 總線負載
圖4 總線數(shù)據(jù)
圖5 測試數(shù)據(jù)
壓力測試的目的是檢測軟件在極端工況下的表現(xiàn)情況,在供應(yīng)商處檢查出問題,避免在整車廠出現(xiàn)問題,測試時必要條件是模擬整車環(huán)境,盡可能做到與產(chǎn)線的工況一致,但為了增加工況的惡劣性,可以適當增加總線負載率。另外,在每一個請求之間的時間間隔應(yīng)盡可能小,這樣測試效果才會顯著,但是必須要等到上一個請求服務(wù)得到反饋之后才能請求第二幀,否則測試將失去意義。由于測試數(shù)據(jù)較大,因此處理時一定要采用快捷高效準確的方式。