周 堯
(空軍第一航空學院,河南 信陽 464000)
基于GL Studio的虛擬儀表開發和關鍵技術研究
周 堯
(空軍第一航空學院,河南 信陽 464000)
介紹了GL Studio開發平臺在虛擬儀表設計與開發中的關鍵技術。應用該平臺設計、開發了某型近導指示虛擬儀表,并且對該虛擬儀表和普通儀表的指示精度作了進一步比較。采用虛擬儀表代替普通儀表可以減少誤差的來源,提高指示精度。
虛擬儀表;GL Studio;驅動程序
虛擬現實技術已經被廣泛應用到軍事、工業、航空、生活等各個方面,它是計算機技術與虛擬儀器技術相結合的產物,尤其在軍事訓練中有著至關重要的作用。應用虛擬現實技術構建一套全數字化的虛擬系統,可以減少人力物力的投入,節約資源和成本,減少不必要的損失,并且能夠得到滿意的效果。針對大型訓練系統操作面板大,需要顯示儀表多,邏輯關系復雜等問題,無論是使用Open GL還是3D MAX都不能很好地解決建模難度大、組件復用性差、難以維護、并且對計算機硬件要求高等缺點。GL tudio是一款專業的虛擬儀表仿真平臺,它以上手快、開發界面友好、編程要求低、開發效率更高、結果逼真、復用性強等優點被廣泛應用到工程實踐中。本文介紹GL Studio開發平臺在虛擬儀表設計與開發中的關鍵技術。
GL Studio是DISTI公司推出的一款具有獨立平臺的快速原型工具,并且它可以在Windows NT、IRIX和Linux操作系統上運行。GL Studio工具包括設計器和生成器,使用GL Studio設計器不需要編程知識,它以所見即所得的方式來完成儀表面板的制作,通過在編輯器代碼欄編寫簡單的源代碼來控制各部件之間的邏輯關系。代碼生成器把設計對象以C++源代碼的形式生成,具有廣泛的適用性,并且設計結果可以根據用戶需要在工程中被創建成可執行文件(EXE)、動態鏈接庫文件(DLL)和ActiveX控件(它可被單獨使用,也可被植入到其他設計中聯合應用),用于完成嵌入式系統的交互仿真。
首先進行前期的準備工作,通常是對需要仿真的儀表面板的數碼照片進行預處理,即調整照片的曝光程度和對比度等;然后,根據儀表中各部件的功用,把需要有動作響應的部件用Photoshop等圖片處理軟件切割下來,再進行一定的圖片修復,最終生成GL Studio需要的紋理圖片。GL Studio的開發流程如圖1所示。

圖1 GL Studio的開發流程圖
2.1 紋理生成的關鍵點
紋理生成的關鍵點如下:
(1) 生成的紋理圖片格式一定要合適,雖然GL Studio支持多種格式的紋理,如JPEG、TIFF、BMP、PNG等,但是,應用PNG格式會比較有利于后面的處理,因為GL Studio在處理貼圖的時候會自動把紋理的像素調整為2的n次冪,而PNG格式的圖片正好是以2的n次冪形式存儲的,這樣就可以縮短系統處理時間,減少繁瑣的調整。
(2) 要對儀表實體的外觀表現有一定的把握,根據儀表的控制部件和顯示部件的運動方式對圖片進行合理的分割和布局,再根據后期儀表邏輯的代碼實現對各部件恰當的命名,使得邏輯控制代碼具有較強的可讀性,降低后期開發與維護的難度。
2.2 邏輯控制與行為事件
儀表的紋理圖片按照GL Studio的要求在編輯器中調整好大小和位置后,就要對需要響應的控制部件設置控制邏輯和行為事件。在編輯器的代碼欄設置變量屬性和初值,根據GL Studio中提供的庫函數設置動作代碼和事件回調函數。如指針的旋轉需調用Display Object->DynamicRotate()函數,而且必須在代碼欄頂部的頭文件中包含聲明語句:#include
現以圖2中的幾種事件響應模型為例說明邏輯控制與行為事件。圖2中,從狀態1到狀態2的變化必然有對應的事件響應關系來控制與之對應的部件的動作,其中的開關從狀態1到狀態2的變化是鼠標事件的響應,它可能對應一個設備的開啟和關閉,也可能對應電路的接通與斷開,這取決于它的回調函數所控制的對象。當鼠標左鍵按下,開關和警示燈的狀態都發生改變,開關對象的回調響應函數如下:
ON_MOUSE_DOWN(MOUSE_LBUTTON)
{
if (self-> State ( ) = =1) // self指開關對象
{
Indicator->State(1); // Indicator指開關下面的警示燈對象
self -> State(2);
}
else
{
self->State(1);
Indicator->State(0);
}
return 1;
}
return 0 ;

