Simulink是美國(guó)Mathworks公司推出的一種強(qiáng)大的可視化仿真工具,現(xiàn)已應(yīng)用到包括汽車、航空、工業(yè)自動(dòng)化等領(lǐng)域。Simulink不僅提供了多種特定功能的模塊,還提供Simulink Function,F(xiàn)unction Caller等模塊,便于用戶在開(kāi)發(fā)過(guò)程中,定制化一些常用函數(shù),擺脫了Simulink中固有Block的功能限制,有效的提升了開(kāi)發(fā)效率。
這個(gè)功能無(wú)疑十分強(qiáng)大,但這卻給測(cè)試工作提出了很大的挑戰(zhàn):受軟件開(kāi)發(fā)架構(gòu)限制,F(xiàn)unction的定義可能放置在軟件底層,以便于上層軟件進(jìn)行多次調(diào)用。但當(dāng)用戶對(duì)上層軟件的單元層級(jí)進(jìn)行測(cè)試時(shí),往往面臨著無(wú)法調(diào)用底層定義的Function的窘態(tài)(有槍無(wú)彈)。此外,當(dāng)客戶在測(cè)試底層單元模塊時(shí),由于Function只有定義沒(méi)有被調(diào)用,往往無(wú)法對(duì)Function的內(nèi)部邏輯進(jìn)行測(cè)試(有彈無(wú)槍)。
針對(duì)這兩種測(cè)試場(chǎng)景,自動(dòng)化的軟件動(dòng)態(tài)測(cè)試工具——TPT提供了便捷的解決方案。

圖1模型
有槍無(wú)彈:
顧名思義,空有Function Caller而沒(méi)有Function。如圖1所示,如果要測(cè)試Calculate這個(gè)單元,這個(gè)單元調(diào)用了Function,而Function卻定義在更底層,針對(duì)這種情況,TPT支持函數(shù)的插樁,提供Function Caller的接口,模擬函數(shù)的返回值。
TPT支持函數(shù)的插樁,在對(duì)這種只有Caller沒(méi)有Function的層級(jí)(如圖2)進(jìn)行測(cè)試時(shí),非常高效。在TPT的Platform Configuration中提供了這樣的選項(xiàng):Simulink Functions,如圖3:

圖2單元模塊內(nèi)部結(jié)構(gòu)

圖 3 Simulink Functions
回到圖4平臺(tái)配置窗口,加載好模型后 Import模型接口, TPT將以 server形式識(shí)別 callFunc函數(shù),如圖5。

圖 4 Import模型接口、參數(shù)

圖 5識(shí)別callFunc函數(shù)
該函數(shù)會(huì)被直接加載到 Functions中, 以便于在編寫(xiě)測(cè)試用例時(shí)調(diào)用。

圖 6 callFunc被加載到Functions中
可以在 Declaration Editor中添加一個(gè) channel形式的本地變量return_Func模擬函數(shù)的返回值,然后編寫(xiě)圖 8所示用例來(lái)驗(yàn)證:

圖 7添加channel本地變量

圖 8測(cè)試用例
運(yùn)行結(jié)果和信號(hào)曲線如下圖所示,compare是簡(jiǎn)單的評(píng)估,結(jié)果可見(jiàn)模型的輸出符合期望,由信號(hào)曲線可以觀察到local量的值即函數(shù)的輸出值。

圖 9測(cè)試結(jié)果

圖 10 Signal Viewer觀測(cè)結(jié)果
有彈無(wú)槍:
上述方法并不能測(cè)到函數(shù)內(nèi)部的邏輯,而實(shí)際上函數(shù)可以定義在模型的底層,如圖1所示的模型wind_drag,F(xiàn)unction定義在底層,沒(méi)有對(duì)應(yīng)的Function Caller,這就是有“彈”而無(wú)“槍”了。在單元測(cè)試階段想要測(cè)試該函數(shù)的邏輯,因其沒(méi)有相關(guān)的接口信息,測(cè)試工作無(wú)疑非常困難。

圖 11被測(cè)函數(shù)邏輯
自動(dòng)化測(cè)試工具TPT提供了m文件的接口,可以在配置測(cè)試環(huán)境或者測(cè)試執(zhí)行過(guò)程中進(jìn)行一些預(yù)處理,這就為測(cè)試該函數(shù)邏輯提供了絕佳的途徑。

圖 12 TPT提供的m文件接口
此處用m腳本編寫(xiě)一個(gè)函數(shù),可以在TPT中實(shí)現(xiàn)對(duì)Function的調(diào)用。該函數(shù)主要有兩個(gè)參數(shù):
參數(shù)1:測(cè)試層級(jí),可直接用TPT環(huán)境變量’${tpt.matlab.block.name}’
參數(shù)2:被調(diào)函數(shù),例如:' F = wind_drag(Density,Speed) '
可以在 TPT\Platform Configuration\Original Model中可以編寫(xiě)相應(yīng)的代碼來(lái)加載m文件,并使用simulink_function_caller函數(shù)對(duì)模型中的SimulinkFunction進(jìn)行調(diào)用,這無(wú)疑大大提升了測(cè)試的效率。

圖 13 m文件加載及函數(shù)調(diào)用

圖 14模型中自動(dòng)配置FunctionCaller
依次在TPT中配置測(cè)試環(huán)境,導(dǎo)入接口時(shí)即可發(fā)現(xiàn)模型中出現(xiàn)了Simulink Function調(diào)用的相關(guān)接口信息。上一步中加載的m文件,實(shí)現(xiàn)了自動(dòng)創(chuàng)建所測(cè)Function對(duì)應(yīng)接口信息,以及Function Caller模塊的功能,這些新建的模塊和Function在同一層級(jí),這樣就能夠?qū)imulink Function邏輯進(jìn)行測(cè)試。

圖 15導(dǎo)入接口信息
編寫(xiě)測(cè)試用例來(lái)測(cè)試該函數(shù):

圖 16測(cè)試用例
該函數(shù)是簡(jiǎn)單的計(jì)算風(fēng)阻的函數(shù),,其中C取0.3,S取2.05,編寫(xiě)評(píng)估驗(yàn)證該用例:

圖 17測(cè)試評(píng)估
測(cè)試結(jié)果顯示模型輸出與函數(shù)運(yùn)算結(jié)果一致:

圖 18測(cè)試結(jié)果
兩者的信號(hào)曲線也是完全重合:

圖 19信號(hào)曲線
總結(jié)
本文介紹了使用TPT測(cè)試Simulink Function模塊的兩種方案,TPT還支持MATLAB Function的測(cè)試。
PikeTec公司是全球知名的基于模型的嵌入式系統(tǒng)測(cè)試工具TPT的軟件供應(yīng)商,總部位于德國(guó)柏林。北匯信息作為PikeTec在中國(guó)的獨(dú)家合作伙伴,致力于幫助中國(guó)客戶提升嵌入式控制系統(tǒng)的開(kāi)發(fā)效率。目前,TPT已被眾多國(guó)內(nèi)知名主機(jī)廠和零部件企業(yè)認(rèn)可,在新能源(VCU/BMS/MCU)以及ADAS等領(lǐng)域中被廣泛應(yīng)用。
-
TPT
+關(guān)注
關(guān)注
0文章
25瀏覽量
7167
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論