房 瑾,覃 燕 ,穆永河
(中國飛行試驗研究院 陜西 西安 710089)
在飛行試驗中,試飛員通過觀察飛機儀表提供的測試參數(shù)操縱飛機,從而完成試驗任務(wù)要求的飛行動作達到試驗的目的。隨著新型號的不斷出現(xiàn),試驗內(nèi)容也更加復(fù)雜,經(jīng)常有一些特殊的測試參數(shù)飛行員需要隨時觀察,而飛機儀表又不提供或不能按要求提供的情況。另外有一些測試參數(shù)飛機儀表提供顯示但卻分散在不同的表盤中,而某個試驗課題往往要求將幾個不同的參數(shù)集中顯示在一個表盤上,以便飛行員能在短時間內(nèi)及時觀察到課題所關(guān)心的參數(shù)。還有一些風(fēng)險課題的測試參數(shù)需要提供超限報警或狀態(tài)報警功能,而這些功能飛機儀表是不提供的。
針對以上問題,本文提出了通用試飛參數(shù)顯示儀的設(shè)計和實現(xiàn)方法。該設(shè)備能對飛機上的測試參數(shù)按照試驗要求進行實時處理并實時顯示。滿足各類試飛課題的特殊需要,為試飛員提供需要的測試參數(shù)。
通用試飛參數(shù)顯示儀的硬件主要由顯示屏,信號轉(zhuǎn)接板,CPU板,電源板4部分組成。
在硬件選型及設(shè)計上嚴(yán)格按照機載產(chǎn)品的要求指標(biāo),顯示屏選用軍用寬溫、加固型彩色液晶顯示屏,亮度800 cd/m[2],在強烈陽光下可讀。該顯示屏水平視角55°/55°,上下視角35°/40°,保證了試飛員在空中強光線及大角度下都可以清晰的觀察到顯示屏上的參數(shù)值。為滿足電磁兼容性要求,定制一款對頻率為1 GHz以內(nèi)的電磁輻射屏蔽效能達50 dB的2 mm防暴強化屏蔽玻璃,經(jīng)過電磁兼容性的試驗,試驗數(shù)據(jù)顯示該設(shè)備達到了國軍標(biāo)中關(guān)于電磁兼容性相關(guān)項的要求。
該顯示儀主板為一塊PC-104主板,選用一款高性能CPU模塊,在主板上集成了10/100Base-T以太網(wǎng)接口及高性能圖形處理器,最高運行速度可達500 MHz,圖形處理器可支持各種LCD及TFT顯示屏,1M顯存。滿足該顯示儀實時性要求。
信號轉(zhuǎn)接板的功能是將CPU板上的網(wǎng)口、串口信號引出,轉(zhuǎn)接到機箱插頭上。使用該板的好處是可以不用在CPU板上直接焊接信號線,避免焊接時發(fā)生燒壞CPU板的危險,并且可使CPU板拆卸容易,維護方便。
電源板直接給PC/104總線供電,也可通過板卡上的電源接口供電,輸出具有連續(xù)短路保護功能。為了保證電源電路能在特殊情況下不受損壞,以及考慮電磁兼容性,外部28 V在進入該電源板前,加裝保險、反向保護、EMI濾波等電路,其電路圖如圖1所示。
圖1 28V電源保護及濾波電路圖Fig.1 power protection and filtration circuit
基于模塊化設(shè)計的標(biāo)準(zhǔn),按照系統(tǒng)功能,本軟件主要由網(wǎng)絡(luò)通訊、參數(shù)處理、儀表顯示3個功能模塊組成。該顯示儀的軟件的開發(fā)采用VC++與GL Studio相結(jié)合的方式,流程圖如2所示。
圖2 軟件總體流程Fig.2 Flow chart the software design
網(wǎng)絡(luò)通訊模塊主要完成網(wǎng)絡(luò)端口檢測,根據(jù)配置文件進行數(shù)據(jù)包的接收。
機載測試網(wǎng)絡(luò)中,負(fù)責(zé)采集數(shù)據(jù)的是數(shù)臺機載采集器,采集的數(shù)據(jù)經(jīng)打包通過不同的網(wǎng)絡(luò)端口以UDP廣播形式發(fā)送到機載測試網(wǎng)絡(luò)上,測試網(wǎng)絡(luò)中的各測試設(shè)備根據(jù)自己的需要取得自己的測試參數(shù),因此測試網(wǎng)絡(luò)上有各種各樣的數(shù)據(jù)包,數(shù)據(jù)包中包含很多的測試參數(shù)。我們就要根據(jù)配置文件去接收所要的數(shù)據(jù)包以及該數(shù)據(jù)包中所需要的參數(shù)。
通用參數(shù)顯示儀作為機載測試網(wǎng)絡(luò)上的一部分,需要與該網(wǎng)絡(luò)建立連接,實現(xiàn)測試數(shù)據(jù)的接收,并保正數(shù)據(jù)的實時性和穩(wěn)定性。該模塊基于Windows Socket開發(fā)了面向無連接的數(shù)據(jù)包通訊程序,為了提高程序的效率,采用了windows底層的API函數(shù)進行開發(fā),將API函數(shù)進行封裝[1-2],方便程序的調(diào)用。
由于采集器是采用UDP廣播方式發(fā)送數(shù)據(jù),因此如讀取網(wǎng)絡(luò)數(shù)據(jù)的設(shè)備在讀數(shù)據(jù)包時讀取操作不連續(xù),就有可能造成丟包現(xiàn)象。為了保證數(shù)據(jù)的實時性,我們采用多線程技術(shù)。
以下是多線程設(shè)置代碼:
extern DWORDWINAPI readnet(LPVOID lpParameter);
void Maininit()
{/*初始化代碼*/
HANDLE hThreadRec;
hThreadRec=CreateThread(NULL,0,readnet,NULL,0,NULL);
CloseHandle(hThreadRec);}
參數(shù)處理模塊主要進行參數(shù)工程量的轉(zhuǎn)化。按照配置文件,根據(jù)各個參數(shù)不同的校準(zhǔn)類型進行數(shù)據(jù)轉(zhuǎn)化,將得到的工程量直接顯示或者進行二次處理再顯示。
機載測試網(wǎng)路上的數(shù)據(jù)是由一個個IENA網(wǎng)絡(luò)數(shù)據(jù)包組成,網(wǎng)絡(luò)上的設(shè)備可通過事先約定好的配置文件,讀取并解算出需要的測試參數(shù)。每個網(wǎng)絡(luò)數(shù)據(jù)包的格式根據(jù)采集器的不同可以是不同的,但是必須遵循如表1所示的IENA數(shù)據(jù)定義。
KEY:每種類型數(shù)據(jù)包的識別字;SIZE:數(shù)據(jù)包的字?jǐn)?shù),從”KEY”到最后一個傳輸字;TIME:本年度 1月 1日 0時 0分開始計算的微秒時間;STATUS:狀態(tài)字 (同步/異步);SEQ_NUM:數(shù)據(jù)包計數(shù)器 (記錄每種KEY值的數(shù)據(jù)包的次數(shù));DATA:最多65527個數(shù)據(jù)字(每種 KEY值的數(shù)據(jù)包所含數(shù)據(jù)字的數(shù)目固定);END:數(shù)據(jù)包結(jié)束特征字(典型值為0xDEAD)[3]。
表1 IENA數(shù)據(jù)包定義Tab.1 definition of IENA packet
根據(jù)數(shù)據(jù)包的結(jié)構(gòu)以及配置文件中參數(shù)的位置定義,解算出測試參數(shù)的碼值,再根據(jù)配置文件中測試參數(shù)的校準(zhǔn)類型進行碼值到工程量的轉(zhuǎn)化。目前在飛行試驗的測試參數(shù)中,主要采用的校準(zhǔn)類型有直線校準(zhǔn),雙曲線,分段,多項式等校準(zhǔn)類型,針對每一種校準(zhǔn)類型設(shè)計相應(yīng)的轉(zhuǎn)化算法。下面以比較常見的分段校準(zhǔn)為例介紹一下參數(shù)工程量轉(zhuǎn)化的實現(xiàn)。首先將所有的點進行按照冒泡法進行排序[4],然后計算每個分段的斜率及y軸的截距,主要代碼如下:
Initline(const double*p_add,shortnum)
{ /*根據(jù)點對數(shù)得出斜率m_aa。y軸的截距m_bb*/
for(i=1,j=0;i<num;i++,j++)
{
kk=i*2;
m_aa[j]=(p_a[kk+1]-(p_a[kk-1]))/(p_a[kk]-(p_a[kk-2]));
m_bb[j]=(p_a[kk-1])-(m_aa[j]*p_a[kk-2]);
}
}
根據(jù)碼值所在的分段,以及已經(jīng)計算的所有分段的斜率和截距,計算碼值對應(yīng)的工程量。
通用試飛參數(shù)顯示儀顯示的信息量大,并且紋理要求比較高,因此使用了GL Studio仿真軟件,畫面開發(fā)工具選用GL Studio 3.2。該軟件提供一個可視化的環(huán)境用于開發(fā)儀表畫面,并且開發(fā)出的畫面可添加紋理,增強了真實感。畫面中每個圖像單元都是一個對象,對對象進行操作就可實現(xiàn)對畫面的操作,開發(fā)完成后可生成C++語言代碼。該軟件工具使用方便、開發(fā)效率高,儀表畫面顯示效果好。該軟件也是基于OpenGL類庫的二次開發(fā),其優(yōu)點是該語言為基于“照片級”的仿真語言,通過將儀表或字符圖片調(diào)入程序,然后對紋理編程控制,使得基于紋理的開發(fā)變的簡單,并且圖片拖放容易、易于修改[5-6]。因此選用該語言開發(fā)通用參數(shù)顯示儀的顯示界面,具有開發(fā)周期短、紋理精美、顯示效果良好等優(yōu)點,能夠滿足試飛參數(shù)的顯示要求。
在GL Studio中設(shè)計圖形界面,使用GL Studio代碼生成器把之前設(shè)計好的圖形界面生成C++源代碼,再將生成的源代碼添加到自己的應(yīng)用程序中,并在Methed里面添加函數(shù)代碼進行驅(qū)動,例如飛機法向過載的驅(qū)動代碼如下:
void InstrumentClass::NzMethod(floatalpha)
{
NzIndicator->DynamicRotate (nz * NzIndicatorRatio,
Z_AXIS);
}
某警示類的顯示如下:
void InstrumentClass::WarnMethod(float fsecu)
{
nzzcWarnDynamic_1->Visibility(true);
nzzcWarnDynamic_2->Visibility(false);
}
按照某試飛課題要求開發(fā)完成的畫面如圖3所示。
本軟件采用了技術(shù)成熟的嵌入式操作系統(tǒng)和先進的開發(fā)工具,以較高的效率完成了試飛科目對飛行參數(shù)的顯示要求,編寫完成的顯示儀軟件畫面美觀、數(shù)據(jù)可靠、修改方便。根據(jù)特定的試飛課題,通過修改配置文件等簡單設(shè)置,就可以顯示本課題關(guān)心的測試參數(shù)。目前,本顯示儀已在多架軍機、民機上安裝使用,為大迎角、失速、發(fā)動機等風(fēng)險試飛科目的完成起到了重要作用。
[1]郝蘊.Visual C++6.0開發(fā)與實例[M].北京:電子工業(yè)出版社,2011.
[2]Kate Gregory.Visual C++5開發(fā)使用手冊[M].北京:機械工業(yè)出版社,1999.
[3]霍朝暉.飛行試驗振動參數(shù)遙測實時處理系統(tǒng)設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2012.
[4]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,1997.
[5]于輝,趙經(jīng)成,付戰(zhàn)平,等.GL Studio虛擬儀表技術(shù)應(yīng)用與系統(tǒng)開發(fā)[M].北京:國防工業(yè)出版社出版,2009.
[6]楊志菊,李洋.GLStudio在武器系統(tǒng)仿真模擬中的應(yīng)用[J].電子測試,2010,8(12):80-86.YANG Zhi-ju,LIYang.GL Studio’s used in weapon system simulation[J].Electronic Test,2010,8(12):80-86.