郭金中,梁 全,張國健,王祥瑞
(沈陽工業(yè)大學 機械工程學院,遼寧 沈陽 110020)
隨著計算機技術的發(fā)展,半實物仿真逐漸作為技術驗證的主要手段,以其相較于實物仿真更高的性價比和相較于計算機虛擬仿真更高的置信度而被廣泛采用[1]。國外半實物仿真技術發(fā)展較早,其中幾種成熟平臺都是基于PC機Windows下的分布式仿真平臺,例如側重于工程設計與測試的RT-LAB和xPC以及側重于控制系統(tǒng)開發(fā)及測試方面的dSPACE和NI PXI ;國內(nèi)起步較晚,但是隨著技術進步和發(fā)展需要,國防科技大學開發(fā)的銀河系列仿真平臺也在不斷更新迭代,其中銀河高性能仿真平臺YHSIM 已經(jīng)應用于全國許多單位[2]。但是目前大部分的半實物仿真系統(tǒng)的價格比較高,在實時性、通用性方面還是存在很多的限制,尤其是在理工科為主的高校,實驗設備的使用能夠大幅度提高仿真實驗學習的效率,所以通過有限的設備,在盡可能控制預算成本的前提下,讓更多的學生使用設備靈活高效地完成實驗,將理論知識和實際操作相互結合,自行安排設計實驗進度和實驗環(huán)節(jié),成為未來一段時間教育發(fā)展的一大趨勢[3]?;诖?,本文以AMESim仿真軟件和Windows系統(tǒng)為基礎對構建高性價比高置信度的硬件在環(huán)仿真方法進行了研究,使得仿真過程盡可能接近實際工況,為平臺后續(xù)拓展完善提供基礎。
電液伺服系統(tǒng)是負反饋自動控制系統(tǒng),又被稱作跟蹤系統(tǒng)[4],其工作原理是基于信號的偏差,即將輸入和反饋信號的偏差值作為控制量反饋至系統(tǒng)的輸入端,使得系統(tǒng)的偏差逐漸減小直至滿足期望值[5]。在本文中,模型是以典型的電液伺服系統(tǒng)進行設計,以位置反饋為主要的分析點。圖1為典型液壓系統(tǒng)位置控制結構框圖。
圖1 典型液壓系統(tǒng)位置控制結構框圖
設Z(s)為控制輸出,U(s)為控制輸入,則該系統(tǒng)的前向通道傳遞函數(shù)可以寫為[6]:
(1)
其中:Ka為伺服閥放大器增益;KBV為伺服閥流量增益;ωh為液壓固有頻率;δh為液壓阻尼比;A為活塞面積。
(2)
將式(2)還原成微分方程式的形式,即:
(3)
當微分方程中不含有輸入函數(shù)導數(shù)項時,可以利用相變量法去求系統(tǒng)的狀態(tài)空間表達式[7]。根據(jù)以上的微分方程理論,選擇狀態(tài)變量如下:
結合微分方程可得:
則有:
(4)
(5)
將式(4)和式(5)寫成向量矩陣即狀態(tài)方程前向通道標準形式,則有:
(6)
半實物仿真的核心原理就是通過推導物理實體的微分方程組,在實時環(huán)境下用數(shù)值算法(龍格庫塔法等)進行微分方程的求解,繼而得到物理實體的實時運行數(shù)據(jù)。本文研究基于該核心理論,借助AMESim仿真軟件避開了自己開發(fā)液壓元件和系統(tǒng)微分方程組及其求解的數(shù)值算法工作,通過AMESim的二次開發(fā)功能完成下列的工作。
硬件在環(huán)半實物仿真的主要設計部件分為上位機系統(tǒng)和實物控制器系統(tǒng),以及上位機系統(tǒng)和實物控制器系統(tǒng)之間的信息傳輸端口的實現(xiàn),其原理是通過實時控制器的信息數(shù)據(jù)處理來實現(xiàn)被控對象模擬實際工況[8]。啟動仿真時上位機構建的模型通過計算輸出實時參數(shù),實時參數(shù)經(jīng)過信息傳輸端的采集轉換發(fā)送給控制器進行計算處理,最終返回實時控制信號完成控制仿真。
半實物仿真平臺結構框圖如圖2所示,上位機系統(tǒng)通過AMESim建立伺服系統(tǒng),通過 TCP/IP通信功能和數(shù)據(jù)采集DAQ模塊進行數(shù)據(jù)的交換及數(shù)模轉換,將運行參數(shù)發(fā)送到控制器,通過控制器的數(shù)據(jù)解算,輸出反饋信號對模型進行控制。
圖2 半實物仿真平臺結構框圖
通過AMESim軟件和Visual Studio聯(lián)合仿真功能實現(xiàn)系統(tǒng)的TCP/IP通信,同時針對Windows操作系統(tǒng)非實時的性能特點,利用高精度定時器和多線程設計的方法對其進行改進。利用系統(tǒng)的API函數(shù)進行軟件編程,設置循環(huán)產(chǎn)生等待延時,使得軟件和硬件的時鐘同步[9],同時利用多線程編程的方式提高仿真效率,使上位機有限的計算能力得到充分發(fā)揮,保證系統(tǒng)的實時性。
AMESim的libcosim庫中定義了與第三方軟件通過C代碼進行數(shù)值交換的函數(shù),通過在AMESim子模型中添加相關模塊設置以及對Visual Studio控制臺程序的編寫,實現(xiàn)仿真解算數(shù)據(jù)通過TCP/IP網(wǎng)絡的交換執(zhí)行。
在位置控制子模型中,位置控制反饋值來自于位移傳感器和給定常量的差值,通過DYNCOSIMNETWORK01動態(tài)集團提供的協(xié)同仿真服務,將反饋值通過TCP/IP通信傳遞給實物控制器進行解算控制,然后反饋給子模型實現(xiàn)通信功能,TCP模塊的外部變量示意圖如圖3所示。
圖3 通信模塊外部變量示意圖
在圖3中,左側的port2端口為outputs,右側port1端口為inputs,系統(tǒng)輸出值通過左側端口輸出給控制器,經(jīng)過控制器解算控制后的數(shù)據(jù)由右側端口反饋給系統(tǒng),構成閉合仿真回路。其交換功能的C語言實現(xiàn)依賴于套接字連接的函數(shù),即:
amesock_init();表示將套接字連接初始化為服務器端或客戶端
amesock_exchange();表示在客戶端和服務器端進行數(shù)據(jù)值交換
amesock_close();表示關閉套接字連接
對于定時器,分為軟件和硬件兩種實現(xiàn)路徑,相較于硬件實現(xiàn)手段需要額外添加計時器以及電路和板卡等硬件,軟件定時更能充分利用仿真機系統(tǒng)資源[10]。在Windows系統(tǒng)下最常見的定時函數(shù)應當屬于進程阻塞類型的Sleep函數(shù),其實現(xiàn)的原理是將進程阻塞來等待硬件的定時器同步,內(nèi)核再將進程加入到隊列繼而喚醒進程[11]。但是Sleep函數(shù)的精度比較低,計時單位為毫秒,不適合對精度要求比較高的場合。
Windows95及以后版本,對于精度要求更高的定時器操作可以采用QueryPerformanceFrequency()函數(shù)以及和該函數(shù)聯(lián)合使用的QueryPerformanceCounter()函數(shù),實現(xiàn)微秒級別的定時器。對于函數(shù)的使用應當先利用QueryPerformanceFrequency()函數(shù)獲取PC機的內(nèi)部時鐘頻率,同時在進程的始末通過調(diào)用QueryPerformanceCounter()函數(shù)獲得計時差值以及時鐘頻率來達到精確計時的目的。表1顯示的是在仿真過程中,同一測試環(huán)境下利用Sleep函數(shù)對比QueryPerformanceFrequency()函數(shù)以及QueryPerformanceCounter()函數(shù)的部分測試結果。
表1 函數(shù)延時對比
在設計半實物仿真平臺時,被解算的數(shù)據(jù)需要通過信息傳輸端口進行DA轉換和采集,還需要經(jīng)過控制系統(tǒng)的AD轉換和處理。為提高系統(tǒng)的CPU資源利用率及提高仿真實驗的定時器精度,同時防止基于PC測試軟件與實物控制數(shù)據(jù)采集卡通信時發(fā)生阻塞現(xiàn)象,采用多線程設計以提高系統(tǒng)性能。
線程的狀態(tài)一般分為掛起狀態(tài)、執(zhí)行狀態(tài)、阻塞狀態(tài)和等待狀態(tài)。圖4為線程的執(zhí)行流程,線程從被創(chuàng)建開始若沒有被調(diào)用或者直接被掛起,將處在非執(zhí)行狀態(tài),只有在線程處在處理器片中擁有CPU資源時才能被執(zhí)行。阻塞狀態(tài)是指進程被鎖住或者是發(fā)生錯誤時執(zhí)行狀態(tài)被停止,等待狀態(tài)指線程在啟動時間內(nèi)或處理器片搶占失敗的過程。
因為在上述兩個子線程之間存在數(shù)據(jù)傳輸和反饋關系,所以在線程設計中需要考慮線程間通信問題。在一個進程中各個線程共享全局變量,同時防止兩個線程之間相互影響,對線程進行合理的調(diào)度尋找合適的線程處理順序來避免死鎖,比如在圖像變換處理的事件中進行邊緣提取、圖像腐蝕等耗時工作就可以采用DoTranslate()函數(shù)實現(xiàn)變換,添加聲明實現(xiàn)多線程來提高工作效率。在本文設計中,采用事件CEvent類實現(xiàn)線程間通信,線程調(diào)用WaitForSingleObject()函數(shù),通過判斷監(jiān)視Event事件的有信號和無信號兩種狀態(tài)來實現(xiàn)對事件的實時操作。
圖4 線程執(zhí)行流程圖
針對上述電液伺服系統(tǒng)半實物仿真平臺的設計,利用對電液伺服系統(tǒng)的閥控缸位置控制對其進行了驗證,通過對在AMESim軟件中建模仿真和利用半實物仿真平臺仿真結果進行相互驗證,證明該設計的有效性及可靠性。
在AMESim虛擬仿真實驗中,通過給定常量K輸入給系統(tǒng)一個信號值,通過JUN3M減法結求得該定值和位移傳感器的差值,再反饋給系統(tǒng)輸入值實現(xiàn)系統(tǒng)位置控制部分的驗證;在半實物仿真實驗中,給定常量、傳感器的位移量信號和通過解算轉換的電壓信號需要由實物控制器寫入和輸出,所以在設計中就會涉及到對位移傳感器的標定問題,實物控制器的電壓范圍值為0~10 V,若給定常量值為2 m,那么最終的位移數(shù)據(jù)通過DA采集時應將數(shù)值擴大5倍;當進行AD采集時按照數(shù)模采集相反的方法將電壓信號值轉化為位置值進行反饋,完成閉環(huán)控制。圖5為在AMESim仿真軟件中搭建的模型,圖6為AMESim半實物仿真模型。圖7為虛擬仿真和半實物仿真結果對比。
圖5 AMESim虛擬仿真模型
圖6 AMESim半實物仿真模型
圖7 虛擬仿真和半實物仿真結果對比
由圖7可以看出,在起始仿真階段虛擬仿真實驗和半實物仿真實驗仿真結果相同,并且在0.02 s處出現(xiàn)超調(diào),超調(diào)幅值誤差在0.01 m左右,最終的位移值在0.3 s后都趨向于穩(wěn)定,保持在給定值附近,其整體結果符合電壓的轉換控制關系,驗證了半實物仿真方法的正確性。
本文基于AMESim軟件和液壓系統(tǒng)仿真技術提出并設計了電液伺服系統(tǒng)位置控制半實物仿真方法。 首先,在該設計中通過TCP/IP通信技術實現(xiàn)了上位機和實際控制器的數(shù)據(jù)通信,構建了信息接口;其次通過多語言混合編程的方式對數(shù)據(jù)采集卡進行二次開發(fā),搭建了實物控制系統(tǒng);再次基于Windows非實時操作系統(tǒng),利用高精度定時器的設計提高了半實物仿真平臺的實時性能,通過獲取PC機時鐘頻率來達到延時低于1 ms的效果;最后利用WinAPI函數(shù)創(chuàng)建了多個線程,將仿真過程共享內(nèi)存數(shù)據(jù)進行事件同步,提高了系統(tǒng)的仿真效率,并且通過仿真結果對比驗證了本文提出的半實物仿真設計方法的正確性和可行性。