圖2 幾種事件響應模型
2.3 驅動原理
由于實際控制面板上的儀表是機械儀表,其指針是在伺服電動機和測速發電機的共同作用下轉動的。假設儀表內部的正余弦接收機接收來自慣導的即時航向正余弦輸入信號,該信號分別送給正余弦信號接收機TpB1和用于檢測當前航向的正余弦信號接收機TpB2。TpB1正余弦接收機轉子產生與當前航向成正比的失調信號,該信號經過放大后進入電動機的控制繞組,電機開始工作,經減速器帶動2個正余弦信號接收機TpB1、TpB2的轉子轉動,直到能量釋放完畢停止。
虛擬面板上所有的動作都是通過數字信號來驅動的,例如指針的轉動是通過GL Studio的函數實現的,而函數的參數則是通過數字量和角度之間的對應關系編寫程序解算得到的,其中數字量是通過計算機運算處理直接得到的結果。
2.4 GL Studio驅動程序
GL Studio的庫函數提供了一系列的驅動方法,以滿足用戶所期望的事件響應動作。在變量初始化以后,對函數進行聲明和定義,并且編寫驅動程序,用于測試對象的動作響應是否正確。現以某型近導指示器為例說明系統的測試驅動程序。在測試函數TestValues ( )中寫入對象的測試方法:
SetAngle_HJ_Giv (angle_hj_giv); //設置給定航向角
SetRange (TestVal_2); //設置到航路點的距離
SetBiaoGan (TestVal_1); //設置標桿動作
SetAngle_HX_Giv (angle_hx_giv); //設置給定航向
……
……
……
SetAngle_HX_Current (angle_hx_current) ; //設置當前航向
SetAngle_HX_DT (angle_hx_dt); //設置電臺航向
其中,左邊旋鈕的事件回調函數部分代碼如下:
ON_MOUSE_DOWN(MOUSE_LBUTTON)
……
……//坐標的變換
if ((ev->eventType==EVENT_MOUSE) &&
((ev->eventSubtype==MOUSE_DRAG) ||(ev->eventSubtype==MOUSE_DOWN)))
// 如果是鼠標事件并且鼠標按下或者拖拽
就會有以下動作
{
static float angle_hxPerDeg = 18.0f / 180.0f;
float deltaAngle = self-> RelativeAngle (mev->lx,mev->ly) - self->RelativeAngle(_knobDownPos.x,_knobDownPos.y) ;
if (deltaAngle < -180.0f )
deltaAngle += 360.0f ;
else if (deltaAngle > 180.0f )
deltaAngle -= 360.0f ;
float delta_angle_hx = deltaAngle * angle_hxPerDeg;
angle_hx_giv += delta_angle_hx;
Lknob->DynamicRotateRelative (deltaAngle , Z_AXIS); // 旋鈕繞Z軸旋轉角度deltaAngle
……
}
return 0 ;
由于GL Studio和Windows的坐標原點不在同一點,GL Studio的原點在左下角,而Windows的原點在左上角,因此首先要進行坐標的變換,從而保證后續動作的正確性。
在Class Methods下的Calculate代碼欄中寫入以下代碼:TestValues(time),用來調用測試函數。仿真結果如圖3所示,測試結果表明虛擬仿真儀表能夠比較精確地指示傳輸給它的信號量。
當完成了虛擬儀表的測試工作以后,就需要把虛擬儀表和真實儀表的性能進行實驗對比。
2.5 測試與對比
在導航系統中,導航數據的獲取需要以下步驟:接收機天線接收無線電信號,信號再經過譯碼電路進行變頻、檢波、譯碼得到并行單極性碼,這樣的碼字不能被導航計算機直接使用,而要經過代碼轉換裝置變成串行雙極性碼才能被使用。總之,計算機只能處理數字信號,但機械儀表是通過正余弦電壓模擬信號來驅動的,所以經過一系列代碼轉換之后還要再轉換成正余弦信號才能驅動儀表指針轉動指示。
而虛擬儀表就是在計算機軟件平臺上開發出來的,所以它可以直接處理數字信號,這樣就在原理上減少了一定的轉換誤差。我們把基于GL Studio開發的某型近距導航指示器應用到實際導航系統中與原有機械指示器作了測試和對比。由于某型近距導航指示器指示的信息量很大,這里以當前航向信號為例,對比指示結果,如表1所示。當前航向測試值分別為210°和280°時的指示情況對比如圖4所示(儀表中最上面的白色指針在內刻度盤上的讀數乘以10就是當前航向角度)。

