工控網(wǎng)首頁(yè)
>

新聞中心

>

業(yè)界動(dòng)態(tài)

>

設(shè)計(jì)仿真 | Adams導(dǎo)入Matlab生成的FMU

設(shè)計(jì)仿真 | Adams導(dǎo)入Matlab生成的FMU

Adams概述

Adams的機(jī)電一體化功能,結(jié)合廣泛使用的Matlab有豐富的應(yīng)用場(chǎng)景?;贔MI協(xié)議接口實(shí)現(xiàn)了廣泛的數(shù)據(jù)傳輸與關(guān)聯(lián),前面對(duì)Adams生成FMU導(dǎo)入Matlab已有文章描述,這里對(duì)Matlab生成FMU再導(dǎo)入Adams的操作流程進(jìn)行闡述。相對(duì)前者,后面這一流程需要一些第三方輔助功能加以實(shí)現(xiàn),本文針對(duì)整個(gè)過(guò)程進(jìn)行說(shuō)明。


Adams模型準(zhǔn)備

所使用的模型為Adams安裝路徑下的模型,具體為:

image.png

將上述路徑下的antenna.cmd和antenna.mdl拷貝到指定的工作路徑下,二者分別對(duì)應(yīng)Adams和Matlab/Simulink的模型。


image.png

image.png


AdamsMatlab準(zhǔn)備及FMU生成

由于Matlab/Simulink中只有FMI導(dǎo)入功能,并沒(méi)有現(xiàn)成的FMU生成功能,因此,需要一些外部輔助功能,這里以FMIkit-Simulink-3.1為例進(jìn)行說(shuō)明。

首先需要將FMIkit-Simulink-3.1壓縮包進(jìn)行解壓,存放的位置隨意,后面通過(guò)路徑加載方式將其位置告知Matlab即可。

image.png

addpath('D:\msc_setup\matlab\fmi\FMIKit-Simulink-3.1')


上述代碼完成FMIkit的加載,然后通過(guò)FMIKit.initialize()實(shí)現(xiàn)對(duì)其的初始化。至此,準(zhǔn)備工作完成。


接著,打開(kāi)控制模型antenna.mdl,對(duì)其進(jìn)行子系統(tǒng)封裝,將輸入輸出端口留好。這一步類(lèi)似于Adams與Matlab傳統(tǒng)關(guān)聯(lián)的方式中Setio的命令功能,該命令會(huì)將用于本次聯(lián)合仿真的輸入輸出端口留好,以備后面二者關(guān)聯(lián)時(shí)使用。但是執(zhí)行其之前,還是需要Adams導(dǎo)出M文件,并在Matlab主窗口中執(zhí)行等操作。相對(duì)而言使用FMI接口就沒(méi)有這些操作,Adams中沒(méi)有輸出M文件類(lèi)似的操作,Matlab中也沒(méi)有執(zhí)行其它命令的操作,整體操作更加快捷高效。具體子結(jié)構(gòu)的生成,對(duì)于有Matlab/Simulink使用經(jīng)驗(yàn)的用戶(hù)應(yīng)該不是問(wèn)題,可以在右鍵菜單中直接將選中模型進(jìn)行子結(jié)構(gòu)化,亦可以使用Simulink的子結(jié)構(gòu)元件進(jìn)行定義。子結(jié)構(gòu)定義完成后,甚至還可以進(jìn)行一些封裝的定義,使得展現(xiàn)更直觀等。具體如下所示:


image.png


打開(kāi)模型參數(shù)設(shè)置對(duì)話(huà)框,求解器類(lèi)型這里選擇固定步長(zhǎng),如下所示:


image.png


由于FMU模型其核心就是DLL文件,將Simulink模型轉(zhuǎn)化為動(dòng)態(tài)鏈接庫(kù),本質(zhì)上是一個(gè)代碼編譯、鏈接、生成的過(guò)程,因此會(huì)需要當(dāng)前計(jì)算機(jī)上有合乎要求的編譯器支持,比如VS系列版本或者其它類(lèi)型編譯器等。而整個(gè)過(guò)程是通過(guò)Matlab的RTW功能或者現(xiàn)在叫做Code Generation功能進(jìn)行實(shí)現(xiàn)的。通過(guò)選擇合適的目標(biāo)語(yǔ)言編譯器的系統(tǒng)目標(biāo)文件,這里選擇grtfmi.tlc按照特定的邏輯執(zhí)行編譯過(guò)程,將生成符合要求的FMU模型文件。


