LabWindows/CVI虛擬儀器編程語(yǔ)言的飛行模擬器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
為了滿足基于教學(xué)工作過(guò)程需要,凸現(xiàn)航空特色,創(chuàng)設(shè)集“教、學(xué)、做”一體化的教學(xué)情境環(huán)境,開(kāi)發(fā)了運(yùn)5簡(jiǎn)易飛行模擬器設(shè)備,該項(xiàng)目以真實(shí)的運(yùn)5飛機(jī)為載體,以LabWindows/CVI為開(kāi)發(fā)環(huán)境,主要面向?qū)W生演示飛機(jī)的飛行的姿態(tài)(縱向、升降、傾向、俯仰、橫滾和航向)以及飛行過(guò)程中各種儀器儀表的變化,使學(xué)生對(duì)飛機(jī)的飛行原理以及駕駛技術(shù)具有一定了解,使其在模擬器上完成簡(jiǎn)單的飛行操作。
1 系統(tǒng)結(jié)構(gòu)
由于該模擬器僅用于教學(xué),參觀演示,僅涉及了飛機(jī)飛行過(guò)程一些飛機(jī)飛行過(guò)程中的必須設(shè)備和必須功能,因此,對(duì)模擬器簡(jiǎn)易化處理后,它主要包括儀表控制系統(tǒng)、操縱負(fù)荷系統(tǒng)和視景環(huán)境模擬系統(tǒng),該飛行器控制系統(tǒng)用框圖如圖1所示。
1.1 操縱模擬控制系統(tǒng)
操縱模擬控制系統(tǒng)義稱操縱負(fù)荷系統(tǒng),是整個(gè)項(xiàng)目的核心,主要為飛行員提供逼真的座艙操縱感覺(jué)。座艙操縱感覺(jué)是飛行員移動(dòng)操縱感覺(jué)時(shí)的負(fù)荷感覺(jué),它受到操縱面偏轉(zhuǎn)的影響,并由此產(chǎn)生操縱輸入引起飛機(jī)的響應(yīng)。操縱負(fù)荷系統(tǒng)分為操縱負(fù)荷裝置和飛機(jī)操縱系統(tǒng)模型兩部分。其中。操縱負(fù)荷裝置用于產(chǎn)生實(shí)際的模擬器座艙操縱力;飛行操縱系統(tǒng)模型用于仿真給定條件下特定飛機(jī)操縱系統(tǒng)的各種力的形成。通過(guò)這兩部分的集成,仿真實(shí)現(xiàn)所需的座艙操縱力,從而產(chǎn)生操縱力的感覺(jué),這種感覺(jué)與飛行員在真實(shí)飛機(jī)中的體驗(yàn)感覺(jué)相似。
運(yùn)5模擬器的操縱負(fù)荷系統(tǒng)采用電動(dòng)系統(tǒng)。該系統(tǒng)包括兩個(gè)主要的子系統(tǒng):操縱負(fù)荷計(jì)算機(jī)子系統(tǒng)和操縱負(fù)荷裝置子系統(tǒng)。前者用于計(jì)算飛機(jī)飛行操縱系統(tǒng)以及作動(dòng)器控制回路的數(shù)學(xué)模型,控制器的輸出提供驅(qū)動(dòng)作動(dòng)器通道的控制信號(hào);而后者用于將控制信號(hào)轉(zhuǎn)換為電動(dòng)作動(dòng)器的運(yùn)動(dòng),驅(qū)動(dòng)座艙操縱裝置。
1.2 模擬儀表控制系統(tǒng)
運(yùn)5模擬器儀表控制系統(tǒng)是運(yùn)5模擬器的重要組成部分。該系統(tǒng)主要實(shí)現(xiàn)運(yùn)5飛機(jī)在模擬飛行狀態(tài)時(shí)。各個(gè)儀表在操縱系統(tǒng)作用下的指示,讓操作者有身臨其境的感覺(jué)。運(yùn)5簡(jiǎn)易模擬器采用運(yùn)5飛機(jī)上的真實(shí)儀表,座艙內(nèi)基本保持運(yùn)5飛機(jī)結(jié)構(gòu)不變。整個(gè)儀表控制系統(tǒng)的驅(qū)動(dòng)信號(hào)由模擬信號(hào)控制系統(tǒng)和氣壓信號(hào)控制系統(tǒng)構(gòu)成,它結(jié)合視景及音響實(shí)時(shí)顯示飛機(jī)的飛行姿態(tài)以及所處的高度等。
1.3 3D環(huán)幕視景仿真系統(tǒng)
3D環(huán)幕視景系統(tǒng)主要由兩部分組成:一是舵通道圖形處理系統(tǒng),通過(guò)該系統(tǒng)處理高分辨率的視頻文件或圖片,在圖形處理系統(tǒng)內(nèi)部實(shí)現(xiàn)源文件的多通道分割,舵通道圖像重疊,融合帶的亮度調(diào)節(jié)、像素級(jí)的邊緣集合校正、羽化處理。最后實(shí)現(xiàn)多通道無(wú)縫完整圖像輸出;二是3D多通道輸出系統(tǒng),接收到經(jīng)圖形處理系統(tǒng)處理過(guò)的源文件后,經(jīng)過(guò)本身處理器件的2D、3D效果的多通道視頻或圖片。
整個(gè)系統(tǒng)從性能與方便性著手。在保證了完美融合效果的基礎(chǔ)上簡(jiǎn)化了系統(tǒng)的控制過(guò)程,使整個(gè)系統(tǒng)更實(shí)用、更人性化。
1.4 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)
整個(gè)模擬器以工控機(jī)為核心,運(yùn)行信號(hào)均源于操縱負(fù)荷系統(tǒng),操縱負(fù)荷系統(tǒng)分為操縱負(fù)荷裝置和飛機(jī)操縱系統(tǒng),如圖2所示。其中操縱負(fù)荷裝置可以產(chǎn)生實(shí)際的模擬器座艙操縱力,使升降舵、副翼和方向舵發(fā)生相對(duì)的運(yùn)動(dòng),通過(guò)傳感器對(duì)位移,角度進(jìn)行測(cè)量。工控機(jī)對(duì)所收到的信號(hào)進(jìn)行分析處理,通過(guò)以太網(wǎng)傳給視景仿真計(jì)算機(jī),使視景顯示器顯示相應(yīng)的視景畫面:工控機(jī)還將分析處理過(guò)的信號(hào)通過(guò)適配箱送往座艙儀表,驅(qū)動(dòng)儀表顯示相應(yīng)的數(shù)值。
2 基于LabWindows/CVI的模擬器軟件實(shí)現(xiàn)
2.1 LabWindows/CVl開(kāi)發(fā)環(huán)境的選擇
LabWindows/CVI是一個(gè)基于ANSI C的交互式可視化軟件開(kāi)發(fā)環(huán)境,是美國(guó)NI公司推出的面向儀器與測(cè)控過(guò)程的C/C++交互式開(kāi)發(fā)平臺(tái)。它將功能強(qiáng)大、應(yīng)用廣泛的C語(yǔ)言與測(cè)控專業(yè)工具有機(jī)地結(jié)合起來(lái),利用其集成化開(kāi)發(fā)環(huán)境、交互式編程方法、豐富的函數(shù)面板、強(qiáng)大的接口功能、豐富的庫(kù)函數(shù)以及功能齊全的軟件工具包,大大增強(qiáng)了C語(yǔ)言的功能。它將源代碼編輯、強(qiáng)有力的儀器庫(kù)、32位ANSI C編譯、鏈接、調(diào)試以及標(biāo)準(zhǔn)ANSI C庫(kù)集成在一個(gè)交互式開(kāi)發(fā)環(huán)境中,極大地簡(jiǎn)化了圖形用戶接口的設(shè)計(jì),同時(shí)為使用者提供了靈活的、內(nèi)置式數(shù)據(jù)采集分析和顯示功能。具有多種與硬件通信的方式,例如RS232,VXI等。同時(shí),也可以建立TCP/IP通信機(jī)制。相對(duì)于VC、VB等其他開(kāi)發(fā)工具,LabWi-ndows/CVI具有更強(qiáng)的硬件控制和數(shù)據(jù)分析處理能力,特別適用于各種測(cè)試、控制、故障分析及信息處理軟件的開(kāi)發(fā),尤其是大型復(fù)雜的測(cè)控軟件,可獲得優(yōu)良的測(cè)控性能。在LabWindows/CVI中,還加入了數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)開(kāi)發(fā)的軟件包,使其能夠滿足超大容量數(shù)據(jù)的存儲(chǔ)和大型分布式遠(yuǎn)程網(wǎng)絡(luò)測(cè)控系統(tǒng)的開(kāi)發(fā)。
鑒于以上LabWindows/CVI的優(yōu)點(diǎn),考慮到整個(gè)模擬器運(yùn)行的信號(hào)都來(lái)源于操縱負(fù)荷系統(tǒng),這便構(gòu)成了以操縱負(fù)荷系統(tǒng)為主的測(cè)控系統(tǒng)。故本項(xiàng)目以LabWindows/CVI虛擬儀器編程語(yǔ)言作為軟件開(kāi)發(fā)平臺(tái)。
2.2 系統(tǒng)軟件設(shè)計(jì)實(shí)現(xiàn)
2.2.1 軟件結(jié)構(gòu)模塊設(shè)計(jì)
軟件采用模塊化、結(jié)構(gòu)化的設(shè)計(jì)思想,提高了編程效率,增強(qiáng)了軟件的可維護(hù)性和可擴(kuò)展性。根據(jù)需要,系統(tǒng)軟件模塊設(shè)計(jì)了數(shù)據(jù)采集、執(zhí)行控制與輔助三大模塊,具體有以下9個(gè)部分。其整體結(jié)構(gòu)如圖3所示。
1)數(shù)據(jù)采集模塊 負(fù)責(zé)各種標(biāo)準(zhǔn)信號(hào)的采集,按通道傳送給顯示、存儲(chǔ)模塊,并對(duì)輸入的波形信號(hào)進(jìn)行同步,其中還包括硬件的初始化和采集參數(shù)的設(shè)置。
2)數(shù)據(jù)存儲(chǔ)模塊 按照規(guī)定的格式將采集到的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。
3)數(shù)據(jù)顯示模塊 根據(jù)不同的需要實(shí)時(shí)顯示模擬器航姿、仰角等參數(shù)以及波形、軌跡和各種譜圖。
4)數(shù)據(jù)分析模塊 將采集回來(lái)的數(shù)據(jù)進(jìn)行分析,和預(yù)設(shè)的數(shù)據(jù)相比較,進(jìn)而算出調(diào)節(jié)量。采用的數(shù)據(jù)分析方法有:時(shí)域分析、頻域分析、相關(guān)分析、回歸分析、數(shù)理統(tǒng)計(jì)、趨勢(shì)分析和高級(jí)分析等。
5)儀表驅(qū)動(dòng)模塊 將控制數(shù)據(jù)發(fā)送至通道,產(chǎn)生各種調(diào)節(jié)儀器的控制命令。
6)文件管理模塊 提供數(shù)據(jù)輸出、報(bào)表打印以及歷史查詢。
7)數(shù)據(jù)庫(kù)管理模塊 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中各類數(shù)據(jù)進(jìn)行有效的管理,同時(shí)存放檢測(cè)數(shù)據(jù)和結(jié)論,根據(jù)檢測(cè)內(nèi)容做出記錄表單。
8)報(bào)警模塊 系統(tǒng)出現(xiàn)故障時(shí)報(bào)警,顯示故障類型并啟動(dòng)保護(hù)措施。
9)TCP通信模塊 完成3D視景系統(tǒng)之間的通信。
運(yùn)5操縱負(fù)荷系統(tǒng)仿真系統(tǒng)采用該軟件進(jìn)行設(shè)計(jì),其流程如圖4所示。
主程序完成初始化后,調(diào)用權(quán)限操作、采集、視景通信模塊、控制(儀表驅(qū)動(dòng)、操作機(jī)構(gòu)、俯仰控制)等模塊。并隨時(shí)響應(yīng)串口和鍵盤中斷。為防止干擾,采集模塊采用多次采集,去掉最大和最小數(shù)據(jù),取平均值的方法。經(jīng)采集所取得的數(shù)據(jù)經(jīng)由存儲(chǔ)模塊和顯示模塊存入數(shù)據(jù)庫(kù)并顯示于面板,需要的時(shí)候可以通過(guò)數(shù)據(jù)庫(kù)管理模塊和文件管理模塊進(jìn)行查詢和打印。另外,根據(jù)采集的數(shù)據(jù)信息便可通過(guò)儀表驅(qū)動(dòng)模塊完成操縱機(jī)構(gòu)、俯仰控制等功能。
2.2.2 軟件編程中的關(guān)鍵模塊
1)俯仰控制模塊 函數(shù)int ComWrt(int COMPort,charbuffer[],int count)通過(guò)串口COMPort向變頻器發(fā)送控制命令,命令數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器buffer[]中,數(shù)據(jù)長(zhǎng)度為count字節(jié)??刂谱冾l器的運(yùn)行、停止、正/反轉(zhuǎn)。
函數(shù)void CRC_WrtFre(int FRECOM,unsigned int DValue,unsigned FreAdr,int Length_CRC)設(shè)定變頻器的工作頻率。通過(guò)串口FRECOM向變頻器發(fā)送工作頻率值Dvalue。
調(diào)用:
2)操縱機(jī)構(gòu)控制模塊 函數(shù)double sensor_com(int ID);功能說(shuō)明:向傳感器發(fā)送讀取數(shù)據(jù)命令,讀取和存儲(chǔ)傳感器輸出的原始數(shù)據(jù),并計(jì)算出傳感器的位移量。計(jì)算方法為:
3)儀表驅(qū)動(dòng)控制模塊 函數(shù)void da_send(int corn,intkahao,int channel,double da_sendata)用來(lái)發(fā)送電壓表所需的電壓值;函數(shù)double AD24(int COM,int CardID,int way,double*Val)用來(lái)采集電壓,對(duì)于需要采集的電壓進(jìn)行采集并將其顯示在面板上;函數(shù)void Relay(int comport,int cardlD,intchanelNum,char ctrldata[17])用來(lái)控制繼電器的通斷狀態(tài);函數(shù)void YB_High(double sjd_A)根據(jù)升降舵的變化來(lái)控制高度表和升降速度表的指示,其中YB_High為函數(shù)名,sjd_A為升降舵值;函數(shù)void YB_Airspeed(double ymg_V)根據(jù)油門桿來(lái)控制變頻器的頻率;函數(shù)void YB_Qhq(double Value)和void YB_Pq(double Value)分別是汽化器溫度表和排氣溫度表的驅(qū)動(dòng)函數(shù),驅(qū)動(dòng)變量為副翼;函數(shù)void YB_Wxdhizh(double Value)用來(lái)驅(qū)動(dòng)無(wú)線電高度表,其中YB_Wxdhigh是函數(shù)名,Value為油門桿位置;函數(shù)void YB_Sy(double Value)三用表的驅(qū)動(dòng),其中YB_Sy為函數(shù)名,Value為油門桿位置;函數(shù)void YB_Dq(double Value)驅(qū)動(dòng)大氣溫度表,其中YB_Dq為函數(shù)名,Value為油門桿位置。
4)視景音響控制模塊 函數(shù)void calculate()根據(jù)3個(gè)舵面和油門桿的數(shù)據(jù)計(jì)算視點(diǎn)位置的x坐標(biāo)、y坐標(biāo)、z坐標(biāo)、俯仰角、滾轉(zhuǎn)角、偏航角;函數(shù)void(*InitNet)(int fig),函數(shù)功能:初始化網(wǎng)絡(luò)。初始化包括IP地址,端口號(hào)等信息;函數(shù)void(*SendFlightData)(int *)向視景計(jì)算機(jī)傳送數(shù)據(jù)。
函數(shù)void(*CloseNet)(int fig)用于關(guān)閉網(wǎng)絡(luò);函數(shù)void(*ChangeData)(float viewx,float viewy,float viewz,float thet,float gam,float psi)用于交換數(shù)據(jù)。將控制系統(tǒng)軟件生成的數(shù)據(jù)FlyData傳送到視景軟件,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)更新交換,這是實(shí)時(shí)通信的基礎(chǔ)所在。
3 結(jié)束語(yǔ)
該系統(tǒng)以LabWindows/CVI虛擬儀器編程語(yǔ)言作為軟件開(kāi)發(fā)平臺(tái),以性能穩(wěn)定、數(shù)據(jù)處理能力強(qiáng)大的工控機(jī)為硬件系統(tǒng)的核心,數(shù)據(jù)庫(kù)技術(shù)和模塊化相結(jié)合,大大縮短了系統(tǒng)開(kāi)發(fā)周期,同時(shí)使得系統(tǒng)具有良好的可視性、交互性和擴(kuò)展性。它能夠完成飛行模擬器各個(gè)參數(shù)的采集、控制,并通過(guò)計(jì)算機(jī)的數(shù)據(jù)采集、參數(shù)控制、實(shí)時(shí)曲線、事故報(bào)警等畫面,使操作人員能夠了解機(jī)載設(shè)備的運(yùn)行情況,及時(shí)發(fā)現(xiàn)和處理問(wèn)題,測(cè)試功能齊全,防差錯(cuò)能力強(qiáng),工作運(yùn)行穩(wěn)定可靠,用戶界面友好,為飛行器裝備的技術(shù)保障提供強(qiáng)大支持。