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

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

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

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

MATLAB ? 來(lái)源:djl ? 作者:柚籽 ? 2019-09-16 16:36 ? 次閱讀

我原來(lái)寫(xiě)了一些很漂亮的 C 函數(shù),寫(xiě)得非常不錯(cuò),想把它集成到 Simulink 環(huán)境中來(lái),怎么辦?

點(diǎn)擊末尾的 “閱讀原文” 下載本文的案例模型

集成外部C代碼到Simulink模型

要得到:

把自己編寫(xiě)的 C 函數(shù)集成到 Simulink 模型中

怎么做:

Simulink 提供了多種方法來(lái)集成外部的 C 代碼。從簡(jiǎn)單到復(fù)雜來(lái)看,可以:

使用 Stateflow;

使用 MATLAB Function 模塊;

使用 Legacy Code Tool 構(gòu)造 S-fcn 模塊;

自己寫(xiě) S-fcn

只介紹簡(jiǎn)單的方法

1.假設(shè)已有代碼 table1D.c 以及 table1D.h

table1D 是個(gè)簡(jiǎn)單的 1 維查表函數(shù)。這是它的函數(shù)原型。第1、2個(gè)輸入是表格數(shù)據(jù),第 3 個(gè)輸入是表格長(zhǎng)度數(shù)據(jù),第 4 個(gè)輸入就是要查找的 x,查到的結(jié)果作為返回值。

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

2. 函數(shù)調(diào)用

我現(xiàn)在希望在 Simulink 環(huán)境下使用這個(gè)查表函數(shù)。當(dāng)前的應(yīng)用場(chǎng)景是:在給定表格的情況下,通過(guò)輸入 u 查出相應(yīng)的 y 出來(lái)。

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

在Stateflow中,參照 .h 文件里定義的函數(shù)原型直接調(diào)用這個(gè)函數(shù):

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

然后如下圖說(shuō)明一下各個(gè)變量:u 是這個(gè) Chart 模塊的輸入,y 是 Chart 的輸出, uMap,yMap,n 是固定的表格參數(shù)。

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

在MATLAB Function模塊中,需要使用到coder.ceval調(diào)用這段代碼,引用傳遞使用 coder.rref:

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

跟 Stateflow 類(lèi)似,在 MATLAB Function 中也需要對(duì) m 腳本里用到的各個(gè)變量名做一個(gè)說(shuō)明。

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

3. 在Workspace 里定義數(shù)據(jù)對(duì)象

再來(lái)看 Simulink 模型,它現(xiàn)在有 4 個(gè)信號(hào)

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

我希望控制這 4 個(gè)信號(hào)的名字以及定義方式,所以新建這 4 個(gè)信號(hào)對(duì)應(yīng)的數(shù)據(jù)對(duì)象。另外,也給之前的 3 個(gè)參數(shù)定義對(duì)應(yīng)的數(shù)據(jù)對(duì)象。

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

4.并把該模型生成代碼

Ctrl + B,得到如下所示,兩句函數(shù)調(diào)用的語(yǔ)句:

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

另外,為了保證模型的正確編譯鏈接,生成代碼之前還需要在源文件中 include 手寫(xiě)的 .h 文件。如圖,要在模型.h 文件中增加這一行 include 的代碼。

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

那這一行 include 是怎么加進(jìn)去的呢?如下頁(yè)面得到:

關(guān)于的集成外部C代碼到Simulink模型分析和介紹

總結(jié)

