張 鵬 張偉業(yè) 劉 濤
1(中國(guó)民航大學(xué)適航學(xué)院 天津 300300)2(中國(guó)民航大學(xué)電子信息與自動(dòng)化學(xué)院 天津 300300)
飛機(jī)機(jī)電系統(tǒng)規(guī)模龐大且結(jié)構(gòu)復(fù)雜[1],導(dǎo)致單機(jī)仿真效率較低[2],因此針對(duì)復(fù)雜系統(tǒng)研究分布式建模與仿真方法具有重要意義[3]。文獻(xiàn)[4-6]應(yīng)用數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service,DDS)解決了分布式仿真中數(shù)據(jù)流的可靠交互問(wèn)題,以及仿真節(jié)點(diǎn)之間的通信問(wèn)題,證明了使用DDS能滿足機(jī)電系統(tǒng)對(duì)于多物理量數(shù)據(jù)流的交互要求。文獻(xiàn)[7-8]利用分布式建模方法拓展了仿真規(guī)模,解決了單機(jī)仿真拓展性差的問(wèn)題,但還未應(yīng)用在民機(jī)機(jī)電系統(tǒng)的仿真拓展中。文獻(xiàn)[9-10]使用分布式建模與仿真方法獲得了比非分布式方法更好的仿真性能,分布式方法對(duì)于仿真整體性能的提升具有明顯優(yōu)勢(shì),但現(xiàn)有的分布式方法主要集中在同步性的研究,對(duì)于并行計(jì)算的加速性研究較少。
本文在上述研究的基礎(chǔ)上,基于DDS分布式互聯(lián)架構(gòu)平臺(tái),通過(guò)設(shè)計(jì)仿真數(shù)據(jù)交互接口,針對(duì)性地研究了民機(jī)機(jī)電系統(tǒng)分布式并行建模與仿真,改善了民機(jī)電系統(tǒng)仿真的可拓展性以及數(shù)據(jù)的可交互性,減少了仿真解算時(shí)間,提高了機(jī)電系統(tǒng)仿真的計(jì)算效率,增強(qiáng)了民機(jī)協(xié)同仿真的實(shí)時(shí)性。
數(shù)據(jù)傳輸是分布式仿真中各節(jié)點(diǎn)通信的基礎(chǔ),DDS是由OMG(Object Management Group)定義的一種以數(shù)據(jù)為中心的發(fā)布/訂閱式通信模式[11],提供了一個(gè)與平臺(tái)無(wú)關(guān)的數(shù)據(jù)模型,簡(jiǎn)化了數(shù)據(jù)在分布式系統(tǒng)中的可靠、高效發(fā)布[12]。DDS通信實(shí)體主要包括域、發(fā)布者、訂閱者、數(shù)據(jù)寫者、數(shù)據(jù)讀者和主題[13],同一域中的DDS實(shí)體通信模型如圖1所示。
圖1 同一域中的DDS實(shí)體通信模型
一個(gè)發(fā)布者可以創(chuàng)建和管理多個(gè)包含主題的數(shù)據(jù)寫者,然后向全局?jǐn)?shù)據(jù)空間發(fā)布帶有不同主題的數(shù)據(jù),一個(gè)訂閱者可以創(chuàng)建和管理多個(gè)數(shù)據(jù)讀者,通過(guò)匹配全局?jǐn)?shù)據(jù)空間的主題來(lái)讀取所需要的數(shù)據(jù),這樣就實(shí)現(xiàn)了DDS實(shí)體之間的數(shù)據(jù)通信過(guò)程。
以本文的AMESim機(jī)電系統(tǒng)分布式仿真為例,給出基于DDS發(fā)布/訂閱的通信過(guò)程,如圖2所示。由于AMESim建模與仿真是基于功率鍵合圖的圖形化仿真,元器件之間的連接有前后邏輯關(guān)系,即前一組狀態(tài)方程的輸出與后一組狀態(tài)方程的輸入要有正確的對(duì)應(yīng)關(guān)系,并且每一個(gè)仿真步長(zhǎng)均會(huì)計(jì)算大量數(shù)據(jù),所以在分布式仿真時(shí),仿真元器件之間要交換大量特定的數(shù)據(jù),符合DDS多主題傳輸、自動(dòng)發(fā)現(xiàn)并匹配所需數(shù)據(jù)的通信特點(diǎn)。將AMESim視作發(fā)布/訂閱節(jié)點(diǎn),節(jié)點(diǎn)通過(guò)仿真數(shù)據(jù)接口向DDS創(chuàng)建連接和注冊(cè)數(shù)據(jù)類型,然后發(fā)布帶有相應(yīng)服務(wù)質(zhì)量的主題信息,另一AMESim節(jié)點(diǎn)收聽到請(qǐng)求后,在全局?jǐn)?shù)據(jù)空間中對(duì)比相應(yīng)的發(fā)布/訂閱主題以及服務(wù)質(zhì)量,如果兩者均相同則進(jìn)行通信,再通過(guò)仿真數(shù)據(jù)接口傳輸?shù)紸MESim節(jié)點(diǎn)。
圖2 發(fā)布/訂閱過(guò)程
分布式互聯(lián)架構(gòu)能實(shí)現(xiàn)多應(yīng)用軟件的協(xié)同仿真,但AMESim應(yīng)用的集成還未實(shí)現(xiàn),且飛機(jī)系統(tǒng)設(shè)計(jì)與集成測(cè)試需要專業(yè)的機(jī)械液壓設(shè)計(jì)軟件,故本文設(shè)計(jì)了AMESim與DDS平臺(tái)的數(shù)據(jù)交互接口,其總體框架圖如圖3所示。架構(gòu)分為七個(gè)部分:仿真運(yùn)行管理環(huán)境、仿真主引擎、仿真子引擎、仿真軟總線、仿真輔助服務(wù)、數(shù)據(jù)存儲(chǔ)及記錄、數(shù)據(jù)接口。仿真數(shù)據(jù)接口通過(guò)初始化、定義輸入/輸出接口列表,以及調(diào)用嵌入到仿真數(shù)據(jù)接口內(nèi)部的仿真子引擎,將仿真模型與DDS連接,以實(shí)現(xiàn)數(shù)據(jù)交互、分布式仿真模型的求解控制。
圖3 分布式仿真總體框架圖
數(shù)據(jù)接口模塊負(fù)責(zé)與AMESim仿真軟件搭建的機(jī)電系統(tǒng)模型輸入/輸出端口進(jìn)行銜接、初始化、控制模型的解算、模型與子引擎之間的數(shù)據(jù)交互、系統(tǒng)資源回收等。封裝好的AMESim接口模塊位于AMESim Library中,圖標(biāo)為P_in、T_in、P_out和T_out,它們是四個(gè)功能結(jié)構(gòu)相同的物理接口模塊,目的是為了防止進(jìn)油油路和回油油路混淆,Adapter模塊為系統(tǒng)的適配模塊,其功能為求解器頻率范圍適配和求解器幅值范圍適配。通過(guò)拖拽圖形化的接口完成AMESim分布式仿真能力的擴(kuò)展,使AMESim機(jī)電系統(tǒng)分布式建模與仿真成為可能。
在現(xiàn)有架構(gòu)和開源RTI_DDS基礎(chǔ)上進(jìn)行二次開發(fā),通過(guò)對(duì)相關(guān)的函數(shù)進(jìn)行封裝,形成了AMESim分布式仿真的通用接口,使每一個(gè)帶有AMESim的分布式節(jié)點(diǎn)都可以借助DDS分布式架構(gòu)進(jìn)行發(fā)布和訂閱的相關(guān)操作,從而實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)交互。下面介紹通用接口里的幾個(gè)主要函數(shù)以及具體實(shí)現(xiàn)過(guò)程:
1) 初始化處理階段主要函數(shù)。
void AddInPort(char* name, int size, porttype type, portmode mode, void* initvalue),功能是加入輸入端口,定義了端口名稱、端口維數(shù)、端口類型、端口模式、端口初始值5個(gè)參數(shù)。void AddOutPort(char* name, int size, porttype type, portmode mode, void* initvalue),功能是加入輸出端口,參數(shù)含義同上。int initPortList(int dir, portlist**sq),功能為初始化端口列表。BOOL InitSubEng(),初始化子引擎。
2) 仿真接口調(diào)度階段主要函數(shù)。int hwaMakeMdf(),其功能是在模型工程路徑下生成后綴名為.mdf的模型描述文件,是整個(gè)接口設(shè)計(jì)環(huán)節(jié)的核心,返回值為0或1。void GetCoSimPortData (portnode* ptnd),得到當(dāng)前協(xié)同仿真端口數(shù)據(jù),返回當(dāng)前端口節(jié)點(diǎn)指針。void SetCoSimPortData(const portnode* ptnd, const double* timestamp),向數(shù)據(jù)軟總線寫入當(dāng)前端口和當(dāng)前模型解算時(shí)間戳。int getCV(CurVar* cv, void* value, porttype eletype, int arraysize, portmode mode),獲取端口數(shù)據(jù)值。void getPortDataById (portlist* sq, int id ,void *value ),通過(guò)端口ID號(hào)設(shè)置端口數(shù)據(jù)。
3) 仿真結(jié)束階段主要函數(shù)。void ProcessModelSimulateTerminate(int portDir),在仿真結(jié)束時(shí)調(diào)用子引擎終止函數(shù),在仿真過(guò)程中安全退出。void TerminateSubEng(const int dir),dir是端口輸入/輸出方向參數(shù)。
實(shí)現(xiàn)過(guò)程分成三個(gè)階段處理,實(shí)現(xiàn)的流程示意圖如圖4所示。
圖4 接口實(shí)現(xiàn)示意圖
(1) 接口初始化處理階段。調(diào)用AMESim API獲取仿真信息,包括仿真起始時(shí)間、模型解算步長(zhǎng)、模型名稱、系統(tǒng)工程名稱及路徑等;初始化端口列表;加入所有輸入輸出端口;獲取輸入端口個(gè)數(shù)以及輸出端口個(gè)數(shù);調(diào)用AMESim回調(diào)函數(shù)AmeInstallAtEnd()注冊(cè)仿真結(jié)束處理函數(shù),函數(shù)第一個(gè)參數(shù)為需要注冊(cè)的函數(shù)名,第二個(gè)參數(shù)為注冊(cè)函數(shù)的參數(shù)列表。
(2) 仿真運(yùn)行接口調(diào)度階段。在指定路徑下尋找模型描述文件,如果沒(méi)有.mdf文件,則生成模型描述文件,然后結(jié)束仿真。如果有.mdf文件,則進(jìn)入仿真,等待同步時(shí)鐘。然后初始化子引擎,等待子引擎給出開始解算信號(hào)。此時(shí)從接口函數(shù)處獲取對(duì)應(yīng)輸入端口的數(shù)據(jù),賦值給模型輸入變量,再進(jìn)行模型解算,將獲取的模型輸出變量賦值給對(duì)應(yīng)的接口函數(shù)輸出端口,此過(guò)程與仿真子引擎進(jìn)行交互并更新端口計(jì)數(shù)器。
(3) 仿真結(jié)束處理。調(diào)用子引擎終止函數(shù),設(shè)置參數(shù)為輸入或輸出;調(diào)用仿真終止函數(shù)等。
利用上述DDS分布式互聯(lián)架構(gòu)和設(shè)計(jì)的仿真數(shù)據(jù)交互接口,可以讓熟悉不同系統(tǒng)的仿真人員分別設(shè)計(jì)各個(gè)子系統(tǒng),只需要預(yù)留出系統(tǒng)的輸入/輸出端口,通過(guò)連接協(xié)同仿真數(shù)據(jù)接口完成分布式仿真建模,最后再集成到仿真平臺(tái)上進(jìn)行分布式仿真。由于篇幅原因,下面以典型的升降舵系統(tǒng)與液壓能源系統(tǒng)為例說(shuō)明分布式建模過(guò)程。
某型飛機(jī)升降舵有左右兩個(gè)舵面,左升降舵由中央液壓能源系統(tǒng)和左液壓能源系統(tǒng)供油,右升降舵由中央液壓能源系統(tǒng)和右液壓能源系統(tǒng)供油。由于左右兩側(cè)功能與結(jié)構(gòu)相同,每一側(cè)有兩套作動(dòng)裝置,故只選取一套系統(tǒng)進(jìn)行建模。升降舵單側(cè)液壓回路主要由遠(yuǎn)程電子單元、電液伺服閥、旁通阻尼閥、模式選擇閥和阻斷電磁閥等組成。信號(hào)經(jīng)過(guò)一個(gè)PI環(huán)節(jié)和舵偏角限幅環(huán)節(jié)送到動(dòng)力控制單元(Power Controller Unit,PCU)中的電液伺服閥中,再由電液伺服閥驅(qū)動(dòng)液壓缸完成方向舵偏轉(zhuǎn),其過(guò)程可由圖5升降舵控制框圖描述。
圖5 升降舵控制框圖
參考某型飛機(jī)手冊(cè),在升降舵建模過(guò)程中設(shè)置如下仿真參數(shù):電液伺服閥內(nèi)流量5 L/min,液壓缸活塞直徑82.3 mm,液壓缸行程長(zhǎng)度0.254 m,液壓缸活塞桿直徑44.45 mm,作動(dòng)筒活塞直徑0.1 m,作動(dòng)筒行程0.025 m,作動(dòng)筒活塞桿直徑0.013 m,控制器PI參數(shù)設(shè)置為-2和0,最大值40,最小值-40,延遲時(shí)間0.001 s,建立如圖6所示的分布式升降舵模型。
圖6 分布式升降舵系統(tǒng)建模
某型飛機(jī)液壓能源系統(tǒng)有左中右三套,左和右液壓能源分別由一個(gè)發(fā)動(dòng)機(jī)驅(qū)動(dòng)泵、一個(gè)電動(dòng)泵組成,中間液壓能源系統(tǒng)由兩臺(tái)電動(dòng)泵和一臺(tái)沖壓空氣渦輪驅(qū)動(dòng)泵組成,參考手冊(cè)中液壓能源系統(tǒng)原理圖,回路中還應(yīng)有液壓油箱、高壓濾油器、漏油濾油器、蓄能器等。
飛機(jī)液壓系統(tǒng)的設(shè)計(jì)指標(biāo)之一是能夠滿足全飛行過(guò)程的負(fù)載流量需求[14],參考某型飛機(jī)北京-上海航段數(shù)據(jù),模型精細(xì)度及參數(shù)設(shè)置如下:
(1) 液壓泵為恒壓變量泵,壓力位5 000 PSI(壓力變化范圍為4 775 PSI~5 050 PSI),流量27 GPM~34 GPM;額定流量25 GPM(94.625 L/min)。
(2) 電動(dòng)泵額定輸出流量為27 GPM,輸出壓力為4 750 PSI,最大輸出值37 GPM,電機(jī)轉(zhuǎn)速5 500 r/min。電動(dòng)泵主要在起飛及爬升高度在2 000 ft以內(nèi)使用,當(dāng)高度超過(guò)2 000 ft以后,襟翼收回,電動(dòng)泵轉(zhuǎn)速變?yōu)? 700 r/min。當(dāng)降落時(shí),電機(jī)轉(zhuǎn)速5 500 r/min,起落架放下;當(dāng)發(fā)動(dòng)機(jī)反推時(shí),電機(jī)轉(zhuǎn)速6 800 r/min。
(3) 其他參數(shù)設(shè)置:液壓油箱為自增壓油箱,增壓壓力為75 PSI,共三個(gè)油箱,左右油箱容積為19 L,中央油箱容積為42 L。油箱指示使用的參考溫度80 F(26.7 ℃)熱補(bǔ)償計(jì)算。蓄能器壓力為5 000 PSI,預(yù)壓壓力為2 000 PSI。高壓濾油器:通過(guò)減壓閥保護(hù),當(dāng)壓力大于6 000 PSI時(shí),減壓閥工作。同時(shí)并聯(lián)單向閥,防止油液回流。參考某型飛機(jī)液壓能源系統(tǒng)原理圖,建立如圖7所示的分布式液壓能源系統(tǒng)模型。
圖7 分布式液壓能源系統(tǒng)建模
本文選取Windows 7系統(tǒng)作為實(shí)驗(yàn)平臺(tái)的操作系統(tǒng),其硬件的主要參數(shù)如下:CPU型號(hào)為Intel(R) Core(TM) i7-7700K,CPU主頻為4.20 GHz,內(nèi)存16.0 GB;其軟件環(huán)境主要為L(zhǎng)MS AMESim R15,DDS分布式互聯(lián)架構(gòu)。將建模完成后的兩個(gè)模型分別進(jìn)行編譯與仿真,此時(shí)會(huì)在仿真工程路徑下生成模型描述文件。通過(guò)把生成的描述文件導(dǎo)入到DDS互聯(lián)架構(gòu)的模型庫(kù)中,實(shí)現(xiàn)分布式模型在架構(gòu)中的調(diào)度與運(yùn)行。
根據(jù)AMESim的help文件:對(duì)系統(tǒng)分布式建模后,每個(gè)分布式模型都會(huì)被另一個(gè)模型視為發(fā)散,故會(huì)存在系統(tǒng)不穩(wěn)定、仿真結(jié)果不收斂的情況。這在求解器耦合求解時(shí)很常見(jiàn),所以對(duì)分布式建模的系統(tǒng)穩(wěn)定性以及性能分析是非常有必要的。由于機(jī)電系統(tǒng)是非線性的,故按照文獻(xiàn)[15]設(shè)置仿真變量的狀態(tài),對(duì)系統(tǒng)進(jìn)行線性化分析,圖8所示是分布式升降舵系統(tǒng)的Nyquist曲線,由Nyquist判據(jù)可知:繞(-1, j0)一圈,系統(tǒng)穩(wěn)定。由于飛控系統(tǒng)中對(duì)指令響應(yīng)速度有要求,故使用階躍信號(hào)來(lái)測(cè)試作動(dòng)筒跟隨的快速性,仿真結(jié)果如圖9所示,過(guò)渡過(guò)程時(shí)間為2.73 s(5%誤差帶),超調(diào)量為0,穩(wěn)態(tài)誤差為0。對(duì)于不同幅度指令的作動(dòng)響應(yīng)如圖10所示,與階躍響應(yīng)一致。
圖8 Nyquist曲線
圖9 階躍響應(yīng)
圖10 不同幅度的指令偏轉(zhuǎn)響應(yīng)
通過(guò)對(duì)比關(guān)鍵仿真元件使用分布式仿真方法與集中仿真方法的位移、壓力、流量等物理量的誤差,來(lái)驗(yàn)證分布式仿真變量的一致性,選取伺服閥進(jìn)油回路質(zhì)量流率、液壓缸進(jìn)油口的壓力、作動(dòng)筒的位移進(jìn)行比較,圖11-圖13所示為伺服閥進(jìn)油回路流量、液壓缸進(jìn)油口的壓力、作動(dòng)筒位移分布式仿真前后一致性對(duì)比圖,其中流量值和位移值幾乎完全重合,壓力值的瞬時(shí)最大誤差為14%,平均誤差不超過(guò)10%,對(duì)仿真結(jié)果幾乎無(wú)影響。
圖11 伺服閥進(jìn)油回路流量對(duì)比圖
圖12 液壓缸進(jìn)油口壓力對(duì)比圖
圖13 作動(dòng)筒位移對(duì)比圖
把基于數(shù)據(jù)接口的分布式仿真模型還原為集成仿真模型,可以得到如圖14的分布式仿真前后CPU時(shí)間對(duì)比圖,可以看出分布式仿真前為5.27 s,分布式仿真后的液壓能源系統(tǒng)為0.20 s,升降舵系統(tǒng)為1.19 s,明顯縮短了仿真計(jì)算時(shí)間,導(dǎo)入到互聯(lián)架構(gòu)平臺(tái)中的仿真時(shí)間為6.97 s,時(shí)間稍有增加,原因是DDS通信時(shí)間在本次仿真時(shí)間中占比很大。故對(duì)三套液壓能源系統(tǒng)和兩側(cè)升降舵均進(jìn)行仿真,分布式前后時(shí)間如圖15所示,分布式之前時(shí)間是32.39 s,分布式之后為28.28 s,時(shí)間縮短了4.11 s,加速性能良好。
圖14 仿真時(shí)間對(duì)比圖
圖15 復(fù)雜系統(tǒng)時(shí)間對(duì)比圖
分布式仿真是分析大規(guī)模復(fù)雜機(jī)電系統(tǒng)仿真的有效方法,本文通過(guò)研究DDS數(shù)據(jù)通信機(jī)制以及現(xiàn)有的DDS分布式互聯(lián)架構(gòu)平臺(tái),設(shè)計(jì)了AMESim與DDS平臺(tái)的仿真數(shù)據(jù)接口,建立了民機(jī)機(jī)電系統(tǒng)分布式仿真模型,實(shí)現(xiàn)了并行建模、分布式仿真以及復(fù)雜系統(tǒng)的仿真加速。仿真結(jié)果表明:使用DDS作為通信中間件,在保證仿真同步精度的同時(shí)實(shí)現(xiàn)了仿真加速,為民機(jī)復(fù)雜系統(tǒng)的集成測(cè)試與驗(yàn)證提供了新的工程思路。