徐劍琴,李克訥,梁奇峰(. 廣西科技大學(xué)工程訓(xùn)練中心; . 廣西科技大學(xué)電氣與信息工程學(xué)院,廣西 柳州 545006)
?
MATLAB/Simulink下實現(xiàn)實時一些方法總結(jié)
徐劍琴1,李克訥2,梁奇峰1
(1. 廣西科技大學(xué)工程訓(xùn)練中心; 2. 廣西科技大學(xué)電氣與信息工程學(xué)院,廣西 柳州 545006)
摘 要:總結(jié)了使用MATLAB/Simulink進(jìn)行實時仿真時實現(xiàn)實時的幾種方法,包括使用Real-time Workshop和編寫S函數(shù)的方法,同時通過實驗檢驗了C語言S函數(shù)實時模塊的功能。經(jīng)仿真測試表明,在對時間精度要求不是很高的過程進(jìn)行實時仿真和分析時,可以得到較好的效果。
關(guān)鍵詞:實時;MATLAB/Simulink;Real-time Workshop;S函數(shù)
仿真技術(shù)由于能省去了實物系統(tǒng)實現(xiàn)過程中的繁瑣步驟,對問題的解決有著良好的針對性,因此給科研和試驗提供了很大的便利[1-3]。但另一方面,仿真由于對模型的依賴性,其結(jié)果并很難完全反映實際情況。因此,為了得到更接近實際情況的結(jié)果,可采用將數(shù)學(xué)模型與物理模型或?qū)嵨锵嘟Y(jié)合半實物仿真[1,2]。半實物仿真系統(tǒng)既包含虛擬對象,又包含實物對象,因此更真實地反映實際系統(tǒng)的動、靜態(tài)特性和非線性因素。由于有實物的接入,半實物仿真對實時性有著較高的要求。
Matlab/Smulink在控制理論研究中是一個很優(yōu)秀的仿真軟件,可方便地對控制算法或控制對象進(jìn)行建模和仿真實驗[2-8]。在仿真情況下,仿真運(yùn)行的時間取決于仿真機(jī)的運(yùn)行速度和模型的復(fù)雜程度等因素,因此Matlab/Smulink模型運(yùn)行的時間可能遠(yuǎn)小于實際過程的運(yùn)行時間。但在半實物仿真中,實物對象的實際執(zhí)行時間與模型仿真時間可能不一致,因此有必要使Simulink虛擬模型與外部連接的硬件運(yùn)行同步,實現(xiàn)實時仿真,以獲得接近實際情況的實驗結(jié)果。要用Matlab/Smulink進(jìn)行實時仿真,可以利用自帶的Real-Time Workshop和Real-Time Windows Target、xPC Target等工具,也可編寫能進(jìn)行實時仿真的應(yīng)用程序,靈活地實現(xiàn)實時[4-9]。本文將針對在Matlab/Smulink環(huán)境下的實時仿真、控制,探討和總結(jié)一些實現(xiàn)實時的方法。
如前所述,用Matlab/Smulink進(jìn)行實時仿真的方法主要有利用Matlab/Smulink自帶的實時工具和自編實時程序兩類。本文分別以Real-Time Workshop工具和自編S函數(shù)為例進(jìn)行探討。
2.1 用Real-Time Workshop實現(xiàn)實時
Real-Time Workshop(RTW)是一個和Simulink配套使用的工具[4,5]。RTW可以由Simulink框圖生成優(yōu)化的語言代碼,再由生成的代碼建立半實物仿真并產(chǎn)生實時控制與快速原型設(shè)計所需的應(yīng)用程序,得到的應(yīng)用程序可獨(dú)立于MATLAB環(huán)境,因此能實現(xiàn)實時同步并可應(yīng)用于實時的工業(yè)過程中。利用RTW進(jìn)行實時仿真的步驟大致如下:
首先,建立Simulink仿真模型;然后配置相關(guān)RTW參數(shù),一般設(shè)置為定步長Fixed_Step,單任務(wù)single tasking,external模式;接著點(diǎn)擊build按鈕對目標(biāo)進(jìn)行編譯,自動生成C代碼文件,生成的C代碼可用C或者C++編譯器作適當(dāng)修改,并編譯連接。最后,點(diǎn)擊connect按鈕,與目標(biāo)進(jìn)行連接(connect to target),運(yùn)行仿真模型,對系統(tǒng)過程進(jìn)行分析。
值得指出的是RTW支持多種常用的I/O設(shè)備,例如模數(shù)轉(zhuǎn)換器(A/D)、數(shù)模轉(zhuǎn)換器(D/A)計數(shù)器(counter)等[6]。在Simulink模塊庫下雙擊xPC Target模塊組圖標(biāo)可相應(yīng)顯示出I/O設(shè)備的型號等。這樣就可以將虛擬的Smulink模型與實際的受控對象或?qū)嶋H的控制器通過I/O設(shè)備和計算機(jī)連接起來,構(gòu)成半實物仿真系統(tǒng),進(jìn)行仿真分析、過程控制等。
2.2 編寫S函數(shù)實現(xiàn)實時
由于RTW只支持部分型號I/O設(shè)備的驅(qū)動,而且也不能直接和一些常用的控制軟件進(jìn)行實時通信,這給使用RTW進(jìn)行實時仿真帶來了一定的局限性。此時用戶可根據(jù)需要,編寫能實現(xiàn)特定功能的S函數(shù)(S-Function)。S函數(shù)可使用Matlab或者C語言編寫。S函數(shù)編寫靈活,只要在函數(shù)程序模板適當(dāng)?shù)奈恢眉尤胱约旱拇a,然后編譯,就生成實現(xiàn)相應(yīng)功能的Simulink模塊,并可以隨時調(diào)用。而且,Matlab還給用戶提供了開放性接口,可對系統(tǒng)的時鐘和端口進(jìn)行操作。這為用其他方法靈活實現(xiàn)實時仿真提供了可能。
根據(jù)S函數(shù)程序的執(zhí)行流程,可以在計算離散狀態(tài)更新值時設(shè)置一個空循環(huán)等待,原理如圖1示,只有當(dāng)模型實際運(yùn)行時間current-start(即系統(tǒng)時間)達(dá)到設(shè)置的仿真時間t,仿真才結(jié)束,這樣就可以使Simulink仿真時間與實際時間同步[6-9]。要注意的是,如果是C文件的S函數(shù),還要用MATLAB的mex工具對其進(jìn)行編譯,生成.dll文件。在使用時,只要將生成的S函數(shù)模塊添加到Simulink模型中,便可使系統(tǒng)模型運(yùn)行于實時時間。
為了驗證這一實現(xiàn)實時的方法,根據(jù)圖1所示的實現(xiàn)同步的原理,可把系統(tǒng)時間、仿真時間以及它們的時間差值作為系統(tǒng)的輸出向量,編寫名為“sfuntmpl_basic.c”的C文件,對其編譯后生成sfuntmpl_basic.dll文件。然后建立控制過程半實物仿真平臺[2],用上位機(jī)的控制軟件對Matlab/Smulink虛擬對象進(jìn)行實時控制。其中,adsoft S-函數(shù)模塊是訪問PCI-1710A/D的接口模塊,把上位機(jī)的控制變量傳遞給虛擬對象;Dasoft S-函數(shù)模塊實現(xiàn)虛擬對象與PCI-1710 D/A的對接,把被控變量輸出給上位機(jī);sfuntmpl_basic模塊用于支持Simulink模型進(jìn)行實時運(yùn)行。設(shè)置好仿真參數(shù)、仿真時間后,即可開始運(yùn)行仿真。通過示波器Scope可觀察到的sfuntmpl_ basic實時功能模塊輸出響應(yīng)曲線,從輸出的結(jié)果分析中可知,仿真時間與系統(tǒng)時間基本重合,兩者的時間差值也很微小[2]。另外,從控制軟件實時監(jiān)控界面可觀測到控制效果,仿真過程也表明,控制軟件能對Smulink虛擬對象進(jìn)行實時控制[2]。并且,從仿真結(jié)果分析可知,利用這一方法對時間精度要求不是很高的過程仿真實現(xiàn)實時是可行的。
本文探討和總結(jié)了MATLAB/Simulink下能實現(xiàn)實現(xiàn)實時仿真的一些方法,即可用Real-Time Workshop實現(xiàn)實時,也可通過編寫S函數(shù)實現(xiàn)實時。經(jīng)仿真測試表明,在對時間精度要求不是很高的過程進(jìn)行實時仿真和分析時,可以得到令人滿意的效果。
參考文獻(xiàn):
[1]黃建強(qiáng),鞠建波.半實物仿真技術(shù)研究現(xiàn)狀及發(fā)展趨勢[J].艦船電子工程,2011,31(07):5-7,25.
[2]徐劍琴.控制過程實時仿真平臺的設(shè)計與實現(xiàn)[D].南寧:廣西大學(xué),2006.
[3]Li K, Zhang Y. Fault-tolerant motion planning and control of redundant manipulator[J]. Control Engineering Practice, 2012,20(03):282-292.
[4]MATLAB Real-Time Workshop User’s Guide[M]. The MathWorks, Inc.2010.
[5]薛定宇,陳陽泉.基于MATLAB/Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2002.
[6]黃家田,梁述海,李雁飛.基于RTW的閉環(huán)控制系統(tǒng)平臺設(shè)計[J].艦船電子工程,2004,24(04):86-87,98.
[7]鄭志波.基于MATLAB環(huán)境的實時仿真研究[D].武漢:武漢水利水電大學(xué),2000:26-29.
[8]周洪,鐘明慧.控制系統(tǒng)的一種簡單實時在線仿真方法[J].系統(tǒng)仿真學(xué)報,2003,15(12):1753-1755.
[9]楊辰.多變量控制系統(tǒng)的實時在線仿真系統(tǒng)研究[D].武漢:武漢大學(xué),2002.
作者簡介:徐劍琴(1979-),女,廣西北海人,碩士研究生,講師,研究方向:智能控制。
基金項目:廣西高等學(xué)??蒲许椖抠Y助(2013YB175)、廣西科技大學(xué)博士啟動基金(院科博12Z05)。
DOI:10.16640/j.cnki.37-1222/t.2016.02.246