image.png


在FMI項(xiàng)中,可以選擇將來(lái)生成的FMU中所包含的數(shù)據(jù),如下所示中將會(huì)在FMU中具備模型圖像和sources文件夾,而binaries和.xml文件是必備的內(nèi)容。


image.png


利用CMake功能,基于選定的編譯器和平臺(tái)類(lèi)型,完成整個(gè)編譯過(guò)程。


image.png


最后一步,就是點(diǎn)擊下圖中的Build按鈕完成這個(gè)過(guò)程,生成所需的FMU文件。


image.png


Adams導(dǎo)入FMU及計(jì)算

完成了FMU的生成,轉(zhuǎn)入Adams中,啟動(dòng)多體模型,然后利用Adams/Controls中的Import功能,將改FMU文件導(dǎo)入,當(dāng)然,其本質(zhì)是導(dǎo)入其中的DLL文件。具體操作如下所示:按照一般狀態(tài)方程的模式進(jìn)行數(shù)據(jù)的轉(zhuǎn)化,因此,需要定義一個(gè)一般狀態(tài)方程的名稱(chēng),將來(lái)所有相關(guān)數(shù)據(jù)都在該對(duì)象之下。另外,由于沒(méi)有用Adams/Controls的輸出,所以這里的Import I/O Signals from Existing Controls Plant按鈕點(diǎn)擊沒(méi)有任何響應(yīng),可以直接利用下面的From Poutput/Pinput完成輸入輸出信息的關(guān)聯(lián)。最后,可以按照實(shí)際要求設(shè)定交互時(shí)間等。確認(rèn)后,將會(huì)收到相關(guān)的反饋信息。


image.png


下圖中展示的是其相關(guān)物理量


image.png


上面兩圖為立柱的轉(zhuǎn)角,只不過(guò)前一圖是通過(guò)端口信號(hào)獲得,沒(méi)有單位,后一圖為直接測(cè)量立柱的角速度獲得,可以看到兩者數(shù)值上是嚴(yán)格一致的。下圖為角位移。


image.png


Adams總  結(jié)

Matlab或其它一維軟件生成的FMU導(dǎo)入Adams中進(jìn)行聯(lián)合仿真應(yīng)用,在實(shí)際工程中有豐富的應(yīng)用場(chǎng)景,而且這種方式,由于以Adams為主展開(kāi)仿真,因此,對(duì)于很多基于多體的仿真形式得以方便地實(shí)現(xiàn),比如聯(lián)合仿真下的變拓?fù)浞治?,雖然我們前面有文章描述將Adams模型導(dǎo)入Matlab中進(jìn)行變拓?fù)浞治龅姆椒?,但是,仍舊還是直接在Adams中實(shí)現(xiàn)更為方便,也更適合更廣泛的用戶(hù)全體的需求。只不過(guò)對(duì)于常規(guī)軟件生成FMU看似必備的功能,而Matlab在此處還需要借助一些手段才能實(shí)現(xiàn)(實(shí)現(xiàn)方法有多種),造成了初學(xué)者甚至有一些軟件使用經(jīng)驗(yàn)人員的困難,為此,希望本文對(duì)大家有所幫助。


審核編輯(
黃莉
)
投訴建議

提交

查看更多評(píng)論
其他資訊

查看更多

會(huì)議通知 | 關(guān)于召開(kāi)全國(guó)智能檢測(cè)與先進(jìn)制造行業(yè)產(chǎn)教融合共同體2024年會(huì)

線(xiàn)下培訓(xùn) | PC-DMIS應(yīng)用提升年終培訓(xùn),12月28日-29日,青島開(kāi)班!

生產(chǎn)制造 | 數(shù)控加工仿真-NCSIMUL如何設(shè)置角度頭刀具

線(xiàn)下培訓(xùn) | VTD & Cradle CFD免費(fèi)培訓(xùn)正在報(bào)名中

設(shè)計(jì)仿真 | Simufact Welding焊接工藝仿真網(wǎng)格劃分技巧