設(shè)計仿真 | Adams 與 Matlab 通過 FMI 聯(lián)合仿真
Adams與Matlab的聯(lián)合仿真通過Adams/Controls中的接口功能已經(jīng)很早就實現(xiàn),具體是通過Adams安裝路徑下的支持文件,利用Adams/Controls中的導(dǎo)出功能,將Adams模型生成模型文件以及同Matlab的接口文件*.m,然后在Matlab中執(zhí)行該*.m文件后,再執(zhí)行相關(guān)命令將機(jī)械和控制融合為一個模型進(jìn)行求解。該功能實現(xiàn)比較容易,操作比較簡單,因此工程師普遍接受并展開了廣泛的工程應(yīng)用,而隨著FMI技術(shù)的發(fā)展,有了更多借助FMU實現(xiàn)二者聯(lián)合仿真的需求,為此,本文針對Adams與Matlab通過FMI協(xié)議接口進(jìn)行聯(lián)合仿真展開描述。
01
模 型 準(zhǔn) 備
Adams & Matlab
為了展現(xiàn)本文的通用性,使用Adams安裝路徑下的模型,具體為:
將上述路徑下的antenna.cmd和antenna.mdl拷貝到指定的工作路徑下,二者分別對應(yīng)Adams和Matlab/Simulink的模型。
02
聯(lián) 合 仿 真
Adams & Matlab
基于FMI協(xié)議接口的聯(lián)合仿真與二者傳統(tǒng)的方式類似,需要在多體模型中將輸入輸出信號以狀態(tài)變量的方式定義好并與模型建立關(guān)聯(lián),控制模型需要將多體模型融合,將輸入與輸出信號按照規(guī)定的邏輯關(guān)系進(jìn)行關(guān)聯(lián)。
Adams模型的操作
首先將描述點驅(qū)動的azimuth_motion_csd失效,因為,我們將使用Matlab傳過來的驅(qū)動力矩替換它。
Adams與Matlab聯(lián)合仿真,需要基于Adams狀態(tài)變量描述輸入和輸出信號,本文提供的模型,輸入和輸出狀態(tài)變量已經(jīng)定義好,如下所示:
然后,利用Adams/Controls中的FMI功能將模型導(dǎo)出為相應(yīng)的FMU模型。當(dāng)然,我們對FMI協(xié)議的類型需要明確一下,Cosim和ModelExchange并且二者還會根據(jù)實際應(yīng)用劃分為Master和Slave等模式。我們這里以Adams的角度看,展示的是Cosim中的Slave的模型,因此,通過Adams將模型導(dǎo)出為FMU后,再將其導(dǎo)入Matlab中,在后者環(huán)境中提交仿真。另外,在生成FMU時,Adams支持FMI1.0和2.0兩個版本,兩者對編譯環(huán)境的依賴有所區(qū)別,為了方便,這里使用了FMI2.0版本生成FMU。具體生成FMU如下所示:
上圖中生成的Controls plant名稱、前綴等保持默認(rèn)不變,將輸入輸出信號進(jìn)行選擇,將Target Software進(jìn)行選擇FMU v2.0,其它保持不變。這里需要說明的是,在本對話框最下端有SmartFMU的選擇項,這個功能是近期MSC軟件所推出的一組功能,主要涉及Adams/Easy5/Elements三個產(chǎn)品在FMI方面的應(yīng)用,可以只生成一次FMU,用戶可以方便地對模型參數(shù)進(jìn)行修改等,是一項非常實用的功能。生成的文件如下:
Matlab模型的操作
在Matlab中,首先打開控制模型antenna.mdl,之后將其中的橙色框刪除,此時為控制模型的初始狀態(tài)。然后,在Simulink庫中找到FMU的功能元件,拖拽到Simulink控制模型中,最后,將所需的FMU模型通過路徑進(jìn)行指定和選擇,并將輸入輸出信號進(jìn)行關(guān)聯(lián)。完成后的狀態(tài)如下所示:
聯(lián)合仿真提交計算與結(jié)果
本次仿真以Matlab為主進(jìn)行任務(wù)提交,因此,需要借助Matlab環(huán)境完成,可以對其求解器參數(shù)進(jìn)行設(shè)置,然后點擊Run進(jìn)行任務(wù)提交。
仿真完成后其輸入輸出的時域曲線可以通過雙擊Scope進(jìn)行展現(xiàn),具體如下所示:
上圖中分別對應(yīng)控制扭矩、角位移和角速度隨時間的歷程。
既然是聯(lián)合仿真,那么同樣可以在Adams中查看結(jié)果。為此,需要首先找到聯(lián)合仿真的計算結(jié)果,然后導(dǎo)入Adams中,在其后處理環(huán)境中進(jìn)行查看。
由于不同軟件的設(shè)置不同,聯(lián)合仿真結(jié)果存放的位置也是不同的,甚至有些軟件基于FMI聯(lián)合仿真后,其聯(lián)合仿真的結(jié)果僅在聯(lián)合仿真過程中存在臨時文件中,一旦仿真終止,其結(jié)果也會刪除。對于Adams與Matlab通過FMI的聯(lián)合仿真,其結(jié)果存在于聯(lián)合仿真的工作路徑之下,會新形成一個文件夾slprj,然后在其中找對應(yīng)FMU名稱的文件夾,一直深入到resources文件中可以看到對應(yīng)的結(jié)果文件,如下所示:
在Adams后處理中,可以看到如下結(jié)果,分別為角位移、扭矩和角速度等。
03
結(jié) 論
Adams & Matlab
通過上述內(nèi)容,可以看到Adams與Matlab通過FMI接口可以方便地完成聯(lián)合仿真應(yīng)用流程,整個流程設(shè)置相似于傳統(tǒng)生成M文件的方式,甚至還要更簡潔。比如,傳統(tǒng)生成M文件方式在Matlab中融合模型時,需要執(zhí)行.m文件并錄入adams_sys命令將橙色框調(diào)出兩步,而實用FMI的話只需要將FMI框調(diào)出設(shè)置好指定的FMU路徑一步即可。另外,如果使用MSC系列軟件新功能SmartFMU的話會有更方便的工程應(yīng)用。
工程師必備
- 項目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















