Simulink是美國Mathworks公司推出的一種強(qiáng)大的可視化仿真工具,現(xiàn)已應(yīng)用到包括汽車、航空、工業(yè)自動化等領(lǐng)域。Simulink不僅提供了多種特定功能的模塊,還提供Simulink Function,F(xiàn)unction Caller等模塊,便于用戶在開發(fā)過程中,定制化一些常用函數(shù),擺脫了Simulink中固有Block的功能限制,有效的提升了開發(fā)效率。
這個功能無疑十分強(qiáng)大,但這卻給測試工作提出了很大的挑戰(zhàn):受軟件開發(fā)架構(gòu)限制,F(xiàn)unction的定義可能放置在軟件底層,以便于上層軟件進(jìn)行多次調(diào)用。但當(dāng)用戶對上層軟件的單元層級進(jìn)行測試時,往往面臨著無法調(diào)用底層定義的Function的窘態(tài)(有槍無彈)。此外,當(dāng)客戶在測試底層單元模塊時,由于Function只有定義沒有被調(diào)用,往往無法對Function的內(nèi)部邏輯進(jìn)行測試(有彈無槍)。
針對這兩種測試場景,自動化的軟件動態(tài)測試工具——TPT提供了便捷的解決方案。
圖1模型
有槍無彈:
顧名思義,空有Function Caller而沒有Function。如圖1所示,如果要測試Calculate這個單元,這個單元調(diào)用了Function,而Function卻定義在更底層,針對這種情況,TPT支持函數(shù)的插樁,提供Function Caller的接口,模擬函數(shù)的返回值。
TPT支持函數(shù)的插樁,在對這種只有Caller沒有Function的層級(如圖2)進(jìn)行測試時,非常高效。在TPT的Platform Configuration中提供了這樣的選項:Simulink Functions,如圖3:
圖2單元模塊內(nèi)部結(jié)構(gòu)
圖 3 Simulink Functions
回到圖4平臺配置窗口,加載好模型后 Import模型接口, TPT將以 server形式識別 callFunc函數(shù),如圖5。
圖 4 Import模型接口、參數(shù)
圖 5識別callFunc函數(shù)
該函數(shù)會被直接加載到 Functions中, 以便于在編寫測試用例時調(diào)用。
圖 6 callFunc被加載到Functions中
可以在 Declaration Editor中添加一個 channel形式的本地變量return_Func模擬函數(shù)的返回值,然后編寫圖 8所示用例來驗證:
圖 7添加channel本地變量
圖 8測試用例
運(yùn)行結(jié)果和信號曲線如下圖所示,compare是簡單的評估,結(jié)果可見模型的輸出符合期望,由信號曲線可以觀察到local量的值即函數(shù)的輸出值。
圖 9測試結(jié)果
圖 10 Signal Viewer觀測結(jié)果
有彈無槍:
上述方法并不能測到函數(shù)內(nèi)部的邏輯,而實際上函數(shù)可以定義在模型的底層,如圖1所示的模型wind_drag,F(xiàn)unction定義在底層,沒有對應(yīng)的Function Caller,這就是有“彈”而無“槍”了。在單元測試階段想要測試該函數(shù)的邏輯,因其沒有相關(guān)的接口信息,測試工作無疑非常困難。
圖 11被測函數(shù)邏輯
自動化測試工具TPT提供了m文件的接口,可以在配置測試環(huán)境或者測試執(zhí)行過程中進(jìn)行一些預(yù)處理,這就為測試該函數(shù)邏輯提供了絕佳的途徑。
圖 12 TPT提供的m文件接口
此處用m腳本編寫一個函數(shù),可以在TPT中實現(xiàn)對Function的調(diào)用。該函數(shù)主要有兩個參數(shù):
參數(shù)1:測試層級,可直接用TPT環(huán)境變量’${tpt.matlab.block.name}’
參數(shù)2:被調(diào)函數(shù),例如:' F = wind_drag(Density,Speed) '
可以在 TPT\Platform Configuration\Original Model中可以編寫相應(yīng)的代碼來加載m文件,并使用simulink_function_caller函數(shù)對模型中的SimulinkFunction進(jìn)行調(diào)用,這無疑大大提升了測試的效率。
圖 13 m文件加載及函數(shù)調(diào)用
圖 14模型中自動配置FunctionCaller
依次在TPT中配置測試環(huán)境,導(dǎo)入接口時即可發(fā)現(xiàn)模型中出現(xiàn)了Simulink Function調(diào)用的相關(guān)接口信息。上一步中加載的m文件,實現(xiàn)了自動創(chuàng)建所測Function對應(yīng)接口信息,以及Function Caller模塊的功能,這些新建的模塊和Function在同一層級,這樣就能夠?qū)imulink Function邏輯進(jìn)行測試。
圖 15導(dǎo)入接口信息
編寫測試用例來測試該函數(shù):
圖 16測試用例
該函數(shù)是簡單的計算風(fēng)阻的函數(shù),,其中C取0.3,S取2.05,編寫評估驗證該用例:
圖 17測試評估
測試結(jié)果顯示模型輸出與函數(shù)運(yùn)算結(jié)果一致:
圖 18測試結(jié)果
兩者的信號曲線也是完全重合:
圖 19信號曲線
總結(jié)
本文介紹了使用TPT測試Simulink Function模塊的兩種方案,TPT還支持MATLAB Function的測試。
PikeTec公司是全球知名的基于模型的嵌入式系統(tǒng)測試工具TPT的軟件供應(yīng)商,總部位于德國柏林。北匯信息作為PikeTec在中國的獨(dú)家合作伙伴,致力于幫助中國客戶提升嵌入式控制系統(tǒng)的開發(fā)效率。目前,TPT已被眾多國內(nèi)知名主機(jī)廠和零部件企業(yè)認(rèn)可,在新能源(VCU/BMS/MCU)以及ADAS等領(lǐng)域中被廣泛應(yīng)用。
-
TPT
+關(guān)注
關(guān)注
0文章
23瀏覽量
6980
發(fā)布評論請先 登錄
相關(guān)推薦
評論