基於模型進行嵌入專案的開發,在模型建設方面主要分兩個部分:
乙個是控制策略、控制演算法的建模:這部分所建立的模型在後續的工作中主要用來進行控制**、以及自動**生成及演算法實現;
另乙個是被控物件模型:這一部分一般不需要生成產品級**,主要作用是用來驗證第一部分模型的正確性,以及能夠方便的在模型階段進行一些控制引數的初始優化。建立被控物件模型的方法很多,常見的方法有:
·數學建模:一般是通過分析控制物件的物理學、化學等規律,建立方程組,推導狀態方程,然後將得到的狀態方程或者再轉化為傳遞函式,使用simulink中的相應積分微分模組搭建出相應的系統動態結構圖。
·物理建模:利用simulink的simscape工具箱根據被控物件的物理連線方式(傳動、電氣、液壓、機械)直接使用工具箱中的相應模組進行被控物件的物理結構連線的描述。simscape會根據你定義的連線方式,設定的物理引數,自動進行模型的解算,推導出相應的速率、位移等等,以便觀察控制物件的被控效果。
·資料建模:很多時候有一些被控物件沒有或者不方便用固定的物理公式進行描述,比如電池、輪胎等等,但是這些被控物件確實存在著一些規律,這時普遍採取的方法是對被控物件進行大量的測試實驗,獲取實驗資料,利用這些資料,可以用matlab進行資料處理,推導出在一定條件下的多項式公式或擬合曲線,作為被控物件的特徵描述。這種方法在電池系統等設計中比較常見。
關於被控物件的描述更多的可能是模型工程師或者是被控物件領域內工程師所應該關心的事情。而策略工程師和電子控制工程師關心較多的還是第一部分模型的搭建和**實現。這一部分的工作其實也應有幾個細分:
·控制策略模型的搭建由策略工程師完成。策略工程師要對被控物件的特性熟悉,並且有相關系統的控制經驗,並且能夠非常熟練的運用simulink和stateflow工具進行控制邏輯的描述。這一部分可以說是專案的靈魂所在,乙個好的控制構架直接決定了最後系統的好壞。要考慮模型的層次結構,比如一般多人參與的專案多用modelreference,通用的模組可以定義為library;模組之間的執行順序,演算法的效率或者考慮因素是否全面等等。
·將控制策略模型轉化為產品級**是由嵌入式軟體工程師考慮的事情,這一部分應該是系統的肌肉,系統可不可靠,是否穩定與健壯,都依賴於這一部分工作了。或者可以稱之為軟體整合工程師,應熟悉embedcoder工具的配置,並與與策略工程師進行合理的資料型別的定義約定,甚至有時候模型的定標工作都由軟體整合工程師來進行。通過對模型生成**和資料介面的合理部署,embedcoder生成的**同樣可以達到良好的可讀性和可維護性。
·模型的測試工作,一般由模型測試工程師完成,當然這裡的職位分工並不是一定的,包括上面的策略工程師和軟體整合工程師,在小的專案中可能都是乙個人。模型的測試工作中,針對策略工程師的工作結果做的測試叫做mil,直接利用pc機,在simulink的環境中完成**實驗;對軟體工程師生成**進行的測試叫做pil或者sil(處理器在環和軟體在環),這個過程可以檢測出**執行的效率。測試過程主要是針對模型的輸入製作測試用例,然後檢查輸出的結果是否正確。在simulink裡輸入一般由signalbuilder或system test等工具進行管理,輸出可有modelverification工具箱中的模組進行校驗。當然,更為實用的方法是使用excel加指令碼的方式,進行測試,使用指令碼將excel中的資料讀入workspace中然後再將其對應到模型的輸入埠,通過m語言呼叫執行模型,得到workspace中的輸出結果,然後將結果和excel中的預期結果進行對比,並輸出報告。 這個過程聽起來挺簡單,但是確是需要寫一大堆m語言的**來實現的。不過聽說mathwork在2013版的時候將會整合測試驗證工具,並推出能夠實現這樣功能的工具,期待啊~~~~
當然實現這樣的產品,並保證其高效可靠,中間工作量還是很大的,如果自己來做中間需要用大量的s-fuction對底層硬體進行描述,針對特定的目標板定製tlc檔案等等。從專案開發的角度考慮,除非是專門做出這樣的定製化的「快速原型」**板,否則一般的專案還多是採用較為中間的辦法,也就是進行產品化**生成然後人工進行**整合,節省了「目標板模型化」的成本和時間,而且利於專案**檔案的管理與維護(說句玩笑話:有時候機器生成的**自己看一看才夠放心嘛,呵呵!),有時候進行問題追溯和**調整也更為方面和靈活,這一點在底層**還不是特別完善的情況下顯得尤為突出。
其實囉囉嗦嗦寫了這麼多是想對基於模型的開發有個整體的概括,但是自己入行尚淺,有很多地方還是領悟的不到位,如有看官不幸看到,還請多多指教。
嵌入式專案的開發經驗
define board addr uint16 t 0 1 8 巨集定義只能定義常量不可定義變數 define board addr board id 10 0 board id 10 0 8 board id為變數,所以不成功 receive flag 1 定義標誌位,if 語句常用標誌位為1來...
基於ARM的Qt Creator嵌入式開發環境搭建
平台 ubnutu10.04 交叉編譯器 arm linux gcc 3.4.1 在qtqt everywhere opensource src 4.8.1.tar 解壓為3 份,可分別命名為 qt x11 qt x86 qt armqt x11版本可以產生 qt開發工具 designer qt介面...
嵌入式系統的開發
一.嵌入式系統的開發過程和工具 1.開發步驟 1 需求分析與規格說明 通常包括功能部分和非功能部分,非功能部分需求主要是指效能 成本 尺寸 重量和功耗等 2 系統設計 也叫做概要設計或總體設計,根據規格說明書中系統要實現的功能,確定如何實現這些功能的硬體和軟體,即哪些功能由硬體完成,哪些功能由軟體完...