顧 輝,王洪宇,劉旭寧
(海軍航空訓練基地 航材四站,青島 266108)
半物理仿真(Hardware-in-LooPSimulation,HILS) 是指采用部分物理模型和部分數學模型的仿真,其中物理模型采用控制系統中的實物,系統本身的動態過程則采用數學模型。機械工程控制器半物理仿真系統則采用實時性要求高的的仿真計算機、運動模擬器、目標模擬器、控制臺來代替部分系統部件或者實際被控對象,而控制系統則采用實際物體(即硬件,主要是指工程機械專用控制器)連接成為一個半物理仿真系統。半物理仿真的逼真度取決于接入的實物部件的多寡、仿真計算機的速度、精度和功能等[1]。將半物理仿真系統引入工程機械控制器的研制過程,不僅能夠縮短產品的開發周期,降低開發成本,而且能使產品研發具有良好的可控性、重復性和安全性。
工程機械控制器半物理仿真系統是集計算機技術、數學建模技術及數據采集技術于一體的綜合系統。通過計算機控制平臺,輸入參試設備的控制參數,調用數學模型進行仿真,實現對理論設計的驗證。工程機械控制器半物理仿真系統由以下三部分組成[2],如圖1所示。
1)仿真設備:如仿真pc機、控制臺等;
2)各種接口設備:信號轉換器,I/O接口設備;
3)參試設備:工程機械專用控制器實物。

圖1 工程機械控制器半物理仿真系統的組成圖
為了驗證系統方案的可行性、正確性以及測試控制器的各項性能,建立一套閉環的半物理仿真系統。如圖2所示,在仿真計算機中調用已建立的數學模型的DLL,通過信號轉換器、采用CAN布線方式將數據采集與數據輸出等硬件設備與工程機械控制器進行連接,組成易于檢測、符合工程實際需要的閉環仿真環境。在實驗和檢測過程中,各種信號如數字信號、模擬信號、脈沖信號是用數據采集卡經信號轉換器轉換得到的。

圖2 工程機械控制器半物理仿真系統
具體來說,就是用半物理仿真系統代替部分工程機械硬件與工程機械實物部件最大限度的模擬工程機械的實際工作情況。在設計方案中,當控制器硬件上電與仿真平臺啟動后控制信號由工程機械控制器發出,經由信號轉換器轉換之后,再通過USB傳送給仿真計算機,在軟件集成環境下運行被控對象數學模型的DLL,輸出測試信息,該信號經過經信號轉換器轉換后,再傳送給控制器 (即硬件實物),返回的測試信號在控制器中完成算法后再次發出控制信號,控制信號經由信號轉換器轉換后經USB再次傳送給仿真計算機,輸入DLL控制參數在軟件集成環境下再次調用被控對象數學模型的DLL,這樣重復多次操作就形成了工程實際需要的一個半物理仿真的閉環體系。上述工程機械控制器半物理仿真體系的流程圖如圖3所示。

