如何優雅地搭建Simulink模型?
Simuilnk里的模型代碼總覺得會挺不美觀,想請教有沒有更好的優化模型的方法,或是讓自己的模型看起來更加簡潔而非各種信號線亂飛。。主要是用在基於模型設計里的自動代碼生成部分
2017/1/9 更新新版本的JMAAB對於模型架構的規定更加詳細,建議閱讀。==============================================================
先看看MAAB建模規範,對於模型的層次劃分、信號與模塊的使用方式均有說明,對於MAAB的介紹可見Industry Standards,裡面有下載鏈接。有興趣的可以自己下下來看,總共136頁。這個文檔我列印了好幾次,總是迷之遺失,然後我再打一份放在手頭備用。(另一個類似的文檔是SAE J670:汽車動力學術語)
dSPACE也有一份規範叫dSPACE Modeling Guidelines 3.0,如果要用TargetLink,還是應該參考一下。==============================================================以下簡單的說明MAAB建議相關企業強制使用的模型架構:- 依據是否存在觸發層,將模型架構分為TypeA和TypeB兩類,主要包括頂層、觸發層、結構層和數據流層

- 頂層規定模型總體的輸入輸出(相當於模型的對外介面,也是在自動代碼生成後與底層軟體聚集成的借口),建議通過注釋對實現的功能進行描述

- 觸發層通過觸發子系統或函數調用子系統說明調用時序

- 結構層說明子模塊之間的關係,注意,這一層中的子模塊必須是原子子系統


- 數據流層:這一層才是具體的計算,包括加減乘除之類的。
==============================================================
其他與模型可讀性相關的一些規範
7.1.3. db_0042: Port block in Simulink modelsIn a Simulink model, the ports comply with the following rules:? Inports should be placed on the left side of the diagram, but they can be
moved in to prevent signal crossings.? Outports should be placed on the right side, but they can be moved in toprevent signal crossings.? Duplicate Inports can be used at the subsystem level if required, but shouldbe avoided, if possible.o Do not use duplicate Inports at the root level.

? Parallel blocks or subsystems are arranged from top to bottom.

are exceptions to this rule.









if-else flow實現


.
模型建不好,妹紙追不到。題主,我覺得有必要教給你一點人生的經驗。
1、要有清晰的架構
一個模型通常由多個職責分工不同的子模塊組成,如果說一個子模塊是一片葉子,那麼架構混亂的模型就如一堆落葉,讓人無從下手。
2、對齊
對齊之前↓↓

3、盡量避免Line轉彎和交叉
普通青年↓↓


直接用S函數或者matlab function模塊寫;多用from和goto接線;多劃分子模塊
這玩意算是個藝術,現在回頭看我剛學習建模的時候,搭的是個鎚子!丑爆了。
模塊對齊、布局合理、線儘可能的不交叉、主路徑儘可能保持在一條線上,定義好每一層的顏色(類似觸發層、數據流層),大的模型多用form goto
也是間接培養自己的強迫症
推薦閱讀:
※汽車電子運用目的,如何學習simulink?
※怎樣實現不同控制演算法的切換?
※用 simulink 模擬電機,電機的原理已經了解,但是之前沒用過 simulink 有什麼好的推薦快速上手 simulink 的?
※使用simulink代碼生成,硬體底層函數自己寫更好,還是應該直接生成到目標晶元中?
※怎樣提高simulink建模能力?






