生成代碼
我們拿下面這個(gè)模型作為一個(gè)例子。它有一個(gè) Bias 和一個(gè) Unit Delay 模塊,每 0.001s 運(yùn)行一次,另外有一個(gè) Math Function 模塊,每 0.01s 運(yùn)行一次。
就像你們知道的那樣,Embedded Coder 可以把 Simulink 模型生成 C 代碼。這里使用 Embedded 默認(rèn)的系統(tǒng)目標(biāo)文件配置(tlc文件),所生成的代碼像下面這樣:
如你所見(jiàn),代碼里有一個(gè) Initialize 函數(shù)以及一個(gè) Step 函數(shù)。Step 函數(shù)將以模型的基礎(chǔ)采樣率調(diào)用,在這里是 0.001s。最好是把這個(gè)代碼放在單任務(wù)環(huán)境里運(yùn)行。
如果你需要的話,也可以讓 Simulink 把每個(gè)離散采樣率歸到一個(gè)單獨(dú)的任務(wù)。
在這所生成的代碼里,每一個(gè)采樣時(shí)間的部分都單獨(dú)生成一個(gè)函數(shù)。這樣,你就可以用你實(shí)現(xiàn)的調(diào)度器,來(lái)任意調(diào)用各個(gè)采樣率的部分。
導(dǎo)出函數(shù)
各個(gè)采樣率的部分都能生成一個(gè)單獨(dú)的函數(shù)還挺有用的,但是,如果你想更隨心所欲的控制代碼的執(zhí)行,該怎么做呢?比如說(shuō),把某個(gè)采樣率的部分拆成若干個(gè)任務(wù),然后指定每個(gè)任務(wù)不同的優(yōu)先級(jí)。
為此,Embedded Coder 提供了導(dǎo)出函數(shù)(export functions)的功能。這個(gè)功能可以直接控制某個(gè)部分單獨(dú)生成函數(shù),另外還可以仿真它們的調(diào)度和優(yōu)先級(jí)。
為了匹配導(dǎo)出函數(shù)這個(gè)目的,你的模型必須以特定的方式來(lái)搭建。需要導(dǎo)出的函數(shù)頂層必須只包含 Function Call 子系統(tǒng),輸入以及輸出端口。這樣的話,每一個(gè)子系統(tǒng)會(huì)生成一個(gè)函數(shù)。
比如,我們剛才那個(gè)模型,重新按照下面這個(gè)方式來(lái)實(shí)現(xiàn):
對(duì)于仿真來(lái)說(shuō),不同任務(wù)的調(diào)度必須顯示指定出來(lái),比如像上圖那樣,使用 Stateflow 來(lái)實(shí)現(xiàn)。要生成代碼的時(shí)候,你可以在這個(gè)子系統(tǒng)上右鍵,然后導(dǎo)出這個(gè)函數(shù)。
得到的代碼就像下面這樣:
你就可以把這些代碼集成到你手寫(xiě)的調(diào)度器里去了。就像我之前提到的,通過(guò)這種方式,你可以將一個(gè)速率的部分拆分成多個(gè)函數(shù)或者任務(wù)。
導(dǎo)出函數(shù)模型
對(duì)于更大型的項(xiàng)目,你也可以將導(dǎo)出函數(shù)構(gòu)造為單獨(dú)的模型(Export Function Models)。
在這里,頂層的模型只是用于仿真,被引用子模型要生成代碼。 Simulink 會(huì)自動(dòng)識(shí)別這個(gè)模型是用于導(dǎo)出函數(shù)的,它所生成的代碼也會(huì)跟上面的那個(gè)子系統(tǒng)類似。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64890 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70747
發(fā)布評(píng)論請(qǐng)先 登錄
Allegro Skill封裝功能-導(dǎo)出device文件介紹與演示

Allegro Skill封裝功能之導(dǎo)出單個(gè)封裝介紹

解鎖TSMaster fifo函數(shù):報(bào)文讀取的高效方法

VirtualLab Fusion應(yīng)用:參數(shù)掃描結(jié)果的導(dǎo)出
如何導(dǎo)出交換機(jī)的配置文件
LVGL前臺(tái)程序開(kāi)發(fā)相關(guān)操作介紹

函數(shù)信號(hào)分析儀的原理和應(yīng)用場(chǎng)景
請(qǐng)問(wèn)關(guān)于ADS5407內(nèi)部寄存器有沒(méi)有相關(guān)的中文介紹的?
零基礎(chǔ)教程!TSMaster的圖形數(shù)據(jù)導(dǎo)出CSV功能

關(guān)于4G模組LuatOS開(kāi)發(fā):通用加解密函數(shù)(crypto)|全攻略

機(jī)智云歷史數(shù)據(jù)導(dǎo)出與排查指南

SUMIF函數(shù)對(duì)比VLOOKUP的優(yōu)勢(shì)
SUMIF函數(shù)在數(shù)據(jù)分析中的應(yīng)用
SUMIF函數(shù)的應(yīng)用場(chǎng)景分析
合宙LuatOS應(yīng)用,與時(shí)間相關(guān)那些事

評(píng)論