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