關鍵詞:嵌入式系統、軟體在環(SiL)、測試、生命週期
01.簡介
當前,嵌入式系統開發的大趨勢為透過軟體實現大量的硬體功能,這導致軟體的複雜程度顯著上升——程式碼開發成本和風險也成倍增加。複用已有系統中的軟體元件是改進嵌入式系統生命週期的一種可能的解決方案,對程式碼的可移植性和可測試性有較高要求。
測試的複雜度和成本與程式碼量正相關,儘早發現可能存在的錯誤可以避免後續階段的成本。考慮到軟體開發過程的“V”型模型,在軟體模組測試(Module tests)和軟體整合測試(Integration tests)階段應該使用 SiL(Software-in-the-Loop)環境。
本文的主要目的在於橫向對比應用HiL和SiL測試環境所獲得的結果,以證明SiL測試的可靠性。本文被測嵌入式系統針對英飛凌C167CR微控制器開發,作業系統選用的是典型的實時作業系統(RTOS,Real Time Operating System)OSEK 作業系統,被測功能為控制直流電機的轉速。
02.實踐1:HIL測試
硬體在環(HiL)測試是一種無損檢測環境,常見的被測裝置(Device Under Test, DUT)一般為控制器硬體,如整車控制器VCU(Vehicle Control Unit)、電池管理系統BMS(Battery Management System)。本實踐的HiL測試框圖如下圖所示,帶有DUT的介皮膚是使用NI PCI 6251高速多功能資料採集板完成。
本實踐中,HiL測試由三部分組成:
-
主機PC(HOST PC):直流電機模型由MATLAB/Simulink實現,並使用Real-Time Workshop和xPC Target編譯為xPC實時核心。
-
目標計算機:直流電機模型透過實時約束執行,模擬訊號透過介皮膚卡轉換為物理訊號。
-
嵌入式硬體系統:被測控制演算法。
A:直流電機模型
用於直流電動機建模的方程如下所示:
其中,Ia為電機電流,Va為電機電壓,Ωm為角速度,Ra為終端電阻,La為終端電感,J為慣性,b為摩擦係數,Km為扭矩常數,Ts為取樣週期,T為電機扭矩,TL為負載扭矩,Vb為反電動勢電壓。
基於上述公式的MATLAB/Simulink離散模型實現如下圖所示:
B:控制演算法實現
本實踐所採用的控制演算法選擇的是工業應用最為廣泛的PID演算法(比例積分微分)。使用積分項的雙線性變換法和微分項的反向變換法,即可從下列公式中獲得PID演算法的遞迴離散形式:
其中,K是比例常數,τi是積分常數,τd是導數常數,Ts是取樣週期。
控制演算法是在基於OSEK實時作業系統的10毫秒任務上實現的。角速度的測量方法如文獻[2]所述,使用 HALL感測器,在1Hz至10kHz範圍內的絕對精度小於1Hz。
03.實踐2:SIL測試
本實踐的SiL測試基於OSEK實時作業系統的模擬,測試框圖如下圖所示:
-
OSEK實時作業系統、被測控制演算法程式碼和XCP模組一起封裝成一個S函式。
-
模擬作業系統、底層驅動程式、XCP和S函式與MATLAB/Simulink模型中的直流電機模型形成閉環。
-
GUI:Graphical User Interface,圖形使用者介面。
XCP主要用於測量和校準嵌入式系統變數,所選用的標定工具為CANApe,也用於保持資料測量值與在HiL環境中所獲得的資料測量值一致。透過這種方式可以輕鬆比較以證明SiL測試的可靠性。
選用四個非搶佔式任務:10ms、20ms、40ms和80ms。任務啟動延遲及其時間排程如下圖所示:
SiL測試中,每個任務的執行時間被認為等同於模擬步長,因此不會出現某個任務執行時間過長而影響另一個任務的情況,無需採取特別措施。
外圍裝置等與處理器相關的一切都在S函式內模擬;硬體驅動器和訊號調節電路透過MATLAB/Simulink 模型中的附加系統進行模擬;PWM驅動器模型和HALL感測器模型已經實現。Simulink模型如下圖所示:
04.對比結果與結論
在完成SiL和HiL測試環境的搭建後,對比同一條件下的測試結果即可證實SiL的可靠性。為此,使用相同的引數對控制演算法進行校準,將角速度設定為1000rpm。透過對比角速度反饋值(模擬步長均為200us)可知,兩種測試結果完全相同,SiL的可靠性得到證實。
然而,透過測試不同步長下的實際模擬執行時間可知,模擬的時間越短,實際執行時間就越長,因此必須權衡模擬精度和實際執行時間,選擇一個折中、合適的模擬步長。顯然,SiL環境下主機PC的效能對實際執行時間的影響很大。
模型的複雜性同樣會對實際執行時間產生影響。SiL最大的優點在於不會受到時間約束和模型複雜性的約束,而HiL測試下,使用複雜模型則可能會導致資料損壞,能夠使用HiL測試的模型複雜性與真實HiL硬體的處理能力和可用資源密切相關,正確的模型選擇便成為HiL測試的難點。
綜上所述,SiL測試對於嵌入式程式碼測試是可靠的。最大的缺點與模擬步長引數有關:實現模型的精度越高,執行時間越長。因此得出結論:
-
當測試目標為與硬體相關的引數時,如透過測量作業系統的空閒任務來測量處理器負載、任務啟用延遲、任務執行時間值、中斷鎖定時間、資源鎖定時間等,SiL測試是不可靠的。
-
當測試目標為軟體功能時,SiL是可靠的。
此外,模組之間的介面也可以在整合階段進行測試。
參考文獻
[1] Muresan M, Pitica D. Software in the loop environment reliability for testing embedded code[C]//2012 IEEE 18th international symposium for design and technology in electronic packaging (SIITME). IEEE, 2012: 325-328.
[2] Muresan M, Pitica D. Software in the loop environment reliability for testing embedded code[C]//2012 IEEE 18th international symposium for design and technology in electronic packaging (SIITME). IEEE, 2012: 325-328.