石磊


摘 ?要:VAPS XT工具用于人機(jī)界面的快速設(shè)計(jì)仿真,開發(fā)出來的應(yīng)用程序主要提供操作人員的人機(jī)接口,需要第三方應(yīng)用將輸入指令轉(zhuǎn)換為顯示數(shù)據(jù),可以采用第三方應(yīng)用程序作為中繼,通過共享內(nèi)存和UDP的方式實(shí)現(xiàn)VAPS XT和Simulink端的數(shù)據(jù)交互。該文介紹了一種可以直接建立兩種工具通信的方式,不需要額外開發(fā)專門的中轉(zhuǎn)程序,易于實(shí)現(xiàn),可以用于人機(jī)界面聯(lián)合仿真。
關(guān)鍵詞:VAPS XT ?UDP ?Simulink ?nCOM
中圖分類號:TP391.9 ? 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2020)06(c)-0005-04
Abstract: VAPS XT tool is used for the rapid design and Simulation of human-machine interface.The developed application program mainly provides the human-machine interface of operators. It needs the third-party application to convert the input instructions into display data. It can use the third-party application program as the relay to realize VAPS by sharing memory and UDP,the data interaction between XT and Simulink is introduced in this paper, which can directly establish the interaction between the two tools.Develop of external data exchange application is not required, thus the communication is easy to be established, and can be used in the joint simulation of human-computer interface.
Key Words: VAPS XT; UDP; Simulink; nCOM
VAPS XT是一款人機(jī)界面設(shè)計(jì)工具,可以快速開展顯示畫面的設(shè)計(jì),通過自帶的Code nGEN工具自動(dòng)生成代碼,提升設(shè)計(jì)效率。VAPS XT還可以用于仿真和演示,可以利用nCOM接口很方便地實(shí)現(xiàn)與外部程序環(huán)境的數(shù)據(jù)交互。Simulink作為仿真平臺,可以接收來自VAPS XT的駕駛員操作指令,進(jìn)行數(shù)據(jù)處理后,驅(qū)動(dòng)VAPS XT顯示界面。VAPS XT實(shí)現(xiàn)外部通信必須通過nCOM接口,而外部應(yīng)用必須與nCOM接口定義的數(shù)據(jù)描述文件兼容,對于Simulink仿真工具來說,就有至少兩種方式:一種是將接口數(shù)據(jù)適配(數(shù)據(jù)包解析和打包)的模塊放到中間應(yīng)用中,另一種是直接在Simulink中進(jìn)行數(shù)據(jù)包解析和打包。兩種方式可以需要采用UDP作為網(wǎng)絡(luò)傳輸協(xié)議。
1 ?軟件和工具介紹
1.1 VAPS XT人機(jī)界面設(shè)計(jì)工具
VAPS XT是一款用于人機(jī)界面設(shè)計(jì)的商用貨架軟件開發(fā)工具,由加拿大Presagis公司開發(fā)。目前該軟件的最新版本為4.2版。該軟件將開發(fā)人員的設(shè)計(jì)精力從編碼轉(zhuǎn)向了界面設(shè)計(jì),通過一系列內(nèi)置的圖形界面對象、數(shù)據(jù)流映射、狀態(tài)機(jī)圖定義等功能,實(shí)現(xiàn)人機(jī)界面的快速設(shè)計(jì),工具還提供自動(dòng)代碼生成功能,可以快速地進(jìn)行人機(jī)界面設(shè)計(jì)圖形轉(zhuǎn)換為代碼。通過與Simulink仿真工具配合使用,學(xué)術(shù)界和工業(yè)界已經(jīng)將該軟件應(yīng)用于人在環(huán)的人機(jī)界面仿真設(shè)計(jì)。VAPS XT提供了內(nèi)置的nCOM功能,可以實(shí)現(xiàn)其與外部應(yīng)用的雙向通信。
1.2 MATLAB Simulink仿真工具
Simulink工具一款用于動(dòng)態(tài)系統(tǒng)建模、仿真、分析的工具,廣泛應(yīng)用于通信、電力、自動(dòng)控制等多個(gè)領(lǐng)域,由Mathworks公司開發(fā),作為MATLAB可視化工具。該工具內(nèi)置了Aerospace Blockset模塊工具箱,可以進(jìn)一步提供航空航天領(lǐng)域的建模、仿真和分析[1]。借助該模塊工具箱,可以對飛機(jī)的大氣、重力、風(fēng)、地形、磁場等運(yùn)行環(huán)境、六自由度模型進(jìn)行建模,結(jié)合Simulink模塊提供的駕駛桿接口模塊,以及FlightGear等飛行視景仿真工具[2],可以搭建出一整套用于對飛行器進(jìn)行仿真的環(huán)境,驗(yàn)證飛行器的操縱品質(zhì)和人機(jī)接口。雖然Simulink內(nèi)置有儀表界面,在實(shí)際應(yīng)用中使用VAPS XT作為專業(yè)的人機(jī)界面開發(fā)工具[3,4],創(chuàng)建向飛行員顯示飛行參數(shù)的應(yīng)用程序,這就需要VAPS XT建立與Simulink仿真工具的通信。
2 ?通過中轉(zhuǎn)程序?qū)崿F(xiàn)VAPS XT與Simulink的數(shù)據(jù)交互
2.1 nCOM的配置
nCOM接口與VAPS XT協(xié)同使用,可以用于實(shí)現(xiàn)兩個(gè)VAPS XT應(yīng)用程序之間,或者VAPS XT應(yīng)用與外部應(yīng)用程序之間的通信。例如,在一臺服務(wù)器上部署了VAPS XT開發(fā)的人機(jī)界面應(yīng)用程序,在另外一臺服務(wù)器上部署了STAGE場景仿真工具,通過nCOM接口,可以將VAPS XT采集到的用戶輸入傳輸給STAGE,再將STAGE端生成的數(shù)據(jù)返回到VAPS XT并顯示給用戶,具體如圖1所示。
為了建立通信,在nCOM使用過程中需要配置如下對象。
(1)Connections。連接配置文件,此XML文件包含所有連接配置及其屬性。當(dāng)用戶在VAPS XT中雙擊此文件時(shí),可以顯示此配置文件的修改頁面。每個(gè)項(xiàng)目只允許此文件的一個(gè)副本,并且VAPS XT接口將對其進(jìn)行修改。
(2)Mappings。映射配置文件,這個(gè)XML文件包含了每個(gè)VAPS XT圖形應(yīng)用中所有的描述Connections與I/O緩沖區(qū)的映射。請參閱配置nCOM映射。
(3)Data Description。數(shù)據(jù)定義文件,此數(shù)據(jù)描述文件(.dd)創(chuàng)建了一個(gè)結(jié)構(gòu)化類型,可用于描述I/O緩沖區(qū),構(gòu)建data sender和data receiver,這些緩沖區(qū)可以進(jìn)一步與VAPS XT中的圖形對象交換數(shù)據(jù),最終實(shí)現(xiàn)VAPS XT與外部應(yīng)用程序的交換數(shù)據(jù)[5]。
nCOM需要設(shè)計(jì)者定義數(shù)據(jù)緩沖區(qū)、連接以及緩沖區(qū)和連接的映射,在VAPS XT軟件提供的支持文檔[6,7]中有關(guān)于nCOM配置和使用的詳細(xì)信息。
2.2 VAPS XT與第三方應(yīng)用之間的交互
nCOM通信包括3種類型,分別是共享內(nèi)存、TCP/IP和UDP方式,具體特點(diǎn)如下。
(1)共享內(nèi)存。在同一硬件平臺上運(yùn)行應(yīng)用程序時(shí)使用此傳輸。在這種情況下,傳輸可以提高應(yīng)用程序之間的傳輸速度。
(2)TCP/IP。這是一種點(diǎn)對點(diǎn)協(xié)議,這意味著數(shù)據(jù)從網(wǎng)絡(luò)中的一個(gè)點(diǎn)傳輸?shù)搅硪粋€(gè)點(diǎn)或主機(jī)。
(3)UDP。該協(xié)議不將消息分成數(shù)據(jù)包并在另一端重新組裝。當(dāng)應(yīng)用程序具有非常小的數(shù)據(jù)單元進(jìn)行交換時(shí),這非常有用。
但是,最常用的通信類型是UDP和共享內(nèi)存。此節(jié)演示的基于nCom連接的架構(gòu)如圖2所示。
為了指導(dǎo)開發(fā)人員進(jìn)行中轉(zhuǎn)應(yīng)用程序的編程,VAPS XT提供了一個(gè)模板C++工程和源代碼,位于安裝路徑的Tutorials\Using_nCOM目錄下,可以在此模板工程的基礎(chǔ)上,創(chuàng)建用戶自定義的支持nCOM通信的外部應(yīng)用程序,在VAPS XT提供的nCOM通信指南中對該模板和代碼的編譯和運(yùn)行有詳細(xì)的說明,模板包括的幾個(gè)主要的文件說明如下。
(1)anim.cpp。存放包含第三方應(yīng)用程序特定代碼的源文件,用戶可以將包括純UDP通信的代碼放在這個(gè)文件中。
(2)nComApp.cpp。包含了所有nCOM函數(shù)功能的源文件,包括發(fā)送器、管理器、定義、初始化等,用戶可以對該文件的配置進(jìn)行修改,如nCOM的連接、映射配置文件的本地存放位置。
(3)nComAppvc12.vcxproj。項(xiàng)目工程文件,該工程文件已經(jīng)完成了設(shè)置,添加了對VAPS XT提供的與nCOM通信相關(guān)的頭文件和靜態(tài)庫
3 ?通過直接方式實(shí)現(xiàn)VAPS XT與Simulink的數(shù)據(jù)交互
VAPS XT提供了專門用于Simulink通信的nCOM模塊,但此模塊不是軟件默認(rèn)提供的,而且可能存在與VAPS XT、Simulink版本不兼容的情況。該章介紹一種比較靈活、兼容性好的VAPX XT與Simulink通信的方案。該方案的通信基于UDP,基本原理就是在Simulink端做好發(fā)送給VAPS XT應(yīng)用的UDP數(shù)據(jù)包的封裝,以及來自VAPS XT應(yīng)用的UDP數(shù)據(jù)包的解包。
3.1 建立VAPS XT與Simulink之間的通信
通過中轉(zhuǎn)方式實(shí)現(xiàn)VAPS XT與Simulink的數(shù)據(jù)交互,需要單獨(dú)定義第三方應(yīng)用,在這個(gè)第三方應(yīng)用中,引用了nCOM庫文件,第三方應(yīng)用可以與VAPS XT進(jìn)行通信,而第三方應(yīng)用程與Simulink之間的數(shù)據(jù)交換格式是可以預(yù)先定義兼容的。如果要取消第三方中轉(zhuǎn)程序,則必須讓Simulink打包發(fā)送到UDP的數(shù)據(jù)符合數(shù)據(jù)描述文件(.dd)的要求,能夠被nCOM識別,并且還要按照數(shù)據(jù)描述文件定義的格式,對nCOM發(fā)出的數(shù)據(jù)進(jìn)行解析。最終用到了兩個(gè)數(shù)據(jù)緩沖區(qū),具體見圖3。
3.2 VAPS XT中的nCOM接口數(shù)據(jù)包解析
由于VAPS XT將根據(jù)數(shù)據(jù)描述文件中的定義打包將通過UDP傳輸?shù)臄?shù)據(jù),因此應(yīng)以相同的方式打包Simulink UDP數(shù)據(jù)以建立通信,否則,VAPS XT和Simulink之間將無法識別對方發(fā)送的數(shù)據(jù)。
由于通過UDP連接從/到VASP XT的數(shù)據(jù)是以前綴和特定格式打包的,在研究VAPS-XT-UDP緩沖區(qū)數(shù)據(jù)樣本的基礎(chǔ)上,得出數(shù)據(jù)打包的原則如下。
如果VAPS XT通過UDP連接發(fā)送50個(gè)浮點(diǎn)類型的數(shù)據(jù),則發(fā)送到UDP緩沖區(qū)的最終包應(yīng)為:
VAPS XT利用nCOM的UDP模式通信時(shí),會(huì)根據(jù)數(shù)據(jù)描述文件(*.dd)的內(nèi)容,對發(fā)送至UDP端口的數(shù)據(jù)進(jìn)行封裝,可以使用UDP端口測試工具,對VAPS XT的nCOM通信數(shù)據(jù)進(jìn)行分析,以VAPS XT預(yù)定義的50組浮點(diǎn)數(shù)據(jù)格式為例,其封裝格式如圖4所示。
如圖5所示,UDP包由三部分組成:前綴1表示數(shù)據(jù)描述類型,總長度為32字節(jié);前綴2表示發(fā)送方/接收方對象,總長度為36字節(jié),如果內(nèi)容較短,則前綴的其余部分將填充零。數(shù)據(jù)字節(jié)將從第69個(gè)字節(jié)開始,數(shù)據(jù)部分的總長度取決于數(shù)據(jù)的類型和數(shù)量。例如,50個(gè)浮點(diǎn)類型的數(shù)據(jù)將覆蓋50×4字節(jié)。
如果Simulink要與VAPS XT通信,將考慮相同的數(shù)據(jù)打包協(xié)議,否則將不接收/發(fā)送數(shù)據(jù),或出現(xiàn)錯(cuò)誤的數(shù)據(jù)。
在Simulink中,采用UDP發(fā)送/接收模塊建立UDP緩沖區(qū)到Simulink的連接。模塊應(yīng)根據(jù)VAPS XT中的配置進(jìn)行配置。
Simulink中的UDP接收模塊應(yīng)使用VAPS XT中的UDP發(fā)送緩沖區(qū),而Simulink中的UDP發(fā)送模塊應(yīng)在VAPS XT中應(yīng)用UDP接收緩沖區(qū)。
在將數(shù)據(jù)發(fā)送到UDP緩沖區(qū)之前,應(yīng)該將其與前綴部分打包在一起。數(shù)據(jù)描述文件名和緩沖區(qū)對象名應(yīng)翻譯成ASCII碼,例如,“FLOAT50”應(yīng)翻譯成“70108111971165348”。
3.3 在Simulink中搭建數(shù)據(jù)匹配通信模塊
在分析出VAPS XT的nCOM通信的數(shù)據(jù)打包規(guī)則后,只需要在Simulink中創(chuàng)建一個(gè)用于適配VAPS XT的接口模塊就可以實(shí)現(xiàn)數(shù)據(jù)交互。圖5為該文創(chuàng)建的用于從Simulink向VAPS XT發(fā)送數(shù)據(jù)的模塊在仿真工程中的連接。
圖6為在Simulink中實(shí)現(xiàn)的nCOM發(fā)送模塊的具體細(xì)節(jié),該模塊通過總線合并的方式,按照nCOM數(shù)據(jù)打包的要求,將nCOM數(shù)據(jù)包的字符所對應(yīng)的16進(jìn)制ASCII碼進(jìn)行組裝,與模塊接收到的數(shù)據(jù)一同發(fā)送至Simulink自帶的UDP通信模塊。該模塊的設(shè)置與VAPS XT中的nCOM通信的UDP設(shè)置匹配即可,包括IP地址、端口、廣播方式等。
4 ?結(jié)語
該文介紹了VAPS XT人機(jī)界面設(shè)計(jì)工具與Simulink仿真工具進(jìn)行數(shù)據(jù)通信的實(shí)現(xiàn)方式,在介紹nCOM端口的配置方法和通信類型的基礎(chǔ)上,給出了用中轉(zhuǎn)應(yīng)用程序間VAPS XT與Simulink間接通信,以及通過在Simulink端創(chuàng)建適配模塊實(shí)現(xiàn)VAPS XT與Simulink直接通信的兩種方式,從實(shí)現(xiàn)原理和操作流程方面給出了示例,可作為飛行仿真環(huán)境搭建過程中,建立人機(jī)界面端與模型仿真端雙向通信的一般參考。
參考文獻(xiàn)
[1] Chaturvedi D K.Modeling and simulation of systems using MATLAB and Simulink[M].CRC press,2017.
[2] 董鷹.基于Simulink/FlightGear的直升機(jī)飛行仿真系統(tǒng)設(shè)計(jì)[C]//中國航空學(xué)會(huì).2019年(第四屆)中國航空科學(xué)技術(shù)大會(huì)論文集.中國航空學(xué)會(huì):中國航空學(xué)會(huì),2019:806-819.
[3] Fedele A,Genito N,Garbarino L,et al.A pilot-in-the-loop facility for avionic concept development[J].Journal of Automation and Control Engineering,2016,4(4):290-294.
[4] Zheng LIU,F(xiàn)ei LI,NIU X.Modular Simulation Design of Human-machine Interaction for Civil Aircraft Cockpit[C]//DEStech Transactions on Computer Science and Engineering,2018.
[5] 秦正運(yùn),葛晨,程新滿.基于VAPS XT的座艙顯示設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2019(6):75-76.
[6] Presagis Canada Inc.VAPS XT User Guide[Z].2016.
[7] Presagis Canada Inc.VAPS XT Using nCOM Tutorial[Z].2016.