作者簡(jiǎn)介柚籽,MATLAB中文論壇(http://www.) 超級(jí)版主,MATLAB/Simulink高級(jí)應(yīng)用工程師,同濟(jì)大學(xué)機(jī)械電子工程專(zhuān)業(yè)碩士學(xué)位,專(zhuān)注于物理系統(tǒng)的建模仿真,在論壇回答問(wèn)題超過(guò)1700個(gè),分享大量Simulink應(yīng)用學(xué)習(xí)資源。 我們寫(xiě) C 代碼的時(shí)候,為了主程序結(jié)構(gòu)清晰,通常會(huì)把具有獨(dú)立功能的代碼變成子函數(shù)的形式。類(lèi)似的,為了 Simulink 模型結(jié)構(gòu)清晰,我們?cè)谀P屠镆步?jīng)常會(huì)用把具一片實(shí)現(xiàn)某種功能的模塊變成子系統(tǒng)的形式。 那么,如果我希望這些 Simulink 子系統(tǒng)在自動(dòng)代碼生成時(shí),也能真的生成單獨(dú)的子函數(shù),該如何配置呢? 點(diǎn)擊末尾的 “閱讀原文” 下載本文的案例模型 把某個(gè)子系統(tǒng)編程函數(shù)調(diào)用
1. 模型 

2. 設(shè)置 這是因?yàn)閷?duì)該模塊的屬性做了設(shè)置,如下圖。 首先右鍵點(diǎn)擊模型,打開(kāi) Block Parameters 界面,首先要在 Main 的頁(yè)面將子系統(tǒng)勾選為Atomic Subsystem。只不過(guò)在這個(gè)案例模型里,由于 func 是觸發(fā)子系統(tǒng),默認(rèn)就是 Atomic 的。 然后,點(diǎn)開(kāi)出現(xiàn)的 Code Generation 頁(yè)面,將 Function packaging 配置為 Nonresusable function,主函數(shù)調(diào)用它時(shí)通過(guò)全局變量來(lái)傳遞數(shù)據(jù)(總之不選擇 Inline 和 Auto)。



如果希望某個(gè)子系統(tǒng)的 C 代碼單獨(dú)生成一個(gè)子函數(shù),那么: 把子系統(tǒng)配置為元胞子系統(tǒng)(Atomic Subsystem); 設(shè)置 Code Generation 屬性為 Reusable 或者 NonReusable。
另外,不僅可以將子系統(tǒng)的代碼放在單獨(dú)的子函數(shù)里,還可以配置放在單獨(dú)的文件(在配置菜單里指定文件名即可)里。
|