關於Model Based Design的二三
很久很久以前,有一片森林......
額 不好意,翻錯書了。言歸正傳,這個二胎就Simulink。
Simulink比Matlab晚生了幾年(小時候取名叫Simlab後來改名為Simulink)。他是個標準90後,不再是代碼而是方塊,圓圈加線條。很快他受到了廣大工程師的喜愛,而在使用方法上工程獅們需要一個酷炫的名字才好和程序猿一樣裝x啊,不然他們張口閉口design pattern,unit test的,獅子們沒的說豈不很沒面子,於是就誕生了Model Based Design。 (其實不是的。。。因為工程獅不像程序猿,我們不裝x)講真,到底是什麼催生了MBD呢?
在技術高速發展的今天,企業都在追求工程開發上兩方面的提高,一是要縮短開發時間,二是要提高產品質量。 工程獅面臨這兩大問題的時候心裡一定是罵娘,因為這二者本身就是魚和熊掌。
舉一個例子來說明:
汽車公司需要一個新的Electronic stability control (ESC),在傳統的研發的過程可能是這個樣子的:
1. 拿來樣車,把車交給實習生myc,讓他到各種路面上做各種亂開 (myc爽歪了)
2. 收集數據,研究一下,搞些參數,搞個演算法
3. 碼代碼,碼代碼 編譯,出錯,改代碼,編譯,編譯,出錯,改代碼,編譯,出錯,改代碼,編譯,過了(雖然不知道為啥)!
4. 搞到測試的板子上,做成ESC,裝到機床上測試一下演算法,感覺好像木有問題了耶!
5. 把板子裝到樣車上,把車交給實習生myc,讓他到各種路面上做各種亂開 (myc決定下輩子要做程序猿)
6. 拿來數據看看控制效果,如果要提高產品質量或者老闆要有任何改動,就得 3,4,5再來一次
7. 最後還要留出時間來把代碼轉成production level的,檢查bug啊, MISRA compliance神馬的。
這樣傳統的waterfall(流水式?)的工程開發,顯而易見是相當緩慢的,而且任何改動都會需要很長時間來實現,也凸顯了開發時間和產品質量之間的矛盾。當然安全隱患和成本問題也都是不言而喻的。關鍵問題在於myc的離開會導致測試無法完成。
那麼Simulink和Model Based Design會是怎樣的一種體驗呢?如果領導英明神武,已經全公司範圍內啟用了MBD,開發就脫離車輛的實體,而是基於Simulink model。開發過程可能會變成這樣:
1. 通用的車輛Simulink模型已經有了(以後簡稱plant model),把具體車輛物理參數輸入進行調試,提高plant model的準確性。
2. 在Simulink搭建整個ESC,可以同時開發多個演算法來進行比較,MIL(Model In The Loop) 跑一下各種不同路況。(myc沒真車開了,決定下輩子要做程序猿)
3. 將這個ESC模型直接進行codegen, 然後deploy 到target(板子)上,進行TIL(Target In The Loop) [這個環節不僅是一個debug的環節,對於演算法的選擇和任何控制器的優化都可以在2,3中完成]
4. 當模擬數據滿意後,將deploy好的板子放到車輛上進行測試 (myc感覺安全了很多)。
5. 如果要提高產品質量或者老闆要有任何改動,就得 2,3,4再來一次。
6. 最後也不用再人肉查代碼啦,只要跑下polyspace,bug就出來啦,codegen是支持
這樣一來,在第2步進行的較高層面的系統整合測試,測試系統在不同情況下的表現。可以在開發的早期就發現類似於ambiguous requirements的問題(老闆想要的和你做的不一樣的問題)。codegen也避免了手寫代碼的痛苦(畢竟MISRA還是要follow的)。如果在車輛測試中發現實際車輛和模擬車輛表現有差別還可以進一步來完善plant model。最後整個項目搞完之後還省了很多時間去寫報告,因為這個公司都用了MBD,Simulnk model不是代碼,而是圖形。孔子日:A picture is worth a thousand words.
說到這裡,我們來列出MBD的八個核心價值觀
1. 可運行化的要求 Executable Specification
2. 高層面系統模擬 System-Level Simulation
3. 模擬測試 What-if Analysis
4. 模型化的詳述 Model Elaboration
5. 虛擬化樣機開發 Virtual Prototyping
6. 不間斷測試及認證 Continuous Test and Verification
7. 自動化 Automation
8. 知識擷取和管理 Knowledge Capture and Management
大道理講了一通,那麼話說回來了,Model Based Design到底是什麼呢?我認為對於MBD不同的人也有著不同的理解,正所謂一千個讀者就有一千個哈姆雷特,一千個工程獅也就有一千種Model Based Design。
大家來講講自己跟MBD的緣分吧!
參考資料:
Managing Model-Based Design, The MathWorks, Inc, 2015
BAE Systems Surface Ships Develops On-Board Trainer Plant Simulation for Royal Navy
University of Michigan Develops Controls for Bipedal Robots with Model-Based Design
推薦閱讀:
※加速吧!Simulink君!(一)
※Simulink之——S函數
※使用基於模型設計開發AUTOSAR軟體組件
※細節和效率,哪個更重要?
※simulink 里如何搭建運放?求指導
TAG:simulink |
