生成路徑 vs 設置_Simulink代碼生成之模型配置

a2597ac6276411f3713f8f37d0782283.png

歡迎關注我的微信公眾號【新能源動力電池與BMS】,頭條號:【阿Q在江湖】;所有文章資料會在公眾號首發。

本文已同步錄制視頻講解:Simulink代碼生成之模型配置_視頻教程 - 知乎。

PS:前段時間,傳出美國禁用一些高校使用正版Matlab軟件,有些人說是否有可替代的軟件?Python替代Matlab軟件m語言編寫的部分功能似乎問題不大,不過Simulink呢?似乎還沒有可替代的吧?

Simulink是Matlab中非常獨特而重要的一個建模工具,能夠通過圖形化模塊快速建模并仿真,同時可自動生成C代碼,下載到硬件中,使得復雜系統的算法仿真與開發變的非常高效(比如汽車行業、航空航天都已廣泛使用Simulink建模仿真與開發)。要生成嵌入式C代碼需要提前將模型進行一些參數配置。下面列舉模型配置的一些步驟。

必須配置項

1. 打開模型參數配置面板(Configuration parameters)

3fd09ec637a07533eec7eb19a3671b37.png

在菜單欄打開上圖圖標或者快捷鍵Ctrl+E,打開模型配置參數面板。

2. 解算器設置(Solver)

313681878e45ce9114437b0f04056843.png

? 解算器類型(Type):

路徑:Solver-->>Solver options-->>Type

默認是變步長(Variable-step),需要設置為固定步長(Fixed-step)。因為嵌入式代碼是要下載到硬件中實時執行,硬件的時鐘源都是晶振提供的穩定時鐘源,所以解算器必須采用固定步長。

? 解算器算法選擇(Solver):

路徑:Solver-->> Solver options -->> Solver

這里選擇discrete算法

? 步長(Fixed-step size):

路徑:Solver-->>Additional options-->> Fixed-step size

根據需要一般要選擇一個固定數值,其單位為秒。步長是相鄰兩個采樣點之間的時間間隔,相當于模型中算法的最小單位調用周期。這里選擇0.1,即100ms采樣一次。

3. Code Generation

d3d72dd5e31b1624ec07cd175df011b7.png

d8e53dc760d4adc453e24e51e6742821.png

? 系統目標文件(Target selection)

路徑:Code Generation-->>Target selection-->> System Target file

這里一般選擇與嵌入式相關的系統目標文件,如ert.tlc;如果選擇autosar.tlc,那么會生成符合autosar接口標準的車規級代碼。

? 編譯過程(Build process)

路徑:Code Generation-->> Build process

因為我們只為了看生成的C代碼,這里勾選generate code only

4. 硬件設備選擇(Device vendor)

4428d9c48b4f830ce1147223cb0e1c64.png

路徑:Hardware Implementation -->>Device vendor/ Device type

這里選擇的是你要將代碼下載到的硬件MCU/DSP的型號。

優化項

1. 信號與參數(Signal and Parameters)

377a219ac503c9a730c41f1f8937967e.png

路徑:Optimization -->> Signal and Parameters-->>Code generation

勾選Inline invariant signals.提高生成的C代碼可讀性,將模型常量直接代入,如果不勾選則是變量代替。根據實際情況確定是否要勾選。

2. 代碼打包文件

7a950f5a4d95da430cf12283c75e6dc7.png

路徑:Code Generation -->> Code Placement-->>Code Packaging

控件選擇Compact,這樣打包生成的C代碼文件數量少而緊湊一些。

3. State-flow優化配置

1f5e3959dac3289bb885018300e98e97.png

本案例沒有使用State-flow展示,但是狀態機的應用是很廣泛的。

路徑:Optimization -->> Stateflow-->>Code generation

勾選兩項,是將代碼的整數換算成位運算,提高計算效率。比如BMS很多狀態機都是位運算。

模型案例

