Simulink是美國(guó)Mathworks公司推出的一種強(qiáng)大的可視化仿真工具,現(xiàn)已應(yīng)用到包括汽車、航空、工業(yè)自動(dòng)化等領(lǐng)域。Simulink不僅提供了多種特定功能的模塊,還提供Simulink Function,F(xiàn)unction Caller等模塊,便于用戶在開發(fā)過(guò)程中,定制化一些常用函數(shù),擺脫了Simulink中固有Block的功能限制,有效的提升了開發(fā)效率。
這個(gè)功能無(wú)疑十分強(qiáng)大,但這卻給測(cè)試工作提出了很大的挑戰(zhàn):受軟件開發(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只有定義沒有被調(diào)用,往往無(wú)法對(duì)Function的內(nèi)部邏輯進(jìn)行測(cè)試(有彈無(wú)槍)。
針對(duì)這兩種測(cè)試場(chǎng)景,自動(dòng)化的軟件動(dòng)態(tài)測(cè)試工具——TPT提供了便捷的解決方案。
![poYBAGLrWJmAP1ukAABNdGfGtl4332.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWJmAP1ukAABNdGfGtl4332.png)
圖1模型
有槍無(wú)彈:
顧名思義,空有Function Caller而沒有Function。如圖1所示,如果要測(cè)試Calculate這個(gè)單元,這個(gè)單元調(diào)用了Function,而Function卻定義在更底層,針對(duì)這種情況,TPT支持函數(shù)的插樁,提供Function Caller的接口,模擬函數(shù)的返回值。
TPT支持函數(shù)的插樁,在對(duì)這種只有Caller沒有Function的層級(jí)(如圖2)進(jìn)行測(cè)試時(shí),非常高效。在TPT的Platform Configuration中提供了這樣的選項(xiàng):Simulink Functions,如圖3:
![pYYBAGLrWLyAAfNHAABH-KQYTVE401.png](https://file.elecfans.com/web2/M00/5A/ED/pYYBAGLrWLyAAfNHAABH-KQYTVE401.png)
圖2單元模塊內(nèi)部結(jié)構(gòu)
![pYYBAGLrWNCAIK0QAAE43T8UauE659.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWNCAIK0QAAE43T8UauE659.png)
圖 3 Simulink Functions
回到圖4平臺(tái)配置窗口,加載好模型后 Import模型接口, TPT將以 server形式識(shí)別 callFunc函數(shù),如圖5。
![poYBAGLrWNyAdaDLAAEsUPUT16o404.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWNyAdaDLAAEsUPUT16o404.png)
圖 4 Import模型接口、參數(shù)
![pYYBAGLrWOWABevvAADtSP7OhMs583.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWOWABevvAADtSP7OhMs583.png)
圖 5識(shí)別callFunc函數(shù)
該函數(shù)會(huì)被直接加載到 Functions中, 以便于在編寫測(cè)試用例時(shí)調(diào)用。
![pYYBAGLrWPaAZDENAACVshqy1X8003.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWPaAZDENAACVshqy1X8003.png)
圖 6 callFunc被加載到Functions中
可以在 Declaration Editor中添加一個(gè) channel形式的本地變量return_Func模擬函數(shù)的返回值,然后編寫圖 8所示用例來(lái)驗(yàn)證:
![pYYBAGLrWQKACHVAAACrvmX6XxQ134.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWQKACHVAAACrvmX6XxQ134.png)
圖 7添加channel本地變量
![poYBAGLrWQqASnQ9AADhoN1Ldjk726.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWQqASnQ9AADhoN1Ldjk726.png)
圖 8測(cè)試用例
運(yùn)行結(jié)果和信號(hào)曲線如下圖所示,compare是簡(jiǎn)單的評(píng)估,結(jié)果可見模型的輸出符合期望,由信號(hào)曲線可以觀察到local量的值即函數(shù)的輸出值。
![poYBAGLrWRWAFleUAACxagqfYlA845.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWRWAFleUAACxagqfYlA845.png)
圖 9測(cè)試結(jié)果
![pYYBAGLrWR2AN0MLAAEbW0wcis0819.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWR2AN0MLAAEbW0wcis0819.png)
圖 10 Signal Viewer觀測(cè)結(jié)果
有彈無(wú)槍:
上述方法并不能測(cè)到函數(shù)內(nèi)部的邏輯,而實(shí)際上函數(shù)可以定義在模型的底層,如圖1所示的模型wind_drag,F(xiàn)unction定義在底層,沒有對(duì)應(yīng)的Function Caller,這就是有“彈”而無(wú)“槍”了。在單元測(cè)試階段想要測(cè)試該函數(shù)的邏輯,因其沒有相關(guān)的接口信息,測(cè)試工作無(wú)疑非常困難。
![poYBAGLrWSuAIwWiAABQk6Eh0CY957.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWSuAIwWiAABQk6Eh0CY957.png)
圖 11被測(cè)函數(shù)邏輯
自動(dòng)化測(cè)試工具TPT提供了m文件的接口,可以在配置測(cè)試環(huán)境或者測(cè)試執(zhí)行過(guò)程中進(jìn)行一些預(yù)處理,這就為測(cè)試該函數(shù)邏輯提供了絕佳的途徑。
![pYYBAGLrWTWAW_9nAAEm3ynXg-Q034.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWTWAW_9nAAEm3ynXg-Q034.png)
圖 12 TPT提供的m文件接口
此處用m腳本編寫一個(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中可以編寫相應(yīng)的代碼來(lái)加載m文件,并使用simulink_function_caller函數(shù)對(duì)模型中的SimulinkFunction進(jìn)行調(diào)用,這無(wú)疑大大提升了測(cè)試的效率。
![pYYBAGLrWa6AGw8iAAB6kUc1hdI655.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWa6AGw8iAAB6kUc1hdI655.png)
圖 13 m文件加載及函數(shù)調(diào)用
![pYYBAGLrWbmARhZ8AABHR8vcXAI545.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWbmARhZ8AABHR8vcXAI545.png)
圖 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è)試。
![poYBAGLrWcKAcHQBAADEYiZv43o099.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWcKAcHQBAADEYiZv43o099.png)
圖 15導(dǎo)入接口信息
編寫測(cè)試用例來(lái)測(cè)試該函數(shù):
![pYYBAGLrWdCAFDyGAADCKZG9TW4717.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWdCAFDyGAADCKZG9TW4717.png)
圖 16測(cè)試用例
該函數(shù)是簡(jiǎn)單的計(jì)算風(fēng)阻的函數(shù),,其中C取0.3,S取2.05,編寫評(píng)估驗(yàn)證該用例:
![poYBAGLrWeOAO_81AACUfm2SMf0956.png](https://file.elecfans.com/web2/M00/5A/51/poYBAGLrWeOAO_81AACUfm2SMf0956.png)
圖 17測(cè)試評(píng)估
測(cè)試結(jié)果顯示模型輸出與函數(shù)運(yùn)算結(jié)果一致:
![pYYBAGLrWfmABNAWAAC4z1MuiCM317.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWfmABNAWAAC4z1MuiCM317.png)
圖 18測(cè)試結(jié)果
兩者的信號(hào)曲線也是完全重合:
![pYYBAGLrWgOAXeLBAAFCUCWlQ_k692.png](https://file.elecfans.com/web2/M00/5A/EE/pYYBAGLrWgOAXeLBAAFCUCWlQ_k692.png)
圖 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)的開發(fā)效率。目前,TPT已被眾多國(guó)內(nèi)知名主機(jī)廠和零部件企業(yè)認(rèn)可,在新能源(VCU/BMS/MCU)以及ADAS等領(lǐng)域中被廣泛應(yīng)用。
-
TPT
+關(guān)注
關(guān)注
0文章
23瀏覽量
7011
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Simulink與 Simscape的結(jié)合使用
Simulink模型仿真與分析技巧
Simulink自定義模塊開發(fā)教程 Simulink 在控制系統(tǒng)中的應(yīng)用
升壓模塊可以升電流嗎
Matlab R2016b創(chuàng)建STM32H743ZIT6控制工程當(dāng)從Simulink庫(kù)中拖入TIMx模塊出現(xiàn)報(bào)錯(cuò)的原因?
Vivado 使用Simulink設(shè)計(jì)FIR濾波器
路燈竟然還可以這樣玩-智慧路燈
電路仿真軟件simulink的工作原理
電路仿真軟件simulink使用方法
![](https://file1.elecfans.com/web2/M00/C3/B8/wKgaomXn4K-AWczbAALbOB5f1pE041.png)
評(píng)論