顧 輝,王洪宇,劉旭寧
(海軍航空訓(xùn)練基地 航材四站,青島 266108)
半物理仿真(Hardware-in-LooPSimulation,HILS) 是指采用部分物理模型和部分?jǐn)?shù)學(xué)模型的仿真,其中物理模型采用控制系統(tǒng)中的實(shí)物,系統(tǒng)本身的動態(tài)過程則采用數(shù)學(xué)模型。機(jī)械工程控制器半物理仿真系統(tǒng)則采用實(shí)時性要求高的的仿真計算機(jī)、運(yùn)動模擬器、目標(biāo)模擬器、控制臺來代替部分系統(tǒng)部件或者實(shí)際被控對象,而控制系統(tǒng)則采用實(shí)際物體(即硬件,主要是指工程機(jī)械專用控制器)連接成為一個半物理仿真系統(tǒng)。半物理仿真的逼真度取決于接入的實(shí)物部件的多寡、仿真計算機(jī)的速度、精度和功能等[1]。將半物理仿真系統(tǒng)引入工程機(jī)械控制器的研制過程,不僅能夠縮短產(chǎn)品的開發(fā)周期,降低開發(fā)成本,而且能使產(chǎn)品研發(fā)具有良好的可控性、重復(fù)性和安全性。
工程機(jī)械控制器半物理仿真系統(tǒng)是集計算機(jī)技術(shù)、數(shù)學(xué)建模技術(shù)及數(shù)據(jù)采集技術(shù)于一體的綜合系統(tǒng)。通過計算機(jī)控制平臺,輸入?yún)⒃囋O(shè)備的控制參數(shù),調(diào)用數(shù)學(xué)模型進(jìn)行仿真,實(shí)現(xiàn)對理論設(shè)計的驗(yàn)證。工程機(jī)械控制器半物理仿真系統(tǒng)由以下三部分組成[2],如圖1所示。
1)仿真設(shè)備:如仿真pc機(jī)、控制臺等;
2)各種接口設(shè)備:信號轉(zhuǎn)換器,I/O接口設(shè)備;
3)參試設(shè)備:工程機(jī)械專用控制器實(shí)物。
圖1 工程機(jī)械控制器半物理仿真系統(tǒng)的組成圖
為了驗(yàn)證系統(tǒng)方案的可行性、正確性以及測試控制器的各項(xiàng)性能,建立一套閉環(huán)的半物理仿真系統(tǒng)。如圖2所示,在仿真計算機(jī)中調(diào)用已建立的數(shù)學(xué)模型的DLL,通過信號轉(zhuǎn)換器、采用CAN布線方式將數(shù)據(jù)采集與數(shù)據(jù)輸出等硬件設(shè)備與工程機(jī)械控制器進(jìn)行連接,組成易于檢測、符合工程實(shí)際需要的閉環(huán)仿真環(huán)境。在實(shí)驗(yàn)和檢測過程中,各種信號如數(shù)字信號、模擬信號、脈沖信號是用數(shù)據(jù)采集卡經(jīng)信號轉(zhuǎn)換器轉(zhuǎn)換得到的。
圖2 工程機(jī)械控制器半物理仿真系統(tǒng)
具體來說,就是用半物理仿真系統(tǒng)代替部分工程機(jī)械硬件與工程機(jī)械實(shí)物部件最大限度的模擬工程機(jī)械的實(shí)際工作情況。在設(shè)計方案中,當(dāng)控制器硬件上電與仿真平臺啟動后控制信號由工程機(jī)械控制器發(fā)出,經(jīng)由信號轉(zhuǎn)換器轉(zhuǎn)換之后,再通過USB傳送給仿真計算機(jī),在軟件集成環(huán)境下運(yùn)行被控對象數(shù)學(xué)模型的DLL,輸出測試信息,該信號經(jīng)過經(jīng)信號轉(zhuǎn)換器轉(zhuǎn)換后,再傳送給控制器 (即硬件實(shí)物),返回的測試信號在控制器中完成算法后再次發(fā)出控制信號,控制信號經(jīng)由信號轉(zhuǎn)換器轉(zhuǎn)換后經(jīng)USB再次傳送給仿真計算機(jī),輸入DLL控制參數(shù)在軟件集成環(huán)境下再次調(diào)用被控對象數(shù)學(xué)模型的DLL,這樣重復(fù)多次操作就形成了工程實(shí)際需要的一個半物理仿真的閉環(huán)體系。上述工程機(jī)械控制器半物理仿真體系的流程圖如圖3所示。
圖3 工程機(jī)械控制器半物理仿真系統(tǒng)信號傳遞流程圖
工程機(jī)械控制器半物理仿真環(huán)境中被控對象的數(shù)學(xué)模型可以用VB、VC++、VC#等軟件平臺來開發(fā)。將被控對象的數(shù)學(xué)模型創(chuàng)建成.dll文件可以節(jié)省開發(fā)時間,提高數(shù)學(xué)模型的使用率,工程機(jī)械控制器半物理仿真環(huán)境中被控對象的數(shù)學(xué)模型采用面向?qū)ο蟪绦蛟O(shè)計方法。在.NET框架下使用VC#軟件創(chuàng)建具有Windows風(fēng)格的人機(jī)交互式圖形仿真界面。創(chuàng)建的仿真平臺能夠用被控對象的數(shù)學(xué)模型模擬所需實(shí)物部件并能實(shí)現(xiàn)軟硬件交互的功能,即達(dá)到了仿真的目的。實(shí)現(xiàn)在VC#軟件環(huán)境下.dll的調(diào)用、語音控制、參數(shù)設(shè)定、操作提示、仿真設(shè)置、數(shù)據(jù)顯示等功能。其中參數(shù)設(shè)定設(shè)定為工程機(jī)械控制器系統(tǒng)相關(guān)控制參數(shù)、數(shù)學(xué)模型DLL入口參數(shù)、狀態(tài)參數(shù)的一個模塊;仿真菜單項(xiàng)設(shè)置有“定時周期”、“定時器選擇”兩個子項(xiàng)。為使仿真效果達(dá)到要求,必須使定時器的精度達(dá)到要求;操作提示是針對硬件設(shè)備與半物理仿真環(huán)境進(jìn)行通訊的一個模塊,它有將接收到的數(shù)據(jù)發(fā)送至工程機(jī)械控制器系統(tǒng)的數(shù)學(xué)模型,將數(shù)學(xué)模型DLL的運(yùn)算結(jié)果傳輸給USB,并同時在數(shù)據(jù)顯示區(qū)進(jìn)行顯示等功能。
設(shè)計人員可以根據(jù)自己所學(xué)的計算機(jī)語言來建立數(shù)學(xué)模型,例如Fortran、C#、C++、C語言等。機(jī)械工程控制器系統(tǒng)中的數(shù)學(xué)模型將采用C#與Fortran語言相配合來建立。
C#在帶來對應(yīng)用程序的快速開發(fā)能力的同時,并沒有犧牲C與C++程序員所關(guān)心的各種特性,它繼承了C和C++的優(yōu)點(diǎn)。同時它具有簡潔的語法,精心地面向?qū)ο笤O(shè)計方式,完整的安全性與錯誤處理能力,具有靈活性和兼容性等特點(diǎn)。
使用C#和Fortran混合語言編程,可以用Fortran編寫所有的計算工作,利用C#實(shí)現(xiàn)友好的用戶界面。但在程序編碼過程中,必須以C#編譯,用C#編的主程序來調(diào)用Fortran程序。混合編程的關(guān)鍵就是將Fortran計算程序編譯成動態(tài)鏈接庫,而后在C#下成功調(diào)用此動態(tài)鏈接庫。
動態(tài)鏈接庫英文為DLL,是Dynamic Link Library 的縮寫形式,是一個能夠被應(yīng)用程序和其它的DLL調(diào)用的過程和函數(shù)的集合體,它里面包含的是公共代碼或資源,它允許程序共享執(zhí)行特殊任務(wù)所必需的函數(shù)和其他資源。函數(shù)的可執(zhí)行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進(jìn)程分開存儲的函數(shù)[3,4]。通過使用 DLL,有助于促進(jìn)代碼的模塊化、代碼重用、內(nèi)存的有效使用和減少所占用的磁盤空間[5]。
在進(jìn)行機(jī)械工程控制器半物理仿真時,進(jìn)程或線程會將它們自身附加到 DLL 或者將它們自身從 DLL 分離,此時將調(diào)用入口點(diǎn)函數(shù)。所以在創(chuàng)建動態(tài)鏈接庫時,應(yīng)指定DLL入口點(diǎn)函數(shù)。下面的代碼是一個 DLL 入口點(diǎn)函數(shù):
相關(guān)動態(tài)連接庫建成后,信號轉(zhuǎn)換器對傳過來的控制信號轉(zhuǎn)換后,傳輸?shù)椒抡嬗嬎銠C(jī)上,然后調(diào)用被控對象數(shù)學(xué)模型的DLL,調(diào)用完成后仿真計算機(jī)返回狀態(tài)信號,在通過信號轉(zhuǎn)換器后,最后傳送到控制器。圖4為被控對象數(shù)學(xué)模型的DLL調(diào)用的過程流程圖。
圖4 DLL調(diào)用的過程流程圖
用不同語言編寫的DLL調(diào)用格式是不同的,通用的有隱式鏈接和靜態(tài)加載兩種方法。隱式鏈接會把DLL中所有標(biāo)志為_declspec(dllexport)的函數(shù)都加載,如果有多個DLL加載時,可能會影響到程序執(zhí)行的效率,這種加載方法簡單,但有缺陷,不推薦使用。而用動態(tài)加載DLL的方式則可以根據(jù)需要去加載用到的函數(shù)。前者確定于編譯鏈接階段后者決定與運(yùn)行階段。在一種語言環(huán)境中調(diào)用DLL,必須遵守函數(shù)名一致、參數(shù)名一致、參數(shù)類型匹配、函數(shù)類型匹配以及參數(shù)傳遞等規(guī)則[6]。
仿真是一種人為的虛擬的試驗(yàn)手段,可以比較真實(shí)地描述系統(tǒng)的運(yùn)行、演變及其發(fā)展過程。
在研發(fā)設(shè)計階段,樣機(jī)的研制往往成本高且落后于控制器的開發(fā),造成兩者研發(fā)的不同步,使得整個項(xiàng)目研發(fā)周期延長。針對這一問題,為了能在工程機(jī)械控制器的設(shè)計過程中,對工程機(jī)械控制器的各項(xiàng)性能進(jìn)行測試,以縮短工程機(jī)械控制器的開發(fā)周期,文中主要論證了工程機(jī)械控制器半物理仿真體系的建立過程。為以后仿真體系的設(shè)計與實(shí)現(xiàn)打下了堅實(shí)的理論基礎(chǔ)。
[l] 齊鰻鵬.隆武強(qiáng).陳雷.硬件在環(huán)仿真在汽車控制系統(tǒng)開發(fā)中的應(yīng)用及關(guān)鍵技術(shù)[J].內(nèi)燃機(jī),2006.10(5):24-27.
[2] 劉時鵬.MATLAB環(huán)境下直線單級倒立擺系統(tǒng)實(shí)時控制實(shí)驗(yàn)的研究與設(shè)計[D].重慶大學(xué),2004.5.
[3] 茍建兵,倪維斗.基于DLL的混合語言編程[J].軟件世界—開發(fā)與應(yīng)用,1996.9:12-15.
[4] 文欣秀,米西峰,赫楓齡.基于動態(tài)鏈接庫實(shí)現(xiàn)軟件界面組件化方法研究[J].計算機(jī)應(yīng)用與軟件,2007.7,24(7):18-20.
[5] 賈振華,何麗娟.用戶動態(tài)鏈接庫的創(chuàng)建與應(yīng)用[J].華北航天工業(yè)學(xué)院學(xué)報,2002.10,12(4):14-16.
[6] 步山岳.動態(tài)鏈接庫DLL[J].微型電腦應(yīng)用—學(xué)習(xí)園地,2002,18(1):60-62.