0793606cf4a49d65aa2a90b10b0eb010.png

生成C代碼

6e6396ec2985db81d19b2e59f483bdab.png

菜單欄找到代碼生成圖標點擊(或快捷鍵Ctrl+B)

1521ce454be3d36d2dce458677ddd3bb.png

生成的C代碼主函數分為三部分結構,初始化函數、rt_onestep被定時中斷調用(即本模型的算法函數)、終止函數。

64b7773003cd4fe18b4c8ff6e7232769.png

上圖為模型算法函數,中斷定時調用。

總結

以上列舉了Simulink自動生成嵌入式代碼幾個基礎的必要配置以及一些優化代碼的方法。當然生成的C代碼與手寫的相比,可讀性還是比較差的,其實還有一些方法設置可以改善生成代碼的可讀性,留待下次再分享。以上僅供參考。

本文已同步錄制視頻講解:Simulink代碼生成之模型配置_視頻教程 - 知乎。

歡迎關注我的微信公眾號/知乎專欄:【新能源動力電池與BMS】,頭條號:【阿Q在江湖】

737088d5507d9d62c3f46591dd0d3b54.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273190.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

常見電容器圖片_各種電容器圖片大集合

圖1是膽;圖2是燈具;圖3是mkph電容;圖4是met電容;圖5、圖10是pei電容;圖6是膽貼片電容;圖7是mpe電容;圖8是貼片電容;圖11是軸向電解電容器;圖12是mpp電容。圖1是ppn電容&a…

解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾

解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾 原文 解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾 php做為一門當下非常流行的web語言,常常看到有人求解密php文件,想當年的asp也是一樣。一些人不理解為什么要混…

bootstrap 合并菜單_Bootstrap與tab組合,切換菜單實例

