樊智勇,張 同,劉 濤
(1.中國民航大學 工程技術(shù)訓練中心,天津 300300 2.中國民航大學 電子信息與自動化學院,天津 300300)
多電飛機采用電力作動方式為飛機操縱、環(huán)控、液壓、燃油、起落架等系統(tǒng)供能,大大改善飛機的可靠性與靈活性[1]。為了進一步對多電飛機機電系統(tǒng)進行綜合化研究,需要使用不同專業(yè)仿真軟件建立相應(yīng)模型進行聯(lián)合仿真,為了融合多領(lǐng)域仿真數(shù)據(jù),采用DDS(data distribution service)[2-4]總線作為通信中間件進行模型間的數(shù)據(jù)交互,從而保證分布式仿真系統(tǒng)的實時性與交互性。由于機電系統(tǒng)參數(shù)復雜且分布在不同仿真節(jié)點上,在對模型進行參數(shù)查看與修改時,需要分別在各仿真節(jié)點的子模型中進行操作控制,過程繁瑣,降低機電系統(tǒng)集成測試效率;而且傳統(tǒng)的監(jiān)控技術(shù)需要通過代碼定制開發(fā)實現(xiàn),當任務(wù)需求或者被控對象一旦發(fā)生更改時,需要專門的開發(fā)人員重新進行開發(fā),工作量大、開發(fā)周期長、成本高[5]。組態(tài)監(jiān)控軟件界面直觀、可操作性強[6],可實現(xiàn)對系統(tǒng)的實時過程監(jiān)控,并在很多工業(yè)生產(chǎn)線以及各類監(jiān)控系統(tǒng)中得到廣泛使用,如導彈測控工程[7]、新型支線客機監(jiān)控系統(tǒng)[8]等。
將組態(tài)監(jiān)控技術(shù)應(yīng)用于基于DDS的飛機分布式仿真系統(tǒng)中,不僅可以靈活配置監(jiān)控界面以及用戶關(guān)注參數(shù),將仿真結(jié)果以圖表、曲線、動畫等多種方式顯示出來,使操作人員更加直觀地監(jiān)控機電系統(tǒng)的運動過程以及精確掌握機電系統(tǒng)的運行狀態(tài),而且當飛機仿真模型功能結(jié)構(gòu)發(fā)生變化或者擴展新的功能時,只需做部分修改,不會嚴重影響組態(tài)監(jiān)控的整體架構(gòu),這將大大有利于整體系統(tǒng)數(shù)據(jù)采集的運行維護,提高不同構(gòu)型下飛機分布式仿真系統(tǒng)的仿真驗證效率,具有重要的理論意義與工程應(yīng)用價值。
分布式仿真平臺采用Matlab/Simulink、AMESim、FlightSIM等專業(yè)仿真軟件分別建立了飛機液壓、燃油、起落架、防除冰等機電子系統(tǒng)模型,在系統(tǒng)集成仿真過程中每個分布節(jié)點采用DDS作為通信中間件,進行大量、實時和高效的數(shù)據(jù)傳輸[9-10]。該仿真平臺主要由仿真設(shè)計運行管理環(huán)境、并行分布式解算環(huán)境兩部分組成,其中仿真設(shè)計運行管理環(huán)境主要包括仿真系統(tǒng)設(shè)計模塊和仿真運行管理模塊,負責完成對仿真模型的封裝、配置和管理;并行分布式解算環(huán)境主要包括DDS總線、仿真主、子引擎和模型接口。各仿真模型接口通過調(diào)用嵌入接口內(nèi)部的仿真子引擎,將仿真模型與DDS總線進行連接,實現(xiàn)多個仿真任務(wù)的并行運算。
組態(tài)監(jiān)控平臺分為組態(tài)設(shè)計環(huán)境與組態(tài)運行環(huán)境,支持與數(shù)據(jù)采集設(shè)備進行數(shù)據(jù)交換以及將設(shè)備底層數(shù)據(jù)與組態(tài)界面上的圖元進行動畫連接,通過定義I/O變量實現(xiàn)與外部進行數(shù)據(jù)交互,其中I/O變量需定義數(shù)據(jù)交換屬性、采樣頻率、規(guī)定數(shù)據(jù)在組態(tài)界面的最大值、最小值、ID和變量名稱等信息,然后將I/O端口變量與組態(tài)界面中的組件通過表達式、動畫、腳本等方式建立動態(tài)鏈接,當用戶對組件進行數(shù)據(jù)輸入時,則輸入的值自動賦給同其關(guān)聯(lián)的變量,并自動刷新與此變量關(guān)聯(lián)的組件顯示[11]。組態(tài)設(shè)計環(huán)境將配置好的圖形界面統(tǒng)一生成圖形資源文件xdg與屬性配置文件xml供組態(tài)運行環(huán)境加載顯示,其中xml配置文件包含變量與組件之間的各種動態(tài)關(guān)聯(lián)信息。
通過在組態(tài)監(jiān)控平臺上設(shè)計各機電系統(tǒng)組態(tài)監(jiān)控界面,以及設(shè)計數(shù)據(jù)接口實現(xiàn)仿真運行管理模塊驅(qū)動組態(tài)監(jiān)控平臺從DDS總線上獲取不同仿真子模型的仿真數(shù)據(jù)并實時驅(qū)動畫面動態(tài)顯示,實現(xiàn)在組態(tài)監(jiān)控界面中對分布在不同節(jié)點仿真模型的運行控制與實時調(diào)參,分布式仿真組態(tài)監(jiān)控整體框架如圖1所示。
圖1 基于DDS的分布式仿真平臺監(jiān)控系統(tǒng)架構(gòu)
數(shù)據(jù)接口模塊負責與組態(tài)監(jiān)控平臺搭建的組態(tài)監(jiān)控界面I/O端口進行鏈接,同時初始化、控制界面組件與DDS中的模型數(shù)據(jù)進行交互等。平臺根據(jù)模型端口輸入、輸出關(guān)系定義了Output、Input、Signal、Parameter 4種變量類型,其中Output為向外界輸出的數(shù)據(jù),Input為從外界獲取的數(shù)據(jù),Signal為支持在線監(jiān)視的數(shù)據(jù),Parameter為支持在線修改的數(shù)據(jù)。組態(tài)監(jiān)控平臺通過該數(shù)據(jù)接口實現(xiàn)對這4類端口變量進行訂閱,并通過靜態(tài)框、圖表等方式監(jiān)測模型Output、Signal端口變量,同時對Input、Parameter端口變量進行發(fā)布,通過編輯框、按鈕等操作寫入Input、Parameter端口變量,實現(xiàn)對模型的實時調(diào)參與運行控制。為了便于組態(tài)監(jiān)控平臺在DDS的自動發(fā)現(xiàn)過程中進行端口信息匹配,需對模型端口變量定義唯一標識符,包括端口類型、名稱、ID、數(shù)據(jù)類型等,其中端口命名規(guī)則一般為模型名稱_組件含義_端口類型,如ATA28_CTR_TEMP_OUT為燃油系統(tǒng)中央油箱油溫輸出端口,ATA27_FLAP_POS_SIG為飛行高升力系統(tǒng)襟翼位置信號端口,F(xiàn)LISIM_IAS_IN為飛行環(huán)境模型的空速激勵數(shù)據(jù)輸入端口等。
將可視化組件與端口變量通過表達式、腳本等方式進行綁定,使其與DDS數(shù)據(jù)傳輸相結(jié)合,實現(xiàn)數(shù)據(jù)的接收顯示。分布式協(xié)同仿真平臺與組態(tài)監(jiān)控平臺的數(shù)據(jù)交互過程分為發(fā)布過程和訂閱過程,它是由發(fā)布端、訂閱端、全局數(shù)據(jù)空間三者共同交互完成的。
當機電系統(tǒng)模型作為發(fā)布端發(fā)布主題信息時:
1) 通過域參與者工廠participatent factory的CreateDomain participatent創(chuàng)建域參與者participatent,一般為分布在各仿真節(jié)點的機電子系統(tǒng),如ATA32_MLG主起落架系統(tǒng);
2)通過CreateDomain Publisher和CreateDDSTopic創(chuàng)建發(fā)布者P和主題T,并通過SetDataType()注冊要發(fā)布參數(shù)的數(shù)據(jù)類型,如ATA32_MLG系統(tǒng)發(fā)布功率輸出端口信息ATA32_MLG_POWER _OUT,其中端口名稱為主題名稱;
3) 發(fā)布者P通過CreateDatawriter創(chuàng)建一個數(shù)據(jù)寫入者DW,數(shù)據(jù)寫入者DW將要發(fā)布消息的主題以及可以提供的QoS寫入到全局數(shù)據(jù)空間中;
發(fā)布成功后DW進入阻塞狀態(tài),當檢測到本節(jié)點有滿足訂閱者訂閱的主題數(shù)據(jù)時,激活數(shù)據(jù)寫入者將數(shù)據(jù)發(fā)送給組態(tài)監(jiān)控平臺的節(jié)點上。
當組態(tài)監(jiān)控平臺節(jié)點作為訂閱端訂閱主題信息時:
1) 通過域參與者工廠participatent factory的CreateDomain participatent創(chuàng)建域參與者participatent,如起落架監(jiān)控界面LandingGear;
2)通過CreateDomain Subscriber和CreateDDSTopic創(chuàng)建訂閱者S和主題T,并通過SetDataType()注冊要訂閱參數(shù)的數(shù)據(jù)類型,如與ATA32_MLG_POWER _OUT端口變量綁定的文本框要接收主起落架功率輸出數(shù)據(jù);
3) 訂閱者S 通過CreateDatareader創(chuàng)建一個數(shù)據(jù)讀取者DR和數(shù)據(jù)監(jiān)聽者Listener,數(shù)據(jù)讀取者DR將要訂閱的主題信息與QoS發(fā)送到全局數(shù)據(jù)空間中,接著DR進入“等待接收數(shù)據(jù)”的狀態(tài),當數(shù)據(jù)監(jiān)聽者監(jiān)聽到有數(shù)據(jù)到達時則通過回調(diào)函數(shù)激活數(shù)據(jù)讀取者進行讀取數(shù)據(jù)。
基于DDS的發(fā)布訂閱過程如圖2所示。
圖2 DDS發(fā)布/訂閱過程
基于RTI_DDS的分布式仿真平臺與組態(tài)監(jiān)控平臺的基礎(chǔ)上,通過對相關(guān)函數(shù)進行封裝,形成組態(tài)監(jiān)控平臺的通用接口HMIDataDll動態(tài)鏈接庫,組態(tài)監(jiān)控平臺通過該接口與DDS分布式仿真平臺中的模型端口變量進行發(fā)布訂閱操作。
組態(tài)監(jiān)控平臺的I/O變量是針對現(xiàn)場實時數(shù)據(jù)以類的形式來對數(shù)據(jù)結(jié)構(gòu)進行管理,每個類具有自己的屬性與方法,每種數(shù)據(jù)結(jié)構(gòu)對應(yīng)一種變量類型并與操作管理程序完好的封裝在一起。在接口設(shè)計時,定義 SignalElement類對應(yīng)模型全部Output、Input、Signal、Parameter端口變量的數(shù)據(jù)結(jié)構(gòu),以便實現(xiàn)組態(tài)監(jiān)控平臺對DDS總線中所有屬于SignalElement類的數(shù)據(jù)執(zhí)行讀取操作;定義ParameterElement類對應(yīng)模型全部Input、Parameter端口變量的數(shù)據(jù)結(jié)構(gòu),以便組態(tài)監(jiān)控平臺對DDS總線中所有屬于ParameterElement類的數(shù)據(jù)執(zhí)行寫入操作。
接口設(shè)計實現(xiàn)過程分為3個階段:
1) 組態(tài)顯示初始化階段:通過調(diào)用HMIDataInit(const char *strPrjName)函數(shù)進行仿真工程初始化,調(diào)用int Analysis xml()/nwf()/xdg()/tagxml()等函數(shù)加載仿真工程配置文件xml、網(wǎng)絡(luò)表文件nwf、圖形資源文件xdg、組件與變量連接文件tagxml等,以獲取模型仿真信息,包括仿真工程名稱及路徑、仿真起始時間、模型解算步長、模型名稱、端口變量名稱、數(shù)據(jù)類型等信息,并生成與模型端口一致的變量列表;獲取組態(tài)界面中所有組件屬性信息;獲取組件與端口變量綁定參數(shù)信息;當DDS總線返回HMIDataDLL Initialize Success函數(shù),表明動態(tài)鏈接庫初始化成功。
2) 組態(tài)顯示階段:仿真開始時,組態(tài)監(jiān)控平臺調(diào)用int HMISqlData()函數(shù)獲取當前DDS總線的仿真時間,調(diào)用int HMIGenData(const char *strVarName, int nValueType, void *sVar, void *dValue)函數(shù)獲取DDS總線中仿真子引擎寫入的模型端口參數(shù)并存儲到變量列表中,其中const char *strVarName為仿真變量名稱,int nValueType為變量數(shù)據(jù)類型,void *sVar為變量信息結(jié)構(gòu)體,包含變量的模型ID、變量類型、變量ID、變量維度、監(jiān)視選項和初值等信息,void *dValue為返回當前變量的仿真數(shù)據(jù)。組態(tài)監(jiān)控平臺將讀取的數(shù)據(jù)存放到變量列表中,根據(jù)工程定時執(zhí)行腳本設(shè)置的數(shù)據(jù)采集時間間隔進行數(shù)據(jù)采樣以及畫面刷新。當在組態(tài)界面輸入控制指令或者模型參數(shù)發(fā)生改變時,調(diào)用int HMITraData(const char *strVarName, int nValueType, void *sVar, void *dValue)函數(shù)將數(shù)據(jù)信息寫入DDS總線中,參數(shù)含義同上,此時仿真子引擎將仿真數(shù)據(jù)傳遞給相應(yīng)仿真模型端口,然后發(fā)送設(shè)置成功指令給仿真主引擎,仿真主引擎告知仿真運行管理環(huán)境設(shè)置成功,實現(xiàn)對模型的實時調(diào)參與運行控制。
3) 組態(tài)顯示結(jié)束階段:調(diào)用HMI結(jié)束函數(shù)int HMIDataClose(),關(guān)閉總線接口,釋放所占用的資源。
多電飛機機電系統(tǒng)分布式仿真的組態(tài)監(jiān)控過程如圖3所示,首先在分布式仿真平臺中設(shè)計系統(tǒng)仿真模型,配置模型參數(shù)信息,包括模型端口名稱、端口數(shù)據(jù)類型、端口數(shù)據(jù)初值、行數(shù)與列數(shù)等;其次在對仿真模型完成設(shè)計后,初始化所有輸入輸出端口,明確輸入輸出端口個數(shù);然后判斷是否有模型描述文件生成,若有,則進入仿真,等待仿真子引擎與主引擎進行控制流、指令流的交互,并觸發(fā)模型進行解算,若無,則模型轉(zhuǎn)至空,結(jié)束仿真,其中模型描述文件是在模型編譯完成時生成的文件,包含了所有仿真模型端口信息;最后等待模型一次解算完成,仿真子引擎通過模型接口獲取模型輸出端口數(shù)據(jù)并將其發(fā)送到DDS總線中,此時通過DDS的自動發(fā)現(xiàn)匹配,組態(tài)運行環(huán)境通過數(shù)據(jù)接口中的功能函數(shù)獲取總線中的指定端口數(shù)據(jù),并傳送到變量管理模塊的變量列表中,驅(qū)動組態(tài)界面的動態(tài)顯示與數(shù)據(jù)更新,同理當組態(tài)監(jiān)控界面進行參數(shù)調(diào)整或者發(fā)布控制指令時,組態(tài)運行環(huán)境調(diào)用功能函數(shù)將數(shù)據(jù)發(fā)布到DDS總線中,通過DDS的自動發(fā)現(xiàn)匹配,仿真子引擎獲取模型參數(shù)或控制指令,將其寫入仿真模型端口變量或控制模型運行狀態(tài)。
圖3 仿真模型監(jiān)控框架圖
其中仿真模型解算線程如圖4所示。
圖4 仿真模型解算線程圖
組態(tài)設(shè)計環(huán)境在仿真模型運行時,通過加載組態(tài)設(shè)計環(huán)境搭建好的圖形資源xdg文件與界面配置xml文件還原組態(tài)監(jiān)控界面元素,以及明確需要從DDS總線中發(fā)布訂閱的具體端口變量,通過DDS中間件匹配model ID、name,port ID、name,數(shù)據(jù)結(jié)構(gòu)等信息的端口變量,若發(fā)現(xiàn)匹配成功的信息,則獲取DDS總線中的數(shù)據(jù)至變量列表并驅(qū)動界面組件動畫顯示。
通過上述設(shè)計的數(shù)據(jù)接口,基于DDS的分布式仿真平臺實現(xiàn)以文本、曲線、動畫等方式監(jiān)控分布在不同節(jié)點的仿真模型端口變量的變化情況,由于篇幅原因,下面以飛機主起落架收放系統(tǒng)為例說明組態(tài)監(jiān)控實現(xiàn)過程。
參考某型飛機結(jié)構(gòu)參數(shù)手冊,分布式仿真平臺建立的主起落架收放系統(tǒng)模型主要由旁通閥、收放控制閥、上位門鎖作動器、起落架鎖作動器、支撐桿下位鎖作動器、邊側(cè)桿鎖作動器、門收放作動器、起落架收放作動器等功能設(shè)備組成,并由中央液壓系統(tǒng)提供能源,通過AMESim模型通用接口將其集成到分布式仿真平臺中與其他模型進行聯(lián)合仿真。該模型一共有33個輸入、輸出端口,其中該模型提供的可以在DDS中傳輸?shù)亩丝谧兞咳绫?所示。
表1 主起落架收放系統(tǒng)模型端口變量
利用組態(tài)監(jiān)控平臺的可視化圖形編輯界面、腳本編輯、趨勢處理等功能設(shè)計所需組件,參照飛行手冊以及仿真模型進行界面合理布局,直觀顯示起落架收放系統(tǒng)運行狀態(tài)。首先利用模型庫中的單向閥、節(jié)流孔、作動筒、兩位三通電磁換向閥、三位四通電磁換向閥等組件進行不同組合搭配,定義系統(tǒng)中的上位鎖作動器、阻力桿下位鎖作動器、側(cè)拉下位鎖作動器、主起落架收放作動器、艙門上位鎖作動器、主起控制閥、主起艙門控制閥、艙門應(yīng)急操作閥等功能設(shè)備,然后設(shè)置管路連接中央液壓能源系統(tǒng)以及主起落架系統(tǒng)的各組件設(shè)備,用于表示其能量流動關(guān)系,其中管路填充色為藍色、線寬為4 mm,動畫定時為100 ms。將界面組件定義唯一ID號并與變量列表中的對應(yīng)端口變量建立動畫鏈接,如建立如下條件表達式ATA32_MLG_SBDLKA_POS_SIG*200表示將邊側(cè)桿下位鎖作動器控件與仿真模型的ATA32_MLG_SBDLKA_POS_SIG端口變量建立鏈接,設(shè)置最小值0、最大值100等參數(shù),將端口變量計算后得出的數(shù)值作為控件動態(tài)反應(yīng)的條件值,同理設(shè)置其他作動器、控制閥與對應(yīng)端口變量的動態(tài)鏈接。設(shè)置窗口界面刷新頻率為2 ms/次,在界面右上角的起落架系統(tǒng)功率曲線按鈕設(shè)置左鍵抬起動畫,將其與曲線監(jiān)控界面進行鏈接,以便監(jiān)測系統(tǒng)功率輸出趨勢。建立的組態(tài)模型如圖5所示,圖中以3種不同類型的矩形框與橢圓表示仿真模型的3個端口變量在組態(tài)界面中與相應(yīng)組件的對應(yīng)顯示關(guān)系。
圖5 主起落架收放系統(tǒng)監(jiān)控模型
分布式仿真平臺共有28個飛機機電系統(tǒng)子模型,有1 647個模型端口變量,如圖6所示,在組態(tài)監(jiān)控平臺上搭建了飛機液壓、燃油、發(fā)動機、環(huán)控、供配電系統(tǒng)為單位的組態(tài)監(jiān)控界面,將界面組件與對應(yīng)端口變量建立鏈接,將仿真參數(shù)以變色、閃爍、動畫等方式顯當機電系統(tǒng)進行聯(lián)合仿真時,通過數(shù)據(jù)接口可以在組態(tài)監(jiān)控畫面中以仿真和飛行狀態(tài)實時監(jiān)測系統(tǒng)設(shè)備的運行狀態(tài),可以在系統(tǒng)原理圖中直觀觀測系統(tǒng)設(shè)備的工況;以文本、曲線、儀表等方式實時顯示機電系統(tǒng)端口變量的參數(shù)變化,包括飛行高度、空速、油門、油量、溫度、功率等參數(shù);支持頁面切換操作,通過點擊各個按鈕,可以鏈接到對應(yīng)監(jiān)控界面;支持參數(shù)設(shè)定與運行控制操作,通過在編輯框內(nèi)輸入?yún)?shù)實現(xiàn)對仿真模型的參數(shù)調(diào)整以及當在控制面板進行操作時,可以對仿真模型進行運行控制等,實現(xiàn)在同一界面中以多種方式監(jiān)測不同節(jié)點、不同模型的參數(shù)信息,監(jiān)控效果如圖7所示。
圖6 模型端口變量
圖7 集成驗證總圖
圖8為起落架系統(tǒng)模型的功率輸出曲線,其中左側(cè)為分布式仿真平臺中的AMESim仿真模型功率輸出,右側(cè)為組態(tài)監(jiān)控平臺監(jiān)測的功率輸出。由圖8可知輸出曲線趨勢一致,表明組態(tài)監(jiān)控平臺能夠通過數(shù)據(jù)接口實時接收仿真模型的數(shù)據(jù)并進行準確顯示。
圖8 起落架系統(tǒng)模型的功率輸出
本文通過研究DDS通信機制以及組態(tài)監(jiān)控技術(shù),設(shè)計
了分布式仿真平臺與組態(tài)監(jiān)控平臺的數(shù)據(jù)接口,建立了主起落架收放系統(tǒng)組態(tài)監(jiān)控原理圖,充分利用DDS數(shù)據(jù)分發(fā)服務(wù)的實時性、高效性以及組態(tài)監(jiān)控平臺良好的圖形界面,大幅縮短監(jiān)控界面設(shè)計周期,實現(xiàn)對仿真平臺上由不同專業(yè)仿真軟件建立的28個飛機機電系統(tǒng)子模型中1 647個模型端口變量的組態(tài)化顯示與運行控制,直觀顯示各個系統(tǒng)模型的狀態(tài)變化,改變了以往只能在指定仿真節(jié)點的仿真軟件中以單一方式進行參數(shù)查看與調(diào)整,有利于用戶更好的理解飛機機電系統(tǒng)、調(diào)配系統(tǒng)性能參數(shù)、優(yōu)化系統(tǒng)集成與擴展等,提高了飛機機電系統(tǒng)的集成測試效率與操作便捷性。