黃曉雪
(渤海船舶職業(yè)學(xué)院,遼寧興城125105)
基于GL Studio的船舶駕控臺(tái)儀表仿真
黃曉雪
(渤海船舶職業(yè)學(xué)院,遼寧興城125105)
采用虛擬儀表技術(shù)對(duì)船舶操縱模擬器駕控臺(tái)儀表進(jìn)行桌面級(jí)仿真,其主要優(yōu)點(diǎn)是可以由用戶(hù)自行定義、設(shè)計(jì)儀表系統(tǒng),以滿(mǎn)足不同用戶(hù)的要求,使儀表的功能更加強(qiáng)大、靈活,且易于同網(wǎng)絡(luò)、外設(shè)及其他應(yīng)用相連接。利用虛擬儀表軟件GL Studio模擬船舶駕控臺(tái)儀表,制作生成動(dòng)態(tài)連接庫(kù)文件,并在Vega Prime中調(diào)用,實(shí)現(xiàn)真實(shí)還原船上儀表的目的。
船舶駕控臺(tái)模擬;GL Studio;虛擬儀表
隨著科學(xué)技術(shù)的發(fā)展,在現(xiàn)代造船模式下,計(jì)算機(jī)技術(shù)滲透到造船過(guò)程中的方方面面。在船舶實(shí)驗(yàn)室、船廠以及現(xiàn)場(chǎng)作業(yè)中,為了完成一些測(cè)試項(xiàng)目,需要許多儀器。但是眾多的儀器不僅造價(jià)十分高昂,而且體積巨大,最重要的是數(shù)據(jù)傳輸十分麻煩。所以虛擬儀表的存在在很大程度上幫助我們解決了上述問(wèn)題。它不僅具有強(qiáng)大的顯示和處理數(shù)據(jù)的能力,而且在數(shù)據(jù)傳輸上具有很大的優(yōu)勢(shì)。更重要的是借助于計(jì)算機(jī)強(qiáng)大的圖形處理能力,它可以真實(shí)地還原儀表上的按鈕、旋鈕、指示燈等功能。本文擬采用虛擬儀表軟件GL Studio,模擬船舶駕控臺(tái)儀表,包括主機(jī)轉(zhuǎn)速表、車(chē)鐘單元、總控單元等操作面板;制作生成動(dòng)態(tài)連接庫(kù)文件,并在Vega Prime中調(diào)用,實(shí)現(xiàn)真實(shí)還原船上儀表的目的。
GL Studio儀表開(kāi)發(fā)系統(tǒng)為用戶(hù)提供了一個(gè)所見(jiàn)即所得的繪圖工具以及一個(gè)代碼生成器,用戶(hù)可以根據(jù)真實(shí)的儀表取材通過(guò)繪圖工具繪制儀表并在代碼生成器中生成代碼,從而使虛擬儀表可以輕松嵌入到其他應(yīng)用程序中去。
1.1 GL Studio圖形編輯器
圖形編輯器允許用戶(hù)直接根據(jù)真實(shí)儀表繪制圖形,為用戶(hù)提供了包括按鈕、指針等圖元,用戶(hù)可將真實(shí)儀表的紋理添加到相對(duì)應(yīng)的圖元上,通過(guò)修改尺寸、旋轉(zhuǎn)等操作進(jìn)行模擬真實(shí)儀表的大小、方向來(lái)得到所需圖形。通過(guò)這種方式用戶(hù)可以直接建立所要求的儀表系統(tǒng)。
不僅如此,GL Studio采用面向?qū)ο蟮木幊谭绞?,即已?jīng)創(chuàng)建好的虛擬儀表可以重復(fù)使用,只需簡(jiǎn)單地創(chuàng)建一個(gè)模板對(duì)象,便可以對(duì)其進(jìn)行重復(fù)性的調(diào)用。正因?yàn)榫哂写颂攸c(diǎn),GL Studio與其他軟件相比節(jié)省了開(kāi)發(fā)時(shí)間。
1.2 GL Studio代碼生成器
通過(guò)GL Studio圖形編譯器生成的所有儀表系統(tǒng)都可以通過(guò)其代碼生成器得到源代碼。這些具有相關(guān)功能的源代碼可以被定義為固定的C++類(lèi),代碼可由用戶(hù)進(jìn)行修改操作,并可以與其他應(yīng)用系統(tǒng)進(jìn)行連接,在很大程度上解決了以往儀表操作系統(tǒng)數(shù)據(jù)難以傳輸?shù)膯?wèn)題。
GL Studio作為可進(jìn)行實(shí)時(shí)交互的開(kāi)發(fā)工具,可以隨時(shí)為客戶(hù)提供設(shè)計(jì)、修改或模擬仿真操作,使用戶(hù)完全置身于GL Studio為其帶來(lái)的真實(shí)建模方案中。通過(guò)GL Studio建立的模型方案可以創(chuàng)建為不同的文件,或作為單獨(dú)的執(zhí)行文件,也可生成ActiveX插件或者dll格式的動(dòng)態(tài)鏈接庫(kù)。用戶(hù)在使用過(guò)程中可根據(jù)自身需要將GL Studio文件生成的代碼植入到C++語(yǔ)言中,實(shí)現(xiàn)最終的仿真設(shè)計(jì)方案。
綜上,GL Studio儀表仿真系統(tǒng)能夠根據(jù)用戶(hù)需求,設(shè)定不同的解決方案,并可按用戶(hù)需求隨時(shí)進(jìn)行相應(yīng)地修改,具有界面穩(wěn)定、逼真,人機(jī)界面友好的特點(diǎn),最大程度地降低了儀表仿真系統(tǒng)的難度,縮短了開(kāi)發(fā)周期。
船舶駕控臺(tái)儀表仿真系統(tǒng)如果從底層代碼開(kāi)始展開(kāi),不僅工作量巨大,而且后期進(jìn)行修改和維護(hù)都十分復(fù)雜,而采用GL Studio軟件進(jìn)行船舶駕控臺(tái)儀表仿真系統(tǒng)的開(kāi)發(fā)可以有效地避免上述問(wèn)題。
根據(jù)某型船駕控臺(tái)儀表仿真系統(tǒng)的需要,進(jìn)行船舶駕控臺(tái)儀表開(kāi)發(fā)。船舶駕控臺(tái)儀表仿真系統(tǒng)的具體開(kāi)發(fā)過(guò)程如下:
1)利用圖形處理技術(shù)對(duì)真實(shí)儀表進(jìn)行紋理處理;
2)根據(jù)真實(shí)儀表邏輯關(guān)系在GL Studio中進(jìn)行儀表開(kāi)發(fā)設(shè)計(jì);
3)生成相關(guān)代碼并進(jìn)行數(shù)據(jù)傳輸。
2.1 真實(shí)儀表紋理處理
利用圖形處理軟件與真實(shí)儀表相結(jié)合的方法,處理繪制儀表所需紋理。根據(jù)真實(shí)儀表的比例,利用圖形處理軟件進(jìn)行扭轉(zhuǎn)、拉伸等操作并對(duì)其進(jìn)行色彩處理,真實(shí)地還原駕控臺(tái)儀表。圖1為處理后的操舵單元儀表紋理圖。
2.2 基于GL Studio的儀表開(kāi)發(fā)設(shè)計(jì)
按照某型船駕控臺(tái)儀表仿真系統(tǒng)的整體要求,將整個(gè)系統(tǒng)劃分為速度表、轉(zhuǎn)速表、舵角指示器、車(chē)鐘單元以及總控單元5個(gè)子系統(tǒng)。
2.2.1 駕控臺(tái)儀表邏輯關(guān)系分析
開(kāi)關(guān)控制著儀表盤(pán)的啟閉狀態(tài),而儀表盤(pán)是駕控狀態(tài)的終端顯示系統(tǒng),由此可得出開(kāi)關(guān)和儀表盤(pán)之間具有以下3種控制關(guān)系:一是直接控制,即某一個(gè)開(kāi)關(guān)可直接控制某儀表盤(pán)的啟閉狀態(tài),開(kāi)關(guān)的啟閉控制著儀表盤(pán)的啟閉。二是選擇性控制,即某儀表盤(pán)存在2個(gè)控制開(kāi)關(guān),也就是任何一個(gè)開(kāi)關(guān)的啟閉都可以控制儀表盤(pán)的啟閉。三是多種狀態(tài)共同控制,即某儀表盤(pán)的啟閉存在多個(gè)控制開(kāi)關(guān),也就是必須要保證多個(gè)開(kāi)關(guān)的相應(yīng)狀態(tài)才能保證儀表盤(pán)的開(kāi)啟或關(guān)閉。
為保證船舶駕控臺(tái)功能的實(shí)現(xiàn),根據(jù)船舶駕控臺(tái)的真實(shí)邏輯關(guān)系得出虛擬儀表設(shè)計(jì)中的邏輯關(guān)系,并在GL Studio仿真軟件中添加相關(guān)邏輯關(guān)系的代碼,直接控制關(guān)系的代碼如下:
_altitude3=value;//設(shè)定變量
if(_altitude3>=0)
rudder_10_1GlsOdometer->Value(_altitude3);
2.2.2 儀表盤(pán)的創(chuàng)建
根據(jù)真實(shí)儀表的紋理,利用圖形處理軟件將原有素材進(jìn)行處理得出儀表盤(pán)創(chuàng)建的紋理素材,然后在GL Studio界面下創(chuàng)建儀表盤(pán),定義指針等相關(guān)功能部件,并添加相關(guān)功能函數(shù),下面以速度表為例簡(jiǎn)述儀表盤(pán)函數(shù)和變量的編輯過(guò)程。
首先是速度表函數(shù)添加。打開(kāi)速度表,在主控制單元Code選項(xiàng)卡內(nèi)添加函數(shù),在頭文件中添加#include"glsutil.h"。這樣通過(guò)添加GL Studio自己的API函數(shù)庫(kù),添加了常用的控制函數(shù),如旋轉(zhuǎn)、滑動(dòng)等,否則在編譯時(shí)會(huì)出錯(cuò),其中部分代碼如下:
在“Class Properties”中添加“Altitude”函數(shù),函數(shù)如下:needle->DynamicRotate(-(speed_1*(240/8)),Z_AXIS);//needle為速度表幾何體的名稱(chēng),DynamicRotate為旋轉(zhuǎn)函數(shù),speed_1為設(shè)定的一個(gè)變量,設(shè)定needle的旋轉(zhuǎn)速度與speed_1的速度、速度表轉(zhuǎn)動(dòng)的角度范圍(240度)以及速度表表盤(pán)分成的八個(gè)部分有關(guān),Z_AXIS表示指針將圍繞屏幕的Z軸旋轉(zhuǎn);
針對(duì)大部分學(xué)生,學(xué)習(xí)是枯燥的,而針對(duì)一小部分學(xué)生卻是知識(shí)的海洋和樂(lè)園。寓教于樂(lè)的方式就是讓更多的學(xué)生能感受到學(xué)習(xí)的樂(lè)趣,感受文化的魅力,讓自己從心出發(fā)愛(ài)上學(xué)習(xí)。
在“Calculate”添加代碼Altitude(RampFloat (time*.7,0.0f,40.0f)//;
以時(shí)間為變量,測(cè)試速度表指針,0.0 f和40.0 f分別為最小值和最大值;
點(diǎn)擊保存,并生成代碼。
雙擊速度表的.sln文件,單擊文件下“添加現(xiàn)有項(xiàng)”,在查找范圍內(nèi)輸入速度表路徑中source文件夾添加.h和.cpp文件,這樣頭文件和源文件就添加成功。開(kāi)始執(zhí)行調(diào)試按鈕,速度表在vc.net中動(dòng)態(tài)顯示,如圖2所示。有時(shí)調(diào)試時(shí)會(huì)出現(xiàn)一些錯(cuò)誤,需按照提示修改代碼。
圖2 速度表在vc中調(diào)試
2.2.3 儀表集成與調(diào)試
在GL Studio操作界面將所有儀表和開(kāi)關(guān)集成到一個(gè)面板中,并且將每個(gè)儀表組件定義為一個(gè)組,這樣在以后使用相關(guān)組件時(shí)可以直接調(diào)用,方便操作。
因?yàn)樗俣缺碓谠瓉?lái)的組文件中已經(jīng)添加了動(dòng)態(tài)函數(shù),而要在集成面板內(nèi)顯示還需要添加新的函數(shù),在“Class Properties”內(nèi)添加儀表盤(pán)的相關(guān)函數(shù),并利用return函數(shù)設(shè)定其返回值。通過(guò)函數(shù)的添加及變量的定義,可以實(shí)現(xiàn)儀表集成面板的制作并進(jìn)行調(diào)試。調(diào)試之前須將所有速度表、轉(zhuǎn)速表、舵角表等的.h和.cpp文件添加到現(xiàn)有項(xiàng)里,才可執(zhí)行調(diào)試,調(diào)試成功以后加載生成.dll文件的動(dòng)態(tài)鏈接庫(kù)。調(diào)試結(jié)果如圖3所示。
圖3 集成儀表
2.3 Vega Prime中動(dòng)態(tài)調(diào)用
駕控臺(tái)的儀表系統(tǒng)不是一個(gè)獨(dú)立的系統(tǒng),需要與船舶運(yùn)動(dòng)數(shù)學(xué)模型相關(guān)聯(lián),如主機(jī)轉(zhuǎn)速、速度、舵角等參數(shù)的傳遞,虛擬儀表才可以動(dòng)態(tài)顯示,所以下一步要?jiǎng)?chuàng)建它的接口。在集成面板內(nèi)創(chuàng)建儀表接口,加載生成的動(dòng)態(tài)鏈接庫(kù)文件并添加接口函數(shù),在Vega Prime界面下不設(shè)置值,調(diào)節(jié)虛擬儀表將其返回的轉(zhuǎn)速值和舵角傳送給模型。圖4為在Vega Prime操作界面的效果圖。
圖4 Vega Prime界面
由于傳統(tǒng)的儀表仿真系統(tǒng)存在著開(kāi)發(fā)時(shí)間長(zhǎng)、效率低、數(shù)據(jù)傳輸困難等問(wèn)題,故采用GL Studio儀表系統(tǒng)開(kāi)發(fā)軟件對(duì)某型船駕控臺(tái)儀表進(jìn)行仿真,實(shí)現(xiàn)了真正由用戶(hù)自行定義、自行設(shè)計(jì)儀表系統(tǒng)的設(shè)想,達(dá)到了使儀表功能更加強(qiáng)大、靈活,容易同其他應(yīng)用相連接的要求。將GL Studio虛擬儀表軟件與Vega Prime視景仿真軟件功能相結(jié)合,實(shí)現(xiàn)最直接、最逼真的人機(jī)交互方式,并且使軟件逼真地再現(xiàn)了儀表參數(shù)的顯示、修改、讀取等功能,具有畫(huà)面穩(wěn)定、逼真度高、操作流暢、人機(jī)界面友好等特點(diǎn)。因此,這種人機(jī)交互將在未來(lái)船舶駕控臺(tái)仿真中廣泛使用。
[1]黃曉雪,韓端鋒,袁利毫,等.基于GL Studio的船舶駕控臺(tái)仿真系統(tǒng)的開(kāi)發(fā)[J].船舶,2013(4):73-77.
[2]謝勇,李治慶.GL Studio在飛機(jī)虛擬座艙實(shí)現(xiàn)中的應(yīng)用[J].計(jì)算機(jī)時(shí)代,2007(3):43-45.
[3]張文,朱元昌,樊世友,等.GL Studio及其在雷達(dá)面板仿真中的應(yīng)用[J].測(cè)控技術(shù),2002(12):50-52.
[4]樊世友,邸彥強(qiáng),朱元昌.GL Studio軟件在視景仿真建模中的應(yīng)用[J].計(jì)算機(jī)工程,2002(3):260-261.
[責(zé)任編輯:劉 月]
Ship Control Console Instrument Simulation Based on GL Studio
HUANG Xiaoxue
(Bohai Shipbuilding Vocational College,Xingcheng 125105,China)
Using virtual instrument technology in ship control console instrument for desktop level simulation,whose main advantage is to define and design instrument system by users themselves,can meet different users'requirements,make the instrument more powerful,more flexible,and easy to connect with network,peripheral device and other applications.It realizes the purpose of making up a realistic ship instrument,to simulate ship control console instrument using virtual instrument software GL Studio,create dynamic link library file,and debug in Vega Prime.
ship control console simulation;GL Studio;virtual instrument
U664.82
A
2095-5928(2014)06-36-04
2014-10-11
黃曉雪(1988-),女,黑龍江安達(dá)人,助教,碩士,研究方向:船舶模擬仿真系統(tǒng)研究。