生成路径 vs 设置_Simulink代码生成之模型配置
歡迎關(guān)注我的微信公眾號【新能源動力電池與BMS】,頭條號:【阿Q在江湖】;所有文章資料會在公眾號首發(fā)。
本文已同步錄制視頻講解:Simulink代碼生成之模型配置_視頻教程 - 知乎。
PS:前段時間,傳出美國禁用一些高校使用正版Matlab軟件,有些人說是否有可替代的軟件?Python替代Matlab軟件m語言編寫的部分功能似乎問題不大,不過Simulink呢?似乎還沒有可替代的吧?
Simulink是Matlab中非常獨(dú)特而重要的一個建模工具,能夠通過圖形化模塊快速建模并仿真,同時可自動生成C代碼,下載到硬件中,使得復(fù)雜系統(tǒng)的算法仿真與開發(fā)變的非常高效(比如汽車行業(yè)、航空航天都已廣泛使用Simulink建模仿真與開發(fā))。要生成嵌入式C代碼需要提前將模型進(jìn)行一些參數(shù)配置。下面列舉模型配置的一些步驟。
必須配置項(xiàng)
1. 打開模型參數(shù)配置面板(Configuration parameters)
在菜單欄打開上圖圖標(biāo)或者快捷鍵Ctrl+E,打開模型配置參數(shù)面板。
2. 解算器設(shè)置(Solver)
? 解算器類型(Type):
路徑:Solver-->>Solver options-->>Type
默認(rèn)是變步長(Variable-step),需要設(shè)置為固定步長(Fixed-step)。因?yàn)榍度胧酱a是要下載到硬件中實(shí)時執(zhí)行,硬件的時鐘源都是晶振提供的穩(wěn)定時鐘源,所以解算器必須采用固定步長。
? 解算器算法選擇(Solver):
路徑:Solver-->> Solver options -->> Solver
這里選擇discrete算法
? 步長(Fixed-step size):
路徑:Solver-->>Additional options-->> Fixed-step size
根據(jù)需要一般要選擇一個固定數(shù)值,其單位為秒。步長是相鄰兩個采樣點(diǎn)之間的時間間隔,相當(dāng)于模型中算法的最小單位調(diào)用周期。這里選擇0.1,即100ms采樣一次。
3. Code Generation
? 系統(tǒng)目標(biāo)文件(Target selection)
路徑:Code Generation-->>Target selection-->> System Target file
這里一般選擇與嵌入式相關(guān)的系統(tǒng)目標(biāo)文件,如ert.tlc;如果選擇autosar.tlc,那么會生成符合autosar接口標(biāo)準(zhǔn)的車規(guī)級代碼。
? 編譯過程(Build process)
路徑:Code Generation-->> Build process
因?yàn)槲覀冎粸榱丝瓷傻腃代碼,這里勾選generate code only
4. 硬件設(shè)備選擇(Device vendor)
路徑:Hardware Implementation -->>Device vendor/ Device type
這里選擇的是你要將代碼下載到的硬件MCU/DSP的型號。
優(yōu)化項(xiàng)
1. 信號與參數(shù)(Signal and Parameters)
路徑:Optimization -->> Signal and Parameters-->>Code generation
勾選Inline invariant signals.提高生成的C代碼可讀性,將模型常量直接代入,如果不勾選則是變量代替。根據(jù)實(shí)際情況確定是否要勾選。
2. 代碼打包文件
路徑:Code Generation -->> Code Placement-->>Code Packaging
控件選擇Compact,這樣打包生成的C代碼文件數(shù)量少而緊湊一些。
3. State-flow優(yōu)化配置
本案例沒有使用State-flow展示,但是狀態(tài)機(jī)的應(yīng)用是很廣泛的。
路徑:Optimization -->> Stateflow-->>Code generation
勾選兩項(xiàng),是將代碼的整數(shù)換算成位運(yùn)算,提高計(jì)算效率。比如BMS很多狀態(tài)機(jī)都是位運(yùn)算。
模型案例
生成C代碼
菜單欄找到代碼生成圖標(biāo)點(diǎn)擊(或快捷鍵Ctrl+B)
生成的C代碼主函數(shù)分為三部分結(jié)構(gòu),初始化函數(shù)、rt_onestep被定時中斷調(diào)用(即本模型的算法函數(shù))、終止函數(shù)。
上圖為模型算法函數(shù),中斷定時調(diào)用。
總結(jié)
以上列舉了Simulink自動生成嵌入式代碼幾個基礎(chǔ)的必要配置以及一些優(yōu)化代碼的方法。當(dāng)然生成的C代碼與手寫的相比,可讀性還是比較差的,其實(shí)還有一些方法設(shè)置可以改善生成代碼的可讀性,留待下次再分享。以上僅供參考。
本文已同步錄制視頻講解:Simulink代碼生成之模型配置_視頻教程 - 知乎。
歡迎關(guān)注我的微信公眾號/知乎專欄:【新能源動力電池與BMS】,頭條號:【阿Q在江湖】
總結(jié)
以上是生活随笔為你收集整理的生成路径 vs 设置_Simulink代码生成之模型配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tasklist 结束进程_netsta
- 下一篇: java学习(108):StringBu