使用 Stateflow 以及 MATLAB Function 模塊可以很方便的集成外部的 C 代碼。

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

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62622
  • C代碼
    +關(guān)注

    關(guān)注

    1

    文章

    89

    瀏覽量

    14302
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Simulink與 Simscape的結(jié)合使用

    。用戶(hù)可以利用 Simulink 進(jìn)行系統(tǒng)建模、仿真、測(cè)試和驗(yàn)證,以及生成代碼。 Simscape 簡(jiǎn)介 Simscape 是一個(gè)用于創(chuàng)建基于物理的模型的仿真環(huán)境。它提供了一個(gè)庫(kù),包含各種物理組件,如機(jī)械、電氣、液壓和熱力系統(tǒng)等
    的頭像 發(fā)表于 12-12 09:31 ?266次閱讀

    Simulink模型仿真與分析技巧

    1. 模型構(gòu)建基礎(chǔ) 1.1 理解系統(tǒng)需求 在開(kāi)始構(gòu)建模型之前,明確系統(tǒng)的需求和目標(biāo)是至關(guān)重要的。這包括了解系統(tǒng)的動(dòng)態(tài)特性、輸入輸出關(guān)系以及預(yù)期的性能指標(biāo)。 1.2 選擇合適的模塊 Simulink
    的頭像 發(fā)表于 12-12 09:23 ?579次閱讀

    Simulink自定義模塊開(kāi)發(fā)教程 Simulink 在控制系統(tǒng)中的應(yīng)用

    在控制系統(tǒng)的設(shè)計(jì)和分析中,Simulink 提供了一個(gè)強(qiáng)大的工具集,允許工程師通過(guò)圖形化界面快速構(gòu)建和測(cè)試復(fù)雜的系統(tǒng)模型。然而,Simulink 的標(biāo)準(zhǔn)庫(kù)可能不包含所有特定的功能,這時(shí)
    的頭像 發(fā)表于 12-12 09:21 ?358次閱讀

    阿里云開(kāi)源Qwen2.5-Coder代碼模型系列

    Qwen2.5-Coder-32B-Instruct,在代碼生成領(lǐng)域取得了顯著成就。據(jù)官方介紹,該模型在EvalPlus等十多個(gè)主流的代碼生成基準(zhǔn)測(cè)試中,均刷新了開(kāi)源
    的頭像 發(fā)表于 11-14 11:28 ?360次閱讀

    Matlab/Simulink/Stateflow建模開(kāi)發(fā)及仿真測(cè)試

    matlab 模擬仿真 熟悉Matlab/Simulink/Stateflow建模開(kāi)發(fā)及仿真測(cè)試,熟悉V模型開(kāi)發(fā)流程。 熟悉自動(dòng)代碼生成,能夠編寫(xiě)或者配置自動(dòng)代碼生成腳本。
    發(fā)表于 10-24 17:23

    新的 MathWorks 硬件支持包支持從 MATLAB 和 Simulink 模型高通 Hexagon 神經(jīng)處理單元架構(gòu)的自動(dòng)化代碼生成

    ? 和 Simulink? 模型的自動(dòng)化代碼生成流程。在提高數(shù)據(jù)準(zhǔn)確度和標(biāo)準(zhǔn)合規(guī)性的同時(shí),也提升開(kāi)發(fā)人員的工作流效率。使用 MathWorks 軟件和基于模型的設(shè)計(jì),工程師能夠
    的頭像 發(fā)表于 09-23 11:59 ?275次閱讀

    介紹FIR濾波模型的建立,分4個(gè)步驟

    本帖介紹FIR濾波模型的建立,分以下幾個(gè)步驟: 選定濾波結(jié)構(gòu):低通、高通、帶通、帶阻; 選定合適的窗函數(shù),常見(jiàn)的有hamming、hanning、blackman、ExactBlackman
    發(fā)表于 09-04 09:08

    【《大語(yǔ)言模型應(yīng)用指南》閱讀體驗(yàn)】+ 俯瞰全書(shū)

    的大語(yǔ)言模型設(shè)計(jì)技術(shù)人員閱讀,主要包括大語(yǔ)言模型的優(yōu)化方法、Agent系統(tǒng)調(diào)優(yōu)以及模型的安全技術(shù)。 展望篇分析了大語(yǔ)言模型的發(fā)展前景,
    發(fā)表于 07-21 13:35

    導(dǎo)入keras或者onnx模型cubeai進(jìn)行分析,為什么會(huì)報(bào)錯(cuò)?

    請(qǐng)問(wèn)我導(dǎo)入keras或者onnx模型cubeai進(jìn)行分析,為什么會(huì)報(bào)錯(cuò),而且沒(méi)有報(bào)錯(cuò)內(nèi)容,cubeai版本9.0.0。換成8.1.0版本后報(bào)錯(cuò)內(nèi)容是invalid network。該怎么入手解決。
    發(fā)表于 07-03 07:55

    Vivado 使用Simulink設(shè)計(jì)FIR濾波器

    領(lǐng)域都有著廣泛的應(yīng)用。 Vivado自帶的FIR濾波器IP核已經(jīng)很好用,這里借FIR濾波器的設(shè)計(jì),介紹Simulink圖形設(shè)計(jì)編程方法。Simulink可以使設(shè)計(jì)更直觀,使硬件資源得到更為高效的利用
    發(fā)表于 04-17 17:29

    Simulink自動(dòng)生成代碼現(xiàn)階段的學(xué)習(xí)筆記

    在車(chē)載控制器的軟件開(kāi)發(fā)中,simulink的身影幾乎隨處可見(jiàn),主要是在控制算法和控制邏輯的實(shí)現(xiàn)。平時(shí)看同事點(diǎn)點(diǎn)點(diǎn)就生成代碼了,看起來(lái)很簡(jiǎn)單,但是實(shí)際操作起來(lái)確各種磕磕絆絆。 下面記錄了一下步驟作為現(xiàn)階段的學(xué)習(xí)筆記吧。
    的頭像 發(fā)表于 04-17 10:56 ?3901次閱讀
    <b class='flag-5'>Simulink</b>自動(dòng)生成<b class='flag-5'>代碼</b>現(xiàn)階段的學(xué)習(xí)筆記

    電路仿真軟件simulink的工作原理

    Simulink是MATLAB的一個(gè)模塊,它采用圖形化的方式來(lái)創(chuàng)建動(dòng)態(tài)系統(tǒng)模型并進(jìn)行仿真分析。Simulink的工作原理主要基于模塊化的建模和仿真方式。
    的頭像 發(fā)表于 03-29 15:21 ?1687次閱讀

    使用CUBEAI部署tflite模型STM32F0中,模型創(chuàng)建失敗怎么解決?

    看到CUBE_AI已經(jīng)支持STM32F0系列芯片,就想拿來(lái)入門(mén)嵌入式AI。 生成的模型很小,是可以部署F0上的,但是一直無(wú)法創(chuàng)建成功。 查閱CUBE AI文檔說(shuō)在調(diào)用create函數(shù)前,要啟用
    發(fā)表于 03-15 08:10

    如何提高Simulink仿真性能呢?有哪些使用技巧?

    無(wú)論模型的復(fù)雜程度如何,每個(gè) Simulink 用戶(hù)都希望提高仿真性能。本文介紹了許多實(shí)用技巧和技術(shù),來(lái)幫助您在仿真工作流中獲得最佳的性能。
    的頭像 發(fā)表于 01-18 10:01 ?1279次閱讀
    如何提高<b class='flag-5'>Simulink</b>仿真性能呢?有哪些使用技巧?

    使用仿真模型進(jìn)行拓?fù)?b class='flag-5'>分析

    過(guò)去,仿真的基礎(chǔ)是行為和具有基本結(jié)構(gòu)的模型,它們主要適用于簡(jiǎn)單集成電路技術(shù)中使用的器件。但是,當(dāng)涉及功率器件時(shí),這些簡(jiǎn)單的模型通常無(wú)法預(yù)測(cè)與為優(yōu)化器件所做的改變相關(guān)的現(xiàn)象?,F(xiàn)在,通過(guò)
    的頭像 發(fā)表于 01-05 10:04 ?964次閱讀
    使用仿真<b class='flag-5'>模型</b>進(jìn)行拓?fù)?b class='flag-5'>分析</b>