圖3 工程機械控制器半物理仿真系統信號傳遞流程圖
工程機械控制器半物理仿真環境中被控對象的數學模型可以用VB、VC++、VC#等軟件平臺來開發。將被控對象的數學模型創建成.dll文件可以節省開發時間,提高數學模型的使用率,工程機械控制器半物理仿真環境中被控對象的數學模型采用面向對象程序設計方法。在.NET框架下使用VC#軟件創建具有Windows風格的人機交互式圖形仿真界面。創建的仿真平臺能夠用被控對象的數學模型模擬所需實物部件并能實現軟硬件交互的功能,即達到了仿真的目的。實現在VC#軟件環境下.dll的調用、語音控制、參數設定、操作提示、仿真設置、數據顯示等功能。其中參數設定設定為工程機械控制器系統相關控制參數、數學模型DLL入口參數、狀態參數的一個模塊;仿真菜單項設置有“定時周期”、“定時器選擇”兩個子項。為使仿真效果達到要求,必須使定時器的精度達到要求;操作提示是針對硬件設備與半物理仿真環境進行通訊的一個模塊,它有將接收到的數據發送至工程機械控制器系統的數學模型,將數學模型DLL的運算結果傳輸給USB,并同時在數據顯示區進行顯示等功能。
設計人員可以根據自己所學的計算機語言來建立數學模型,例如Fortran、C#、C++、C語言等。機械工程控制器系統中的數學模型將采用C#與Fortran語言相配合來建立。
C#在帶來對應用程序的快速開發能力的同時,并沒有犧牲C與C++程序員所關心的各種特性,它繼承了C和C++的優點。同時它具有簡潔的語法,精心地面向對象設計方式,完整的安全性與錯誤處理能力,具有靈活性和兼容性等特點。
使用C#和Fortran混合語言編程,可以用Fortran編寫所有的計算工作,利用C#實現友好的用戶界面。但在程序編碼過程中,必須以C#編譯,用C#編的主程序來調用Fortran程序。混合編程的關鍵就是將Fortran計算程序編譯成動態鏈接庫,而后在C#下成功調用此動態鏈接庫。
動態鏈接庫英文為DLL,是Dynamic Link Library 的縮寫形式,是一個能夠被應用程序和其它的DLL調用的過程和函數的集合體,它里面包含的是公共代碼或資源,它允許程序共享執行特殊任務所必需的函數和其他資源。函數的可執行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數[3,4]。通過使用 DLL,有助于促進代碼的模塊化、代碼重用、內存的有效使用和減少所占用的磁盤空間[5]。
在進行機械工程控制器半物理仿真時,進程或線程會將它們自身附加到 DLL 或者將它們自身從 DLL 分離,此時將調用入口點函數。所以在創建動態鏈接庫時,應指定DLL入口點函數。下面的代碼是一個 DLL 入口點函數:


相關動態連接庫建成后,信號轉換器對傳過來的控制信號轉換后,傳輸到仿真計算機上,然后調用被控對象數學模型的DLL,調用完成后仿真計算機返回狀態信號,在通過信號轉換器后,最后傳送到控制器。圖4為被控對象數學模型的DLL調用的過程流程圖。

圖4 DLL調用的過程流程圖
用不同語言編寫的DLL調用格式是不同的,通用的有隱式鏈接和靜態加載兩種方法。隱式鏈接會把DLL中所有標志為_declspec(dllexport)的函數都加載,如果有多個DLL加載時,可能會影響到程序執行的效率,這種加載方法簡單,但有缺陷,不推薦使用。而用動態加載DLL的方式則可以根據需要去加載用到的函數。前者確定于編譯鏈接階段后者決定與運行階段。在一種語言環境中調用DLL,必須遵守函數名一致、參數名一致、參數類型匹配、函數類型匹配以及參數傳遞等規則[6]。
仿真是一種人為的虛擬的試驗手段,可以比較真實地描述系統的運行、演變及其發展過程。
在研發設計階段,樣機的研制往往成本高且落后于控制器的開發,造成兩者研發的不同步,使得整個項目研發周期延長。針對這一問題,為了能在工程機械控制器的設計過程中,對工程機械控制器的各項性能進行測試,以縮短工程機械控制器的開發周期,文中主要論證了工程機械控制器半物理仿真體系的建立過程。為以后仿真體系的設計與實現打下了堅實的理論基礎。
[l] 齊鰻鵬.隆武強.陳雷.硬件在環仿真在汽車控制系統開發中的應用及關鍵技術[J].內燃機,2006.10(5):24-27.
[2] 劉時鵬.MATLAB環境下直線單級倒立擺系統實時控制實驗的研究與設計[D].重慶大學,2004.5.
[3] 茍建兵,倪維斗.基于DLL的混合語言編程[J].軟件世界—開發與應用,1996.9:12-15.
[4] 文欣秀,米西峰,赫楓齡.基于動態鏈接庫實現軟件界面組件化方法研究[J].計算機應用與軟件,2007.7,24(7):18-20.
[5] 賈振華,何麗娟.用戶動態鏈接庫的創建與應用[J].華北航天工業學院學報,2002.10,12(4):14-16.
[6] 步山岳.動態鏈接庫DLL[J].微型電腦應用—學習園地,2002,18(1):60-62.