圖3 某型近距導航指示器仿真結果

表1 當前航向測試對比 (°)
2.6 結果分析
從圖4中可以看出實際儀表和仿真儀表的指示結果都會和給定數據存在一定的誤差,由于它們的讀數要放大10倍,則它的誤差也就會被放大10倍。經過對比,實際儀表要比虛擬儀表的指示誤差大大約1°。雖然它們都有誤差,但誤差大小不同,誤差來源也不同。實際儀表由于設計和工藝條件的限制,數據顯示不會像
理想中那么精確,總會存在一定誤差,主要是來自在數模轉換過程中由于轉換精度不能達到理想值而造成的轉換誤差和使用時間的增長、老化、磨損造成的機械誤差。雖然進行了原邊補償和副邊補償,但還是不能得到無誤差顯示。

圖4 輸出結果截圖對比
虛擬儀表是基于計算機軟件技術平臺開發的儀表,并且一般會應用到計算機數字系統中,用來完成虛擬指示功能。它可以作為計算機系統終端直接把經過處理的數據無誤差顯示,不需要經過數模或者模數轉換,從而減少了轉換誤差。因此,虛擬儀表可以代替實際儀表完成它的功能,甚至能夠達到更好的效果。
目前,虛擬儀表技術已經逐漸應用到各個行業的生產生活中,它以投資少、見效快的優點被工程設計人員所接受。使用專業的儀表仿真平臺GL Studio能夠使開發人員快速掌握系統開發流程和關鍵技術,高效地開發出指示精確、耐用、移植性強的虛擬仿真系統。因此,基于GL Studio的虛擬儀表開發技術具有一定的實用性和先進性。
[1] 于輝,趙經成.GL Studio虛擬儀表技術應用與系統開發[M].北京:國防工業出版社,2010.
[2] 黃新淵.虛擬現實技術及應用[M].北京:科學出版社,1999.
[3] 張文,朱元昌,樊世友,等.GL Studio及其在雷達面板仿真中的應用[J].測控技術,2002(12):50-52.
[4] 趙勃.數字/旋變轉換器接口電路及控制軟件設計[J].彈箭與制導學報,2004(11):284-286.
[5] 袁梅,白剛,陳炅.虛擬多功能顯示系統設計[J].系統仿真學報,2006,18(6):1578-1581.
Design and Simulation of Virtual Instruments Based on GL Studio
ZHOU Yao
(The First Aviation University of Air Force, Xinyang 464000, China)
The key technology of virtual instrument design and simulation based on GL Studio is introduced in this paper, and a Short-Rang-Navigation instrument is developed. The instruction accuracy of virtual instrument is compared with that of ordinary instrument. The virtual instrument instead of ordinary instrument can reduce error sources, improve instruction precision.
virtual instruments; GL studio; driver
1672- 6413(2015)06- 0075- 03
2015- 08- 17;
2015- 09- 20
周堯(1985-),男,陜西戶縣人,講師,碩士,主要從事飛行控制系統研究。
TP391.9∶TP216
A