本文轉載在我的微信公眾號:古德曼汽車工業(yè)且警。公眾號文章都會知識星球、知乎進行轉載弧轧,請有興趣的朋友可以關注我的微信公眾號
原文地址:CRUISE與Simulink聯(lián)合仿真介紹
使用AVL-CRUISE仿真軟件做新能源汽車動力經濟性仿真時雪侥,無一例外的會遇到控制策略編寫的問題碗殷。本文分析常用的幾種AVL-CRUISE與Simulink聯(lián)合仿真的方式及他們的優(yōu)缺點,幫助大家選擇合適的聯(lián)合仿真方式速缨。
介紹聯(lián)合仿真前锌妻,我們先來看看AVL-CRUISE自帶的Function模塊,這個模塊支持C語言與RPN-Formula旬牲,由于C語言比較靈活仿粹,所以應用也比較多。準確的說是一種模擬的C語言原茅,支持基礎的語法與函數(shù)吭历,可以方便使用者做一些簡單的策略(指針、結構體共同體這類的就不用想了)擂橘。
這個模塊有一個特點就是代碼不能太長(印象中是不超過400字符)晌区,如果你的控制邏輯相當復雜,那可能需要拆分成多個Function模塊來實現(xiàn)通贞。再者朗若,就是輸入輸出都以數(shù)組的形式(a[0]~a[n],y[0]~y[n]),這給編程人員造成不少麻煩昌罩,需要通過看描述才能知道輸入輸出具體代表什么哭懈。總的來說開發(fā)環(huán)境不太友好。
Matlab API
將Simulink保存的MDL文件直接加載到AVL-CRUISE的模塊中峡迷,運行的時候需要同時開啟Matlab與AVL-CRUISE兩個軟件
這種仿真的優(yōu)勢很明顯银伟,工程師可以非常直觀的看到每一個步長的執(zhí)行過程你虹,判斷是否與預先設計的邏輯相符绘搞。缺點也非常突出,這樣的仿真速度是一個步長一個步長的進行傅物,速度會非常緩慢夯辖。實際使用中也不推薦大家使用。
Matlab DLL
Simulink控制策略模型使用代碼生成技術轉換為C語言董饰,并且經過編譯器生成dll文件格式蒿褂。32位的Matlab使用自帶的lcc-win32編譯器,64位Matlab需要額外安裝Win SDK7.1編譯器卒暂,通過AVL-CRUISE提供的編譯模塊編譯生成dll文件啄栓。
根據(jù)不同編譯器選擇對應的CRUISE解算器,使用64位編譯器Platform就應當選Win64
仿真任務運行時也祠,由CRUISE解算器調用編譯過后的DLL文件昙楚,過程無需啟用Matlab程序。仿真速度非痴┖伲快堪旧,并且對策略進行封裝后削葱,策略閉源有助于保密。當然這種聯(lián)合仿真方式也有個缺點淳梦,就是只能運行經濟性任務析砸。也是就說,它只適合運行Cycle類型的任務爆袍。
如果需要做動力性仿真首繁,要么就設置一個能跑出動力性的循環(huán)工況(例如設置一個無法到達的車上,看看最后最高車速能穩(wěn)定在多少與百公里加速時間)陨囊,要不就是使用之前提到的Function模塊設計個簡單的動力性策略蛮瞄。
**如果您覺得文章對您有幫助,麻煩點擊下關注谆扎,訂閱號將會持續(xù)與您分享經驗和小工具**
CRUISE Interface
Interface聯(lián)合仿真挂捅,是通過AVL提供的Sfunction進行的,在Matlab中調用CRUISE的解算器堂湖,這個過程中無需要額外開啟AVL-CRUISE闲先。
封裝的S函數(shù)模塊需要輸入的參數(shù)有:CRUISE解算器的路徑、CRUISE的模型路徑无蜂、任務文件夾索引伺糠、任務的索引。其中任務文件夾索引斥季、任務的索引用來描述第幾個計算任務文件夾下的第幾個任務训桶。
S函數(shù)的輸出為CRUISE的輸入接口,S函數(shù)的輸入為CRUISE的輸出接口酣倾。S函數(shù)的信號數(shù)要與CRUISE的接口信號數(shù)量嚴格一一對應舵揭。即便有的S函數(shù)的輸出端口在CRUISE中沒有實際作用,也要在CRUISE將該信號連接到Monitor上躁锡,否則S函數(shù)是會報錯午绳。
在Simulink中點擊運行,就可以在加入的示波器中看到圖形映之。這種方式的運行速度雖然不如Dll方式來的快拦焚,但是比Matlab API快不少了,也方便工程師比較直觀的看到整個策略邏輯執(zhí)行的過程杠输,提高調試策略的效率赎败。這種使用Simulink通過S函數(shù)調用CRUISE工程的方式也方便廣大搞學術研究的朋友,在Matlab實現(xiàn)更多高大上的優(yōu)化算法蠢甲。但問題也不是沒有僵刮,每一次仿真只能夠運行一個仿真任務(通過任務文件夾索引與任務索引來確定)。
FMU
FMU文件是基于FMI協(xié)議進行封裝模型文件。FMI協(xié)議是獨立于建模軟件的標準接口協(xié)議妓笙,可以用于集成不同的軟件建立的不同詳細程度的模型若河,進行MIL/SIL/HIL仿真。
其實FMU文件的本質還是上面講過的DLL方式寞宫,它對DLL文件再一次進行封裝萧福。文件中增加了輸入與輸出口的描述信息。
導入FMU文件后辈赋,點擊解包就能看到輸入輸出信號的描述
FMU文件的導出需要在Matlab中安裝一個插件在Matlab的項目管理狀態(tài)下鲫忍,將Simulink導出為FMU文件
既然本質與Dll方式一致,所以優(yōu)缺點就與DLL方式是一樣钥屈,就不重復說明
最后使用表格的形式總結下內容
每種聯(lián)合仿真方式都有自己的特點悟民,需要根據(jù)自身編程習慣,項目需求等篷就,選擇合適的仿真方式