Test$(function () {$(#myTab a:last).tab(show);//初始化顯示哪個tab$(#myTab a).click(function (e) {e.preventDefault();//阻止a鏈接的跳轉行為$(this).tab(show);//顯示當前選中的鏈接及關聯的content})})HomeProfileMessagesSettings服務器.home....profile...messages..…

WCF 宿主與通信模式(二)

宿主 每個WCF服務都必須托管在Windows進程中,該進程稱為宿主進程(host process) 單個宿主進程可以托管多個服務,相同的服務類型也可以托管在多個宿主進程中。 wcf中托管服務一般有一下四種: 寄宿方式 描述 Console寄宿 利于開發調試&#…

mysql端口被占用_MySQL重啟端口被占用處理

1,查看日志的ERROR2018-05-23T01:26:59.230382Z 0 [Warning] NO_AUTO_CREATE_USER sql mode was not set.2018-05-23T01:26:59.230409Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled2018-05-23T01:26:59.230…

poj 3660 傳遞閉包 **

題意:題目給出了m對的相對關系,求有多少個排名是確定的。 鏈接:點我 如果這個點到其他點的關系是確定的,那么這個點就是確定的,注意如果這個點到不了其他點,但其他點能到這個點,那么這個點和其他…

C# 網絡編程之webBrowser獲取網頁url和下載網頁中圖片

該文章主要是通過C#網絡編程的webBrowser獲取網頁中的url并簡單的嘗試下載網頁中的圖片,主要是為以后網絡開發的基礎學習.其中主要的通過應用程序結合網頁知識、正則表達式實現瀏覽、獲取url、下載圖片三個功能.而且很清晰的解析了每一步都是以前一步為基礎實現的. 一.界面設計…

mysql員工腳本_mySQL常用腳本匯總

mysql的常用腳本有哪些呢?我們來做個總結建表語句sql語句最后指定主鍵DROP TABLE IF EXISTS user_info1;CREATE TABLE user_info1 (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主鍵,name varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT 姓名,password varcha…

多線程 調用多線程的方法 Runtime與ProcessBuilder

一般我們使用Java運行其他類中的方法的時候,無論是靜態調用還是動態調用,都是在當前的進程中執行的。也就是只有一個Java虛擬機實例在運行。有時候需要通過Java代碼啟動多個Java子進程,這樣做會消耗些資源,但是程序變得更穩定。因…

mysql可連接_mysql開啟遠程可連接

1.打開cmd窗口,進入MySql安裝的bin目錄2.執行命令登錄數據庫,之后會出現一行要你輸入密碼的mysql -u root -p3.執行以下命令分配新用戶:grant all privileges on *.* to ‘用戶名‘‘IP地址‘ identified by ‘密碼‘;4.執行完上述命令后用下面的命令刷新…

ubuntu14.04 python2.7 安裝配置OpenCV3.0

環境:ubuntu14.04 python2.7 內容:安裝并配置OpenCV3.0 今天按照OpenCV官網上的步驟裝了OpenCV但是,裝好之后python提示“No module named cv2” 首先,安裝OpenCV的步驟: OpenCV官網的安裝步驟:http://doc…

mysql導出如何不區分大小寫_mysql 不區分大小寫

show variables like %case%-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_case_table_names | 1 | 表示已經是支持忽略大小寫了-------------------------------修改 /etc/mysql/…

[iOS] Win8下在Vmware11中安裝使用蘋果系統OS X 10.10

近來因為人事變動,領導打算安排我做 iOS 的項目,所以需要花一些時間提前準備一下iOS相關的東西。因為自己手頭上并沒有 Mac(過年為了閑的時候能玩玩游戲買了聯想,唉),想想不能只靠每天在公司的時間練 demo …

html5的網絡書店圖書網站代碼_【技能提升】10個編寫HTML5的實用小技巧

1. 新的文檔類型(Doctype)html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>上面這個既麻煩又難記的XHTML文檔類型你還在使用嗎?如果還是這樣的話,現在該切換到新的HTML5文檔類型…

hdu2457 Trie圖+dp

hdu2457 給定n個模式串, 和一個文本串 問如果修改最少的字符串使得文本串不包含模式串, 輸出最少的次數,如果不能修改成功,則輸出-1 dp[i][j] 表示長度為i的字符串, 到達狀態j(Trie圖中的結點)…

sql中if語句的用法_Python中的if條件語句

Python中的if語句在實際的編程中,經常需要檢查一系列條件,并據此決定采取什么措施。正常情況下,程序的執行是自上而下的進行,if語句則根據條件判斷,實現程序的執行順序改變。一、if-else語句1、語法:if 條件…

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解決方法

權限問題,授權 給 root 所有sql 權限 mysql> grant all privileges on *.* to root"%" identified by ".";Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)轉載于:https://www.cnbl…

mysql中non用什么_mysql Non-Transactional Database Only(只支持MyISAM)

后來在做WordPress,一開始還不知道原來WordPress用的是InnoDB數據引擎,于是在原來的數據庫里面就建了一個數據庫,一開始也沒發覺問題,安裝,導入sql,都沒問題,當時也沒多想。直到這幾天因為又要裝多一個Word…

openSUSE 11 上的配置可以Xmanager遠程桌面

openSUSE 11 上的配置(適用于默認圖形環境為KDE的Linux): 1、配置KDM。 openSUSE 11的默認圖形環境為KDE,雖然可以同時安裝GDM和KDM,但默認只啟動了KDM。所以openSUSE 11只需配置KDM,如果你啟動了GDM來代替KDM,則配置可…

timed_waiting線程是否占用cpu_程序CPU占用率飆升,如何定位線程的堆棧信息?超詳細,值得收藏看不懂還有配套視頻 第319篇...

相關歷史文章(閱讀本文前,您可能需要先看下之前的系列?)國內最全的Spring Boot系列之三2020上半年發文匯總「值得收藏」GraphQL的探索之路 – SpringBoot集成GraphQL小栗子篇二 - 第315篇GraphQL的探索之路 – SpringBoot集成GraphQL之Query篇三 - 第316篇GraphQL的…