91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享Simulink子系統(tǒng)生成單獨的子函數(shù)的教程

MATLAB ? 來源:djl ? 作者:柚籽 ? 2019-09-17 09:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們寫 C 代碼的時候,為了主程序結(jié)構(gòu)清晰,通常會把具有獨立功能的代碼變成子函數(shù)的形式。類似的,為了 Simulink 模型結(jié)構(gòu)清晰,我們在模型里也經(jīng)常會用把具一片實現(xiàn)某種功能的模塊變成子系統(tǒng)的形式。

那么,如果我希望這些Simulink 子系統(tǒng)在自動代碼生成時,也能真的生成單獨的子函數(shù),該如何配置呢?

把某個子系統(tǒng)編程函數(shù)調(diào)用

要得到:

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

怎么做:

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

舉個例子

1. 模型

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

分享Simulink子系統(tǒng)生成單獨的子函數(shù)的教程

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

分享Simulink子系統(tǒng)生成單獨的子函數(shù)的教程

2. 設(shè)置

這是因為對該模塊的屬性做了設(shè)置,如下圖。

首先右鍵點擊模型,打開 Block Parameters 界面,首先要在 Main 的頁面將子系統(tǒng)勾選為Atomic Subsystem。只不過在這個案例模型里,由于 func 是觸發(fā)子系統(tǒng),默認就是 Atomic 的。

然后,點開出現(xiàn)的 Code Generation 頁面,將 Function packaging 配置為 Nonresusable function,主函數(shù)調(diào)用它時通過全局變量來傳遞數(shù)據(jù)(總之不選擇 Inline 和 Auto)。

分享Simulink子系統(tǒng)生成單獨的子函數(shù)的教程

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

分享Simulink子系統(tǒng)生成單獨的子函數(shù)的教程

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

分享Simulink子系統(tǒng)生成單獨的子函數(shù)的教程

總結(jié)

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3716

    瀏覽量

    97218
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4418

    瀏覽量

    67575
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4971

    瀏覽量

    74028
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    智能巡檢:技術(shù)融合與系統(tǒng)生成

    智能巡檢系統(tǒng)的技術(shù)本質(zhì)并非多個獨立模塊的簡單堆砌,而是一個動態(tài)、復雜的技術(shù)融合體。其核心在于通過一套精密的數(shù)據(jù)-知識-決策轉(zhuǎn)換鏈,將異構(gòu)的底層感知、中臺分析與頂層執(zhí)行能力編織成一個具備自主性與適應(yīng)性
    的頭像 發(fā)表于 01-26 14:31 ?118次閱讀

    西門子PLC中函數(shù)FC的使用方法

    函數(shù)函數(shù)塊作為模塊化編程的重要組成部分,在PLC 用戶程序中有著相當頻繁的應(yīng)用。兩者在生成與使用的過程中都有一定的相似,且都不能單獨使用。而需要賦予特定的功能,由組織塊(OB)直接或
    的頭像 發(fā)表于 12-19 11:26 ?4253次閱讀
    西門子PLC中<b class='flag-5'>函數(shù)</b>FC的使用方法

    MXAM常見問題解答:從配置到報告生成#simulink模型測試 #simulink

    Simulink
    北匯信息POLELINK
    發(fā)布于 :2025年11月14日 11:48:38

    使用Simulink自動生成浮點運算HDL代碼(Part 1)

    引言 想要實現(xiàn)浮點運算功能,如果自己寫Verilog代碼,需要花費較多的時間和精力。好在Simulink HDL Coder工具箱提供了自動代碼生成技術(shù)。下圖展示了HDL Coder如何生成浮點運算
    發(fā)表于 10-22 06:48

    rtthread線程出現(xiàn)異常了,有沒有什么鉤子函數(shù)能夠定義用戶操作?

    線程出現(xiàn)異常了,有沒有什么鉤子函數(shù)能夠定義用戶操作????
    發(fā)表于 09-18 06:36

    迅為RK3568開發(fā)板新增topeet子系統(tǒng)-在產(chǎn)品中新增子系統(tǒng)

    build/subsystem_config.json文件中增加名為topeet的子系統(tǒng),在3.4節(jié)已經(jīng)新建了topeet 文件夾存放子系統(tǒng)代碼。添加 topeet 子系統(tǒng)進行一個登記,說明
    發(fā)表于 06-16 10:43

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?1048次閱讀
    迅為RK3568開發(fā)板驅(qū)動指南GPIO<b class='flag-5'>子系統(tǒng)</b>GPIO<b class='flag-5'>子系統(tǒng)</b>API<b class='flag-5'>函數(shù)</b>的引入

    迅為RK3568驅(qū)動指南GPIO子系統(tǒng) GPIO操作函數(shù)實驗

    迅為電子RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng) GPIO操作函數(shù)實驗
    的頭像 發(fā)表于 05-28 15:24 ?1360次閱讀
    迅為RK3568驅(qū)動指南GPIO<b class='flag-5'>子系統(tǒng)</b> GPIO操作<b class='flag-5'>函數(shù)</b>實驗

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗
    的頭像 發(fā)表于 05-26 15:39 ?1549次閱讀
    迅為RK3568開發(fā)板驅(qū)動指南GPIO<b class='flag-5'>子系統(tǒng)</b>三級節(jié)點操作<b class='flag-5'>函數(shù)</b>實驗

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實驗

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實驗
    的頭像 發(fā)表于 05-23 13:47 ?1039次閱讀
    RK3568驅(qū)動指南|第十二篇 GPIO<b class='flag-5'>子系統(tǒng)</b>-第135章 GPIO<b class='flag-5'>子系統(tǒng)</b>與pinctrl<b class='flag-5'>子系統(tǒng)</b>相結(jié)合實驗

    飛凌嵌入式ElfBoard ELF 1板卡-input子系統(tǒng)之基于input子系統(tǒng)的按鍵驅(qū)動

    *dev);參數(shù)說明:dev:指向 struct input_dev的指針,表示目標輸入設(shè)備。input_sync()函數(shù)用于通知輸入子系統(tǒng)當前輸入設(shè)備的事件已經(jīng)全部報告完畢,需要立即將事件傳遞到用戶空間
    發(fā)表于 04-15 10:58

    飛凌嵌入式ElfBoard ELF 1板卡-input子系統(tǒng)之input子系統(tǒng)簡介

    在Linux系統(tǒng)中,Input子系統(tǒng)是一個用于處理輸入設(shè)備的軟件框架。它提供了一種統(tǒng)一的接口和機制,使得各種輸入設(shè)備(如鍵盤、鼠標、觸摸屏、游戲手柄等)能夠與Linux系統(tǒng)進行交互。Input
    發(fā)表于 04-15 10:27

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Pinctrl和GPIO子系統(tǒng)之GPIO子系統(tǒng)

    軟件控制設(shè)備上的GPIO信號。在Linux的GPIO子系統(tǒng)中,提供了一組API函數(shù)來管理和操作GPIO引腳。以下是一些常用的GPIO子系統(tǒng)API函數(shù):gpio_request():請求
    發(fā)表于 03-25 13:29

    飛凌嵌入式ElfBoard ELF 1板卡-Pinctrl和GPIO子系統(tǒng)之GPIO子系統(tǒng)

    軟件控制設(shè)備上的GPIO信號。在Linux的GPIO子系統(tǒng)中,提供了一組API函數(shù)來管理和操作GPIO引腳。以下是一些常用的GPIO子系統(tǒng)API函數(shù):gpio_request():請求
    發(fā)表于 03-24 15:41

    飛凌嵌入式ElfBoard ELF 1板卡-Pinctrl和GPIO子系統(tǒng)之Pinctrl子系統(tǒng)

    pinctrl(Pin Control)子系統(tǒng)是Linux內(nèi)核中的一個模塊化子系統(tǒng),用于管理和控制硬件引腳(Pin)的配置和功能。它提供了一種統(tǒng)一的接口,使驅(qū)動程序可以對硬件引腳進行靈活的配置和控制
    發(fā)表于 03-22 09:23