用函数实现simulink_VCU/BMS基于模型的开发---Simulink 代码集成
本文承接之前的simulink的MBD開發的文章,這次我們來嘮嘮,MBD生成代碼后,如何跟底層代碼進行集成,并生成對應的hex,mot,A2L等相關文件!
啥叫集成?
集成就好像結婚,談戀愛,找女朋友!找一個臭味相同的兩個人,然后一起結婚,生個小孩,這個小孩就是對應的mot,hex 文件。
你找女朋友最重要的是啥?其實就是“臭味相同”其實就是共同的愛好,生活等,也就是集成代碼中,需要弄清楚底層應用層的接口與需求,只有這樣集成才不會有bug,結婚后才會幸福美滿。
如何談戀愛,如何結婚呢?高富帥有高富帥的玩法,今天搞個法拉利,明天搞個蘭博基尼,屌絲有屌絲玩法,今天送個花,明天請吃個麻辣燙,今天壓馬路,明天逛公園,只要功力夠強最終都可以到幸福的港灣,就像代碼集成,高大上的大公司,集成就是買買買,各種工具鏈,然后一鍵生成,屌絲公司就是各種盜版,發揮群眾力量,搞各種腳本,來進行標準化的集成,不過最終還是能生成同樣的軟件。
扯了半天,今天我就來當次非誠勿擾的主持人,搞個事情,聊聊如何談戀愛,如何集成!哈哈哈!整的自己跟孟非一樣土豪,其實自己就是個屌絲!
軟件代碼集成整體架構:
Simulink 的代碼集成,分為兩種方法,一種是老土,老土的方法,Low 逼工程師,Low 逼公司專用,另外一種就是高大上的方法,高端大氣上檔次,土豪公司專用。下面來逐個介紹。先來科普一下簡單的軟件架構。
包含三層,我們大多都是生成對應的APP層代碼,然后與RTE,底層進行集成!在整體的軟件架構中,Simulink 的APP成生成的代碼架構也根據對應的需求及公司的情況,也不同。如下所示。
應用層Simulink 生成代碼的架構:
應用層的模塊依據功能,分為多個block, 但是block的封裝方式,造成在集成時候,代碼的架構 不同,一種為library模式,一種是Model Reference模式,如下圖所示:
區別定義:
Matlab 官方定義,如果不會重用的子模式,大多用model reference,經常被重用的大多用Library,比如某個均值算法,逼近算法,PID算法等。
代碼生成時候定義,library 里面的模塊通過一些設置可以重入函數,如果不是一些特定的設置,不會生成單獨的.C,.H文件,而應用model refernece 時候,會生成一系列的單獨文件。
應用場景:
如果你們公司開發的人很多,職責分析很明確,建議用model reference,如果小公司,開發的人又是集成的人,一個人身兼多職,就直接library 的模式就可以!要不你會很累!一磚多能的人一般都在小公司,那下面來介紹一下小公司的集成方法。
Low 逼XX 公司專用方法:
小公司大多由于人及資源的限制,大多數都是依靠公共的軟件與資源進行集成編譯,在運行完初始化函數以及底層的驅動函數后,底層軟件提供對應的調度接口,按照軟件的調度順序,進行周期調度Step函數,事件型的函數大多都在應用層處理,底層就不管了,大致的架構如下圖所示:
其中下面描述的Step流程內容如下所示,偶們的一些項目大多用的是Bat 腳本與Python 腳本進行 集成編譯。
Before Build:利用Bat 腳本將所需要的應用層c文件,放入對應的文件夾,修改查看函數名字是否符合底層要求等:
Build:用python 調用編譯器內核或者后臺打開編譯器,link所有的文件進行編譯。
After Buid:有的公司也叫PB(Post Build),將生成的文件打標簽,放入對應的文件夾,有的公司還調用hex view在hex里面進行添加對應內容 以及check 對應的checksum ,一般你所看到的版本,日期,項目名字的信息大多都在這個步驟完成。
以上這種方法大多依靠NB的技術大拿,從而減少公司買一些整套的軟件管理編譯專用軟件的錢,大多數新能源企業都是這么搞,就因為省錢!但是還有一些土豪世界500強,用的是高大上的方法。
土豪公司專用方法:
為啥說土豪,是因為很多編譯步驟都是在云端實現或者有對應的專用軟件,而且這些專用軟件都是土豪公司自制,很多世面上都沒有,具體如下圖所示:
在這個編譯過程中大多會用到,QAC,Clearcase,Doors ,ClearQuest等大型軟件,之間的耦合也是通過一些腳本進行連接,大多數目前用的是Perl 或者Python.
編譯的過程也包含三個步驟,但是大多都是后臺運行,一般看不到。
今天就先扯這么多吧, 集成就這么多了嗎?當然不是,還有一個很重要的知識點,就是不同速率的任務函數如何在simulink中實現,就是一個屌絲如何追求白富美,一個高富帥如何追求丑小鴨,那我們就下次再來屢吧!
講解的視頻,最近實在太忙,就不搞了,等有時間給大家免費補上,感覺不錯分享個朋友圈,點個贊,來犒勞一下本吊絲的辛勤勞作!
之前發布的Simulink 資料已經恢復,感興趣朋友,關注微信公眾號,回復“simulink ”就可以獲取下載方法,謝謝嘍!
在這里就不謝任何人了,所有圖片介紹,都是本屌絲搞得,若與你的文章雷同,你肯定是盜版,哈哈!
知乎專欄: 汽車控制系統Live名稱:電池管系統BMS 技術,市場,工作現狀與挑戰
電池管理系統BMS-技術現狀與前景?www.zhihu.com微信公眾號: 新能源控制系統及MBD開發
總結
以上是生活随笔為你收集整理的用函数实现simulink_VCU/BMS基于模型的开发---Simulink 代码集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 事件EVENT,WaitForSingl
- 下一篇: 数据结构进阶篇-跳表