本發(fā)明涉及飛行訓(xùn)練模擬領(lǐng)域,具體涉及一種飛行駕駛模擬器系統(tǒng)及模擬方法。
背景技術(shù):
隨著科學(xué)技術(shù)的不斷發(fā)展,越來越多的高精尖技術(shù)運(yùn)用于當(dāng)代的軍用飛機(jī)之中,這就需要飛行員必須具備嫻熟且精湛的駕駛技術(shù),才能出色的完成各項(xiàng)操作任務(wù)。眾所周知,在真實(shí)的飛機(jī)駕駛艙內(nèi)訓(xùn)練飛行員,需要耗費(fèi)大量的物資,而且所需的空域場地不能隨意安排,更為關(guān)鍵的是在真實(shí)飛機(jī)上難以模擬一些特殊的突發(fā)狀況,基于這不利因素,采用地面模擬器來訓(xùn)練飛行員成為一種經(jīng)濟(jì)有效且安全的方式。
目前大多數(shù)傳統(tǒng)飛行模擬軟件的仿真度都比較低,功能模塊不夠完整,如今飛行駕駛艙內(nèi)的功能模塊十分繁雜,模塊中的邏輯比較復(fù)雜,同時(shí)模塊之間又相互影響,具有較強(qiáng)的耦合性,傳統(tǒng)的飛行器模擬器軟件已經(jīng)不能完成飛行訓(xùn)練日益增長的需求。同時(shí)傳統(tǒng)的飛行模擬器面向?qū)ο筮^于泛化,而目前飛行器種類多樣,有不少飛行器駕駛艙具有特殊的功能模塊,比如夜間燈等,如何針對特殊的飛行器設(shè)計(jì)特殊的飛行駕駛軟件,這對飛行模擬軟件的擴(kuò)展性或者說可復(fù)用度有著較高的要求。飛機(jī)模擬的仿真度要求日益增高,為了增加飛行模擬的真實(shí)感,需采用半物理的方法,即添加實(shí)物的駕駛桿和油門桿,傳統(tǒng)的軟件方式已經(jīng)不能夠滿足要求,且由于異地操作的需要,如電傳設(shè)備軟件要外接到飛機(jī)上,同時(shí)該軟件要把采集到的數(shù)據(jù)返給數(shù)公里外的飛行模擬軟件上,這樣必然對系統(tǒng)的通信功能有著很高的要求。
現(xiàn)有的飛行訓(xùn)練模擬器一般是用于部隊(duì)訓(xùn)練,訓(xùn)練成果的成績考核是非常重要的一項(xiàng)。傳統(tǒng)的方式一般是教練員觀看學(xué)員訓(xùn)練并給出成績,費(fèi)時(shí)費(fèi)力的同時(shí)可能還會(huì)出現(xiàn)誤差,不能準(zhǔn)確評(píng)價(jià)成績。所以當(dāng)下需要對飛行模擬軟件添加一種成績評(píng)價(jià)的模塊,同時(shí)該模塊還能對操作錯(cuò)誤的地方進(jìn)行提示,實(shí)現(xiàn)完全的自動(dòng)化成績考核和校正。
傳統(tǒng)的飛行模擬軟件在設(shè)計(jì)上功能單一,每個(gè)功能模塊相互獨(dú)立、沒有聯(lián)系,不能完成比較復(fù)雜的操作,現(xiàn)在的飛行模擬復(fù)雜度非常高,操作流程多,有時(shí)完成一個(gè)飛行操作需要幾十步操作,需設(shè)計(jì)多個(gè)駕駛艙單元模塊,這就要求駕駛艙各個(gè)單元模塊必須能夠相互通信,同時(shí)由于耦合度提高,必須設(shè)計(jì)一個(gè)可靠的主程序保證流程準(zhǔn)確運(yùn)行,同時(shí)還需多線程技術(shù)保證并發(fā)地完成多個(gè)功能模塊的通信,使流程能夠順利地運(yùn)行,提高程序的健壯性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于針對上述現(xiàn)有技術(shù)中的問題,提供一種飛行駕駛模擬器系統(tǒng)及模擬方法,該系統(tǒng)能夠提高復(fù)雜操作的協(xié)同性,降低操作難度,功能完善,仿真度高,適于訓(xùn)練。
為了實(shí)現(xiàn)上述目的,本發(fā)明飛行駕駛模擬器系統(tǒng)由虛擬座艙子系統(tǒng)、檢測訓(xùn)練子系統(tǒng)以及電傳控制子系統(tǒng)組成;虛擬座艙子系統(tǒng)包括圍繞在駕駛座椅四周的左艙操縱控制面板、中艙儀表面板以及右艙操縱控制面板;左艙操縱控制面板上搭載電傳控制子系統(tǒng),電傳控制子系統(tǒng)包括操縱桿以及多種虛擬傳感器,右艙操縱控制面板上搭載檢測訓(xùn)練子系統(tǒng);中艙儀表面板向左艙操縱控制面板和右艙操縱控制面板發(fā)送指令并進(jìn)行顯示,檢測訓(xùn)練子系統(tǒng)與電傳控制子系統(tǒng)之間實(shí)現(xiàn)參數(shù)的調(diào)整與檢測以及故障的排查,且故障信息通過中艙儀表面板顯示。
左艙操縱控制面板、中艙儀表面板、右艙操縱控制面板分別連接主機(jī),主機(jī)間通過局域網(wǎng)連接。電傳控制子系統(tǒng)的虛擬傳感器包括轉(zhuǎn)臺(tái)、雙軸傳感器、動(dòng)靜壓給定器及電傳計(jì)算機(jī)。
本發(fā)明飛行駕駛模擬器模擬方法,包括以下步驟:
a.以真實(shí)座艙為模板完成虛擬座艙的圖形建模;
b.設(shè)計(jì)圖形界面,截取出所需的圖片紋理,建立控制面板模型;
c.為各個(gè)控件設(shè)置屬性,并編寫行為代碼,實(shí)現(xiàn)所有的基本功能;
d.座艙中每個(gè)面板的界面設(shè)計(jì)和功能實(shí)現(xiàn)后,將其分別生成為獨(dú)立的動(dòng)態(tài)鏈接庫文件;
e.利用每個(gè)面板的功能信息和位置信息為各自的動(dòng)態(tài)鏈接庫文件命名并加載整合;
f.添加函數(shù)實(shí)現(xiàn)動(dòng)態(tài)鏈接庫文件之間控制參數(shù)的傳遞;
g.為模擬器系統(tǒng)各個(gè)元件之間的控制與響應(yīng)編寫邏輯關(guān)系代碼;
h.整體編譯并進(jìn)行保存及執(zhí)行。
所述的步驟a通過3dmax軟件按照真實(shí)座艙圖片繪制出虛擬座艙的三維圖形;步驟b通過picpick軟件截取出所需的圖片紋理,并在glstudio軟件中建立控制面板模型。
步驟d中對生成為獨(dú)立的動(dòng)態(tài)鏈接庫文件采用組件調(diào)用的形式嵌入到主面板上完成仿真。
所述步驟e中將動(dòng)態(tài)鏈接庫文件插入到glstudio編輯器中完成加載,生成代碼后編輯運(yùn)行使各個(gè)功能正常執(zhí)行。
所述的步驟f中通過glstudio軟件中的resource()函數(shù)對動(dòng)態(tài)鏈接庫文件進(jìn)行讀寫操作。
與現(xiàn)有技術(shù)相比,本發(fā)明飛行駕駛模擬器系統(tǒng)具有如下的有益效果:為了保證足夠的環(huán)境仿真度,采用半物理的方式,加載了真實(shí)的硬件系統(tǒng),采用操縱桿以及觸摸屏,操縱桿包括駕駛桿和油門桿,駕駛桿1比1仿真a-10c飛機(jī)搖桿外形,具有真實(shí)的桿力以及觸發(fā)按鈕,能夠?qū)崿F(xiàn)前后推拉以及左右傾斜。該系統(tǒng)由虛擬座艙子系統(tǒng)、檢測訓(xùn)練子系統(tǒng)以及電傳控制子系統(tǒng)組成,三個(gè)部分之間協(xié)同操作,提高了內(nèi)容完成度,不僅僅包含飛機(jī)的操作部分,還包含飛機(jī)的功能檢測部分。虛擬座艙子系統(tǒng)能夠?qū)崿F(xiàn)人機(jī)交互功能,操縱控制面板上的控件或模塊通過后臺(tái)程序會(huì)返回相應(yīng)的數(shù)值,在儀表面板上顯示相應(yīng)的變化,并通過網(wǎng)絡(luò)通信將虛擬座艙產(chǎn)生的仿真數(shù)據(jù)在仿真機(jī)之間傳輸,實(shí)現(xiàn)了仿真機(jī)之間的實(shí)時(shí)通訊,通過接收網(wǎng)絡(luò)輸入指令,判斷飛行仿真系統(tǒng)的工作狀態(tài),從而控制仿真界面的顯示。電傳控制子系統(tǒng)提供了電位計(jì)來反應(yīng)飛機(jī)系統(tǒng)設(shè)備的運(yùn)轉(zhuǎn)情況,如果發(fā)生故障,會(huì)產(chǎn)生相應(yīng)的報(bào)警信號(hào),從而產(chǎn)生相應(yīng)的故障處理動(dòng)作,電位計(jì)信息返回給虛擬座艙子系統(tǒng)和檢測訓(xùn)練子系統(tǒng),使得虛擬座艙的儀表和告警燈得到正確的顯示,然后自檢測系統(tǒng)也能夠知道各部件的狀態(tài)信息。檢測訓(xùn)練子系統(tǒng)設(shè)計(jì)了虛擬檢測訓(xùn)練面板,訓(xùn)練過程中設(shè)有相應(yīng)的操作卡,飛行員根據(jù)操作卡中的內(nèi)容完成相應(yīng)步驟,檢測訓(xùn)練面板同時(shí)能夠測量電傳控制子系統(tǒng)以及虛擬座艙子系統(tǒng)的反饋信號(hào),顯示其他系統(tǒng)的工作狀態(tài),實(shí)現(xiàn)實(shí)體檢查儀的所有功能。
進(jìn)一步的,本發(fā)明左艙操縱控制面板、中艙儀表面板以及右艙操縱控制面板分別連接不同的主機(jī),主機(jī)之間通過局域網(wǎng)連接,采用udp/ip方式通信能夠?qū)崿F(xiàn)模塊之間的異地分布,提高系統(tǒng)針對特殊環(huán)境的可用性,網(wǎng)絡(luò)通信的實(shí)時(shí)性、可靠性和可擴(kuò)展性較好。
與現(xiàn)有技術(shù)相比,本發(fā)明飛行駕駛模擬器的模擬方法為各個(gè)控件設(shè)置屬性,并分別編寫行為代碼,實(shí)現(xiàn)所有的基本功能,形成各個(gè)功能的模塊類,這樣就能夠保證系統(tǒng)功能的可擴(kuò)展性和代碼的可復(fù)用性。座艙中每個(gè)面板的界面設(shè)計(jì)和功能實(shí)現(xiàn)后,將其分別生成為獨(dú)立的動(dòng)態(tài)鏈接庫文件在模擬器后期的聯(lián)合調(diào)試和完善過程中,如果需要對某個(gè)面板的功能進(jìn)行修改和補(bǔ)充,只需要修改該虛擬面板的程序代碼即可,不會(huì)干涉到其他面板功能的正常進(jìn)行。本發(fā)明方法能夠提高復(fù)雜操作的協(xié)同性,降低操作難度,功能完善,仿真度高,適于訓(xùn)練。
進(jìn)一步的,本發(fā)明模擬方法采用3dmax軟件進(jìn)行圖片素材的繪制,界面設(shè)計(jì)人性化,擁有可堆疊的建模步驟,使得模型制作更加彈性,同時(shí)具有渲染的功能,從而使駕駛艙模擬器在視覺上更加真實(shí),方便飛行學(xué)員進(jìn)行學(xué)習(xí)。通過glstudio軟件建立控制面板模型,將虛擬座艙子系統(tǒng)的每個(gè)部分模塊化,添加函數(shù)來設(shè)定模塊的功能屬性,便于維護(hù)和故障排查。
附圖說明
圖1本發(fā)明模擬器系統(tǒng)的整體結(jié)構(gòu)模塊圖;
圖2本發(fā)明模擬器系統(tǒng)的數(shù)據(jù)傳輸框圖;
圖3飛行駕駛模擬器虛擬座艙示意圖;
圖4駕駛桿數(shù)據(jù)獲取流程圖;
圖5udp通信流程圖;
圖6地平儀顯示界面示意圖;
圖7氣壓高度表顯示界面示意圖;
圖8多功能顯示屏顯示界面示意圖;
圖9mfd中hvr界面示意圖;
圖10mfd中tst界面示意圖;
附圖中:1-虛擬座艙子系統(tǒng);2-檢測訓(xùn)練子系統(tǒng);3-電傳控制子系統(tǒng);4-左艙操縱控制面板;5-中艙儀表面板;6-右艙操縱控制面板;7-檢測訓(xùn)練虛擬面板。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)說明。
參見圖1-3,本發(fā)明飛行駕駛模擬器系統(tǒng)由虛擬座艙子系統(tǒng)1、檢測訓(xùn)練子系統(tǒng)2以及電傳控制子系統(tǒng)3組成。虛擬座艙子系統(tǒng)1包括圍繞在駕駛座椅四周的左艙操縱控制面板4、中艙儀表面板5以及右艙操縱控制面板6;左艙操縱控制面板4上搭載電傳控制子系統(tǒng)3,電傳控制子系統(tǒng)3包括操縱桿以及多種虛擬傳感器,虛擬傳感器包括轉(zhuǎn)臺(tái)、雙軸傳感器、動(dòng)靜壓給定器以及電傳計(jì)算機(jī)等。右艙操縱控制面板6上搭載檢測訓(xùn)練子系統(tǒng)2,中艙儀表面板5向左艙操縱控制面板4和右艙操縱控制面板6發(fā)送指令并進(jìn)行顯示。左艙操縱控制面板4、中艙儀表面板5以及右艙操縱控制面板6分別連接主機(jī),主機(jī)之間通過局域網(wǎng)連接。
本發(fā)明觸摸屏能讓飛行學(xué)員通過觸摸的方式和系統(tǒng)進(jìn)行交互,代替了鼠標(biāo),直接通過手指按壓界面上的虛擬開關(guān)和旋鈕,反饋更加真實(shí)。為獲取飛機(jī)操作桿信息,具體操作過程為:
參見圖4,directinput提供api函數(shù),為獲取飛機(jī)操縱桿的數(shù)據(jù)信息,使用initdirectinput函數(shù)完成駕駛桿信息初始化工作,使用createdevice函數(shù)創(chuàng)建設(shè)備,設(shè)計(jì)數(shù)據(jù)格式,設(shè)置并獲取設(shè)備屬性,調(diào)用acquire函數(shù)獲得設(shè)備,updateinputstate函數(shù)獲取數(shù)據(jù)信息,freedirectinput函數(shù)放在程序最后,用來釋放所有directinput對象占用的系統(tǒng)資源。
中艙仿真主機(jī)接收到駕駛桿信息,通過glstudio下角度偏轉(zhuǎn)函數(shù)來實(shí)現(xiàn)飛機(jī)模型中方向舵控制、平尾俯仰狀態(tài)控制,調(diào)節(jié)左右前后緣襟翼的傾斜角度(glstudio平臺(tái)下有控制圖片旋轉(zhuǎn)的函數(shù))。檢測模擬裝置接收到駕駛桿信息后進(jìn)行相關(guān)操作卡的判斷和執(zhí)行。
使用glstudio設(shè)計(jì)圖形界面,對各個(gè)控件編寫行為代碼,實(shí)現(xiàn)其基本功能,實(shí)現(xiàn)其基本功能,行為代碼中需要每個(gè)功能模塊或者控件抽象出來,形成各個(gè)功能模塊類,這樣就能夠保證系統(tǒng)功能的可擴(kuò)展性和代碼的可復(fù)用性。明確每一塊虛擬座艙的按鈕、旋鈕等輸入部件和模塊內(nèi)外部的輸出部件之間的控制邏輯,比如定義座艙左側(cè)第三個(gè)面板中某個(gè)開關(guān)的值為l3_swith_1,這個(gè)是個(gè)bool型變量,它的值為true,被自己座艙內(nèi)的告警燈調(diào)用,告警燈檢測到它的值為true,所以執(zhí)行燈閃亮的程序邏輯,同時(shí)它把自己的狀態(tài)輸出到主控程序中去,其他模塊比如說中艙mfd顯示模塊知道變量值為true,就顯示出開關(guān)狀態(tài)位為打開狀態(tài)。
設(shè)計(jì)控制面板的詳細(xì)過程如下:
1、參照真實(shí)座艙圖片,確定虛擬座艙的各面板及各模塊的內(nèi)容、相對位置和比例大小,完成虛擬座艙圖形建模。利用3dmax軟件按照真實(shí)座艙中控制面板中的圖片,繪制三維圖形。
2、設(shè)計(jì)圖形界面,利用picpick等截圖軟件,截取出所需要的圖片紋理。在glstudio中用制作好的紋理素材建立控制面板模型。
3、為各個(gè)控件設(shè)置屬性,并編寫行為代碼,實(shí)現(xiàn)其基本功能。
4、座艙中的每一塊面板的界面設(shè)計(jì)和功能實(shí)現(xiàn)完成后,將其生成為一個(gè)個(gè)獨(dú)立的動(dòng)態(tài)鏈接庫文件(dll)。因?yàn)槊繅K面板上的元件數(shù)量都很多,在glstudio中依次創(chuàng)建后會(huì)造成層次不清,不利于維護(hù)。因此采用dll設(shè)計(jì)方法,將虛擬座艙的各個(gè)面板模塊化、獨(dú)立化。先逐個(gè)設(shè)計(jì)面板模型,在glstudio定義與外界數(shù)據(jù)交換的接口函數(shù),編寫行為代碼,并將其編譯成dll,再用組件調(diào)用的形式,將其嵌入到主面板上完成仿真。在模擬器后期聯(lián)合調(diào)試和完善的過程中,如需對某個(gè)面板的功能進(jìn)行修改和補(bǔ)充,只需要修改該虛擬面板的程序代碼,編譯生成新的dll,用新的dll替換原有的dll即可,不會(huì)干涉其他面板功能的正常進(jìn)行。
4、為了方便起見,利用每個(gè)面板的功能信息和位置信息為它們的dll命名,如ruone代表右艙上側(cè)的第一塊面板,ldtwo代表座艙下冊的第二塊面板,等等。將完成設(shè)計(jì)的幾個(gè)dll文件全部加載到最后的整體文件中。具體的dll加載方式如下:
glstudio中對dll的加載方式非常簡便,不需要了解底層的加載方式,即可對dll直接進(jìn)行操作。在工具欄點(diǎn)擊“(insertacomponent)”按鍵,選中需要加載的dll,即可將該虛擬裝置插入到glstudio編輯器中。調(diào)整各個(gè)面板的大小,把它們放到合適的位置。點(diǎn)擊生成代碼,編輯運(yùn)行該文件。在生成的exe文件中,所有面板的功能都能夠執(zhí)行。在該文件中,每個(gè)面板都是一個(gè)獨(dú)立運(yùn)行的整體,無論哪一部分出現(xiàn)了問題,都能夠單獨(dú)對它進(jìn)行修改完善,而不會(huì)影響其他部分的正常運(yùn)行。
6、添加函數(shù)來實(shí)現(xiàn)各個(gè)dll之間的參數(shù)傳遞,因?yàn)槊姘迳系脑枰薪换ロ憫?yīng),比如ruone.dll中的開關(guān)會(huì)控制ruthree.dll上等的亮暗等。因此加載各個(gè)面板的dll后,需要添加函數(shù)來實(shí)現(xiàn)各個(gè)dll之間的參數(shù)傳遞。接下來的工作就是在(中控)calculate()中對虛擬面板的接口進(jìn)行讀寫操作,即傳遞控制參數(shù)。
a.在glstudio中,resource()函數(shù)可以讀寫dll的屬性,這也是在創(chuàng)建各個(gè)dll的時(shí)候?qū)⑺休斎胼敵鼋涌诙x為屬性的原因;
b.ruone->resource(“hangdianxitong”)>>g1;//將右艙上側(cè)第一塊面板上的“航電系統(tǒng)開關(guān)”的值讀出來,賦值給變量g1;
c.rutwo->resource(“canshuxianshi”)<<a1;//將變量a1的值傳遞給右艙上側(cè)第二塊面板上的“參數(shù)顯示”元件。
7、為元件之間的控制與響應(yīng)編寫邏輯關(guān)系代碼。如航電系統(tǒng)開關(guān)g1的值為1時(shí),紅燈亮,利用mode屬性中紅燈圖片和白燈圖片的顯示與隱藏來實(shí)現(xiàn)該功能。
8、保存設(shè)計(jì)并生成代碼,在vc++窗口中編譯并執(zhí)行工程。
以下是一些具體案例的實(shí)現(xiàn),包括地平儀、氣壓高度表,以及多功能顯示器的功能實(shí)現(xiàn)。
地平儀是用來測量和顯示飛機(jī)俯仰和傾斜姿態(tài)的陀螺儀表,如圖6所示。根據(jù)接收到的數(shù)據(jù),利用dynamicrotate(value,z_axis)函數(shù)實(shí)現(xiàn)地平儀轉(zhuǎn)動(dòng)。
氣壓高度表實(shí)際上是一種氣壓計(jì),它通過測量航空器所在高度的大氣壓力,間接測出飛行高度,如圖7所示。在該圖中指針以及方框中的示數(shù)都是動(dòng)態(tài)的,不斷地在發(fā)生變化。
旋轉(zhuǎn)左側(cè)的按鈕,利用value(28.6f+(selfvalue()/100.0f)*2.4f)函數(shù)使氣壓示數(shù)發(fā)生變化,高度值的獲取利用value((rampfloat(time*0.07,0.0f,12000.0f))來實(shí)現(xiàn)。
多功能顯示屏主要由一些周邊鍵以及顯示屏組成,如圖8所示。通過按壓不同的周邊鍵來查看不同的子畫面,子畫面主要是顯示飛機(jī)燈光告警系統(tǒng)、座艙照明系統(tǒng)、飛機(jī)參數(shù)以及電傳子系統(tǒng)故障等信息。多功能顯示器需要顯示十幾個(gè)頁面,因此在mfd界面中設(shè)置屬性std::stringmode(“”)。利用visibility(false)函數(shù)將各個(gè)頁面初始化隱藏,按壓相應(yīng)的周邊鍵,只能顯示對應(yīng)的頁面,利用visibility(true)函數(shù)將該畫面顯示出來。設(shè)置方法displaylocaltime(void),利用localtime(&localtime)獲取時(shí)間并將其顯示在界面上。
hrv界面通過代碼location(targetfield->location()+value)實(shí)現(xiàn)crosshair位置的改變。
tst界面設(shè)置方法testpassed(inttestnumber,boolpassed),通過switch(testnumber)語句來實(shí)現(xiàn)文本框的顯示。利用glscolorgreen(0,255,0,255),glscolorred(255,0,0,255)來實(shí)現(xiàn)綠色(pass)和紅色(fail)的變化。綜合告警燈盒的實(shí)現(xiàn)原理與多功能顯示器類似,也是利用圖片的隱藏和顯示來實(shí)現(xiàn)燈顏色的變化,不再贅述。
虛擬座艙整體的通信實(shí)現(xiàn)采用udp/ip的方式(不同主機(jī)之間),可以實(shí)現(xiàn)模塊之間的異地分布,提高系統(tǒng)針對特殊環(huán)境的可用性位于三臺(tái)仿真計(jì)算機(jī)上的左艙、中艙、右艙,右艙需要實(shí)現(xiàn)交聯(lián)功能,使三部分座艙能夠?qū)崿F(xiàn)數(shù)據(jù)的實(shí)時(shí)傳送,并且中艙部分需要對接收到的左艙和右艙的數(shù)據(jù)進(jìn)行判斷,然后執(zhí)行一定的顯示,因此實(shí)現(xiàn)三者之間的通信是最主要的前提。網(wǎng)絡(luò)通信的選擇需要考慮實(shí)時(shí)性、可靠和擴(kuò)展。實(shí)時(shí)性要求數(shù)據(jù)能夠快速的進(jìn)行傳輸。數(shù)據(jù)可靠性是由軟件和硬件來保證的,軟件上可以通過選擇網(wǎng)絡(luò)通訊的多種協(xié)議來保證數(shù)據(jù)傳輸?shù)目煽啃?。硬件上,局域網(wǎng)以提供更循環(huán)冗余校驗(yàn)。在可擴(kuò)展性方面,網(wǎng)絡(luò)通訊方式比采用串口更容易進(jìn)行系統(tǒng)的擴(kuò)展。本設(shè)計(jì)基于局域網(wǎng)進(jìn)行數(shù)據(jù)通訊來保證系統(tǒng)的實(shí)時(shí)性和可靠。因?yàn)榭紤]到要不斷的傳遞數(shù)據(jù),而且中艙的界面也需要實(shí)時(shí)的刷新,為了保證數(shù)據(jù)能現(xiàn)快速收發(fā),虛擬座艙的三臺(tái)仿真機(jī)之間利用udp/ip的協(xié)議交換數(shù)據(jù)。udp具有tcp所不具備的速度優(yōu)勢,極大地降低了執(zhí)行時(shí)間,使速度得到了保證。應(yīng)用程序體系結(jié)構(gòu)采用客戶機(jī)、服務(wù)器體系結(jié)構(gòu),即代碼實(shí)現(xiàn)采用server/client的通信形式,其中中艙仿真機(jī)作為server端,左右艙主仿真計(jì)算機(jī)作為client端。建立通信連接后,進(jìn)行雙向的數(shù)據(jù)流通信,來實(shí)現(xiàn)三者之間的數(shù)據(jù)交換。套接字被稱為程序和網(wǎng)絡(luò)之間的api(applicationprogramminginterface,應(yīng)用程序編輯接口)。使用套接字(socket)編寫的通訊程序,可以較好的實(shí)現(xiàn)兩個(gè)網(wǎng)絡(luò)進(jìn)程之間的數(shù)據(jù)交互。在本文的網(wǎng)絡(luò)通訊中,使用的主要是windows提供的套接字接口。winsock是windows下網(wǎng)絡(luò)編程的標(biāo)準(zhǔn)接口,是真正的協(xié)議無關(guān)的接口,借助于winsock可以較好地實(shí)現(xiàn)網(wǎng)內(nèi)通信。現(xiàn)在開發(fā)網(wǎng)絡(luò)應(yīng)用程序都使用winsock2版本,需要將程序中包含頭文件winsock2.h,它包含了絕大部分socket函數(shù)和相關(guān)結(jié)構(gòu)類型的聲明和定義,同時(shí)要添加ws2_32.lib庫的鏈接。使用winsock編程步驟是比較固定的,如圖5所示。
綜上所述,本發(fā)明場景效果逼真,功能模塊相互之間不沖突,可以各自維護(hù),不互相干擾,代碼可復(fù)用性好,實(shí)現(xiàn)了模塊之間的通信,能夠完成涉及多控件的復(fù)雜流程動(dòng)作。