日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

怎樣生成我想要的C代碼系列 | Simulink子系統(tǒng)如何生成單獨(dú)的子函數(shù)?

 whx1237 2016-12-23

作者簡(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)用
  • 要得到:

    • 自動(dòng)生成代碼時(shí),讓某個(gè) Simulink 子系統(tǒng)的算法生成單獨(dú)子函數(shù)形式。

  • 怎么做:

    • 把該子系統(tǒng)變?yōu)樵酉到y(tǒng) (Atomic Subsystem),并配置子系統(tǒng)的代碼生成選項(xiàng)。

舉個(gè)例子

1. 模型

  • 這是在前一篇帖子最后用到的一個(gè)模型。MATLAB Function 里面寫(xiě)了一個(gè)循環(huán)語(yǔ)句,并在循環(huán)內(nèi)部調(diào)用了外部子系統(tǒng) func

  • 它所生成的代碼如下圖??梢钥吹?Simulink 子系統(tǒng) func 在生成代碼后,具體的 C 代碼并不會(huì)平鋪在主程序里。它而是作為一個(gè)函數(shù)調(diào)用的形式出現(xiàn)的的 func( )

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)。


  • 也可以設(shè)置為 Reusable ,這時(shí)主程序調(diào)用它的時(shí)候,會(huì)通過(guò)傳參的方式來(lái)進(jìn)行數(shù)據(jù)傳遞。最后生成的代碼如下圖

  • 模型的默認(rèn)設(shè)置是 Auto,所以在這種情況下,代碼生成工具會(huì)把這個(gè)子系統(tǒng)的算法代碼寫(xiě)在主程序里,而不會(huì)采用函數(shù)調(diào)用的方式,如下圖:

總結(jié)

如果希望某個(gè)子系統(tǒng)的 C 代碼單獨(dú)生成一個(gè)子函數(shù),那么:

  1. 把子系統(tǒng)配置為元胞子系統(tǒng)(Atomic Subsystem);

  2. 設(shè)置 Code Generation 屬性為 Reusable  或者 NonReusable。

另外,不僅可以將子系統(tǒng)的代碼放在單獨(dú)的子函數(shù)里,還可以配置放在單獨(dú)的文件(在配置菜單里指定文件名即可)里。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多