石磊
摘 ?要:VAPS XT工具用于人機界面的快速設計仿真,開發(fā)出來的應用程序主要提供操作人員的人機接口,需要第三方應用將輸入指令轉換為顯示數(shù)據(jù),可以采用第三方應用程序作為中繼,通過共享內(nèi)存和UDP的方式實現(xiàn)VAPS XT和Simulink端的數(shù)據(jù)交互。該文介紹了一種可以直接建立兩種工具通信的方式,不需要額外開發(fā)專門的中轉程序,易于實現(xiàn),可以用于人機界面聯(lián)合仿真。
關鍵詞:VAPS XT ?UDP ?Simulink ?nCOM
中圖分類號:TP391.9 ? 文獻標識碼: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是一款人機界面設計工具,可以快速開展顯示畫面的設計,通過自帶的Code nGEN工具自動生成代碼,提升設計效率。VAPS XT還可以用于仿真和演示,可以利用nCOM接口很方便地實現(xiàn)與外部程序環(huán)境的數(shù)據(jù)交互。Simulink作為仿真平臺,可以接收來自VAPS XT的駕駛員操作指令,進行數(shù)據(jù)處理后,驅動VAPS XT顯示界面。VAPS XT實現(xiàn)外部通信必須通過nCOM接口,而外部應用必須與nCOM接口定義的數(shù)據(jù)描述文件兼容,對于Simulink仿真工具來說,就有至少兩種方式:一種是將接口數(shù)據(jù)適配(數(shù)據(jù)包解析和打包)的模塊放到中間應用中,另一種是直接在Simulink中進行數(shù)據(jù)包解析和打包。兩種方式可以需要采用UDP作為網(wǎng)絡傳輸協(xié)議。
1 ?軟件和工具介紹
1.1 VAPS XT人機界面設計工具
VAPS XT是一款用于人機界面設計的商用貨架軟件開發(fā)工具,由加拿大Presagis公司開發(fā)。目前該軟件的最新版本為4.2版。該軟件將開發(fā)人員的設計精力從編碼轉向了界面設計,通過一系列內(nèi)置的圖形界面對象、數(shù)據(jù)流映射、狀態(tài)機圖定義等功能,實現(xiàn)人機界面的快速設計,工具還提供自動代碼生成功能,可以快速地進行人機界面設計圖形轉換為代碼。通過與Simulink仿真工具配合使用,學術界和工業(yè)界已經(jīng)將該軟件應用于人在環(huán)的人機界面仿真設計。VAPS XT提供了內(nèi)置的nCOM功能,可以實現(xiàn)其與外部應用的雙向通信。
1.2 MATLAB Simulink仿真工具
Simulink工具一款用于動態(tài)系統(tǒng)建模、仿真、分析的工具,廣泛應用于通信、電力、自動控制等多個領域,由Mathworks公司開發(fā),作為MATLAB可視化工具。該工具內(nèi)置了Aerospace Blockset模塊工具箱,可以進一步提供航空航天領域的建模、仿真和分析[1]。借助該模塊工具箱,可以對飛機的大氣、重力、風、地形、磁場等運行環(huán)境、六自由度模型進行建模,結合Simulink模塊提供的駕駛桿接口模塊,以及FlightGear等飛行視景仿真工具[2],可以搭建出一整套用于對飛行器進行仿真的環(huán)境,驗證飛行器的操縱品質和人機接口。雖然Simulink內(nèi)置有儀表界面,在實際應用中使用VAPS XT作為專業(yè)的人機界面開發(fā)工具[3,4],創(chuàng)建向飛行員顯示飛行參數(shù)的應用程序,這就需要VAPS XT建立與Simulink仿真工具的通信。
2 ?通過中轉程序實現(xiàn)VAPS XT與Simulink的數(shù)據(jù)交互
2.1 nCOM的配置
nCOM接口與VAPS XT協(xié)同使用,可以用于實現(xiàn)兩個VAPS XT應用程序之間,或者VAPS XT應用與外部應用程序之間的通信。例如,在一臺服務器上部署了VAPS XT開發(fā)的人機界面應用程序,在另外一臺服務器上部署了STAGE場景仿真工具,通過nCOM接口,可以將VAPS XT采集到的用戶輸入傳輸給STAGE,再將STAGE端生成的數(shù)據(jù)返回到VAPS XT并顯示給用戶,具體如圖1所示。
為了建立通信,在nCOM使用過程中需要配置如下對象。
(1)Connections。連接配置文件,此XML文件包含所有連接配置及其屬性。當用戶在VAPS XT中雙擊此文件時,可以顯示此配置文件的修改頁面。每個項目只允許此文件的一個副本,并且VAPS XT接口將對其進行修改。
(2)Mappings。映射配置文件,這個XML文件包含了每個VAPS XT圖形應用中所有的描述Connections與I/O緩沖區(qū)的映射。請參閱配置nCOM映射。
(3)Data Description。數(shù)據(jù)定義文件,此數(shù)據(jù)描述文件(.dd)創(chuàng)建了一個結構化類型,可用于描述I/O緩沖區(qū),構建data sender和data receiver,這些緩沖區(qū)可以進一步與VAPS XT中的圖形對象交換數(shù)據(jù),最終實現(xiàn)VAPS XT與外部應用程序的交換數(shù)據(jù)[5]。
nCOM需要設計者定義數(shù)據(jù)緩沖區(qū)、連接以及緩沖區(qū)和連接的映射,在VAPS XT軟件提供的支持文檔[6,7]中有關于nCOM配置和使用的詳細信息。
2.2 VAPS XT與第三方應用之間的交互
nCOM通信包括3種類型,分別是共享內(nèi)存、TCP/IP和UDP方式,具體特點如下。
(1)共享內(nèi)存。在同一硬件平臺上運行應用程序時使用此傳輸。在這種情況下,傳輸可以提高應用程序之間的傳輸速度。
(2)TCP/IP。這是一種點對點協(xié)議,這意味著數(shù)據(jù)從網(wǎng)絡中的一個點傳輸?shù)搅硪粋€點或主機。
(3)UDP。該協(xié)議不將消息分成數(shù)據(jù)包并在另一端重新組裝。當應用程序具有非常小的數(shù)據(jù)單元進行交換時,這非常有用。
但是,最常用的通信類型是UDP和共享內(nèi)存。此節(jié)演示的基于nCom連接的架構如圖2所示。
為了指導開發(fā)人員進行中轉應用程序的編程,VAPS XT提供了一個模板C++工程和源代碼,位于安裝路徑的Tutorials\Using_nCOM目錄下,可以在此模板工程的基礎上,創(chuàng)建用戶自定義的支持nCOM通信的外部應用程序,在VAPS XT提供的nCOM通信指南中對該模板和代碼的編譯和運行有詳細的說明,模板包括的幾個主要的文件說明如下。
(1)anim.cpp。存放包含第三方應用程序特定代碼的源文件,用戶可以將包括純UDP通信的代碼放在這個文件中。
(2)nComApp.cpp。包含了所有nCOM函數(shù)功能的源文件,包括發(fā)送器、管理器、定義、初始化等,用戶可以對該文件的配置進行修改,如nCOM的連接、映射配置文件的本地存放位置。
(3)nComAppvc12.vcxproj。項目工程文件,該工程文件已經(jīng)完成了設置,添加了對VAPS XT提供的與nCOM通信相關的頭文件和靜態(tài)庫
3 ?通過直接方式實現(xiàn)VAPS XT與Simulink的數(shù)據(jù)交互
VAPS XT提供了專門用于Simulink通信的nCOM模塊,但此模塊不是軟件默認提供的,而且可能存在與VAPS XT、Simulink版本不兼容的情況。該章介紹一種比較靈活、兼容性好的VAPX XT與Simulink通信的方案。該方案的通信基于UDP,基本原理就是在Simulink端做好發(fā)送給VAPS XT應用的UDP數(shù)據(jù)包的封裝,以及來自VAPS XT應用的UDP數(shù)據(jù)包的解包。
3.1 建立VAPS XT與Simulink之間的通信
通過中轉方式實現(xiàn)VAPS XT與Simulink的數(shù)據(jù)交互,需要單獨定義第三方應用,在這個第三方應用中,引用了nCOM庫文件,第三方應用可以與VAPS XT進行通信,而第三方應用程與Simulink之間的數(shù)據(jù)交換格式是可以預先定義兼容的。如果要取消第三方中轉程序,則必須讓Simulink打包發(fā)送到UDP的數(shù)據(jù)符合數(shù)據(jù)描述文件(.dd)的要求,能夠被nCOM識別,并且還要按照數(shù)據(jù)描述文件定義的格式,對nCOM發(fā)出的數(shù)據(jù)進行解析。最終用到了兩個數(shù)據(jù)緩沖區(qū),具體見圖3。
3.2 VAPS XT中的nCOM接口數(shù)據(jù)包解析
由于VAPS XT將根據(jù)數(shù)據(jù)描述文件中的定義打包將通過UDP傳輸?shù)臄?shù)據(jù),因此應以相同的方式打包Simulink UDP數(shù)據(jù)以建立通信,否則,VAPS XT和Simulink之間將無法識別對方發(fā)送的數(shù)據(jù)。
由于通過UDP連接從/到VASP XT的數(shù)據(jù)是以前綴和特定格式打包的,在研究VAPS-XT-UDP緩沖區(qū)數(shù)據(jù)樣本的基礎上,得出數(shù)據(jù)打包的原則如下。
如果VAPS XT通過UDP連接發(fā)送50個浮點類型的數(shù)據(jù),則發(fā)送到UDP緩沖區(qū)的最終包應為:
VAPS XT利用nCOM的UDP模式通信時,會根據(jù)數(shù)據(jù)描述文件(*.dd)的內(nèi)容,對發(fā)送至UDP端口的數(shù)據(jù)進行封裝,可以使用UDP端口測試工具,對VAPS XT的nCOM通信數(shù)據(jù)進行分析,以VAPS XT預定義的50組浮點數(shù)據(jù)格式為例,其封裝格式如圖4所示。
如圖5所示,UDP包由三部分組成:前綴1表示數(shù)據(jù)描述類型,總長度為32字節(jié);前綴2表示發(fā)送方/接收方對象,總長度為36字節(jié),如果內(nèi)容較短,則前綴的其余部分將填充零。數(shù)據(jù)字節(jié)將從第69個字節(jié)開始,數(shù)據(jù)部分的總長度取決于數(shù)據(jù)的類型和數(shù)量。例如,50個浮點類型的數(shù)據(jù)將覆蓋50×4字節(jié)。
如果Simulink要與VAPS XT通信,將考慮相同的數(shù)據(jù)打包協(xié)議,否則將不接收/發(fā)送數(shù)據(jù),或出現(xiàn)錯誤的數(shù)據(jù)。
在Simulink中,采用UDP發(fā)送/接收模塊建立UDP緩沖區(qū)到Simulink的連接。模塊應根據(jù)VAPS XT中的配置進行配置。
Simulink中的UDP接收模塊應使用VAPS XT中的UDP發(fā)送緩沖區(qū),而Simulink中的UDP發(fā)送模塊應在VAPS XT中應用UDP接收緩沖區(qū)。
在將數(shù)據(jù)發(fā)送到UDP緩沖區(qū)之前,應該將其與前綴部分打包在一起。數(shù)據(jù)描述文件名和緩沖區(qū)對象名應翻譯成ASCII碼,例如,“FLOAT50”應翻譯成“70108111971165348”。
3.3 在Simulink中搭建數(shù)據(jù)匹配通信模塊
在分析出VAPS XT的nCOM通信的數(shù)據(jù)打包規(guī)則后,只需要在Simulink中創(chuàng)建一個用于適配VAPS XT的接口模塊就可以實現(xiàn)數(shù)據(jù)交互。圖5為該文創(chuàng)建的用于從Simulink向VAPS XT發(fā)送數(shù)據(jù)的模塊在仿真工程中的連接。
圖6為在Simulink中實現(xiàn)的nCOM發(fā)送模塊的具體細節(jié),該模塊通過總線合并的方式,按照nCOM數(shù)據(jù)打包的要求,將nCOM數(shù)據(jù)包的字符所對應的16進制ASCII碼進行組裝,與模塊接收到的數(shù)據(jù)一同發(fā)送至Simulink自帶的UDP通信模塊。該模塊的設置與VAPS XT中的nCOM通信的UDP設置匹配即可,包括IP地址、端口、廣播方式等。
4 ?結語
該文介紹了VAPS XT人機界面設計工具與Simulink仿真工具進行數(shù)據(jù)通信的實現(xiàn)方式,在介紹nCOM端口的配置方法和通信類型的基礎上,給出了用中轉應用程序間VAPS XT與Simulink間接通信,以及通過在Simulink端創(chuàng)建適配模塊實現(xiàn)VAPS XT與Simulink直接通信的兩種方式,從實現(xiàn)原理和操作流程方面給出了示例,可作為飛行仿真環(huán)境搭建過程中,建立人機界面端與模型仿真端雙向通信的一般參考。
參考文獻
[1] Chaturvedi D K.Modeling and simulation of systems using MATLAB and Simulink[M].CRC press,2017.
[2] 董鷹.基于Simulink/FlightGear的直升機飛行仿真系統(tǒng)設計[C]//中國航空學會.2019年(第四屆)中國航空科學技術大會論文集.中國航空學會:中國航空學會,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] 秦正運,葛晨,程新滿.基于VAPS XT的座艙顯示設計與實現(xiàn)[J].電子技術與軟件工程,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.