趙春暉,史艷鵬
(哈爾濱工程大學(xué),哈爾濱 150001)
利用計算機仿真技術(shù)進行雷達系統(tǒng)建模與仿真實驗,具有成本低、開發(fā)方便、不依賴特定的硬件、適應(yīng)性強等特點。目前的仿真軟件大多采用Matlab/Simulink或SystemView,其優(yōu)點是使用方便、開發(fā)周期短,缺點是仿真過程不夠逼真、操作界面不夠美觀、可移植性較差。針對界面問題,有人提出采用VC++結(jié)合OpenGL實現(xiàn)雷達顯示界面。然而OpenGL作為軟件第三方,其學(xué)習(xí)與操作本身亦十分復(fù)雜。眾所周知,VC++是一種可視化的編程語言,借助于MFC類庫和應(yīng)用程序框架能夠輕易開發(fā)出Windows標(biāo)準(zhǔn)界面的應(yīng)用程序。本文介紹了基于VC++單文檔界面(SDI)實現(xiàn)雷達實驗系統(tǒng)界面的設(shè)計方法,著重闡述了其實現(xiàn)過程中的重點和難點問題,最后給出了本系統(tǒng)的運行結(jié)果。
實驗系統(tǒng)主界面由菜單區(qū)、工具欄區(qū)、客戶顯示區(qū)和狀態(tài)欄區(qū)四部分組成。其中菜單部分包括文件、編輯、設(shè)置、運行、查看、幫助6個一級菜單,相對應(yīng)的二級菜單及1個右鍵快捷菜單;工具欄部分除SDI框架提供的外包括設(shè)置、開始、暫停、停止、幫助5個按鈕;顯示部分包括雷達主顯、目標(biāo)參照、系統(tǒng)參數(shù)3個顯示區(qū);狀態(tài)欄包括坐標(biāo)、掃描量程、時間顯示3部分,如圖1所示。
圖1 實驗系統(tǒng)界面構(gòu)成要素及布局
其中菜單、工具欄按鈕主要用于新建、打開、保存及關(guān)閉系統(tǒng)文件,設(shè)置雷達、環(huán)境、目標(biāo)、對抗實驗等相關(guān)參數(shù),控制系統(tǒng)運行、暫停與停止,查看目標(biāo)坐標(biāo)、系統(tǒng)運行時間、系統(tǒng)使用說明及版本。客戶顯示區(qū)及狀態(tài)欄用于顯示雷達掃描圖、實驗?zāi)繕?biāo)參照圖、雷達/環(huán)境參數(shù)以及指示目標(biāo)坐標(biāo)、雷達作用距離和系統(tǒng)運行時間。
系統(tǒng)實現(xiàn)過程中,絕大部分采用MFC中提供的基礎(chǔ)類,因此節(jié)省了大量的開發(fā)時間和成本。其中P型雷達顯示器的模擬、目標(biāo)產(chǎn)生與運動跟蹤、SDI程序的窗體分割、系統(tǒng)參數(shù)的動態(tài)調(diào)整與數(shù)據(jù)處理是本系統(tǒng)設(shè)計仿真過程中的重點和難點。
2.1.1 P型雷達顯示器
在雷達顯示器中,使用最廣泛的是平面顯示器,它提供了360°范圍內(nèi)全部平面信息,因此被稱為全景或環(huán)視顯示器,簡稱PPI或P型顯示器。P型顯示器能夠提供平面范圍的目標(biāo)分布情況,這種分布情況與通用的平面地圖一致;可以顯示目標(biāo)的斜距離和方位2個坐標(biāo),是極坐標(biāo)形式的二維顯示器;中心表示雷達站的位置,帶有余輝的距離掃描線隨著天線的方位掃描在畫面上同步轉(zhuǎn)動。
2.1.2 掃描線余輝的實現(xiàn)
2.1.2.1 余輝的數(shù)學(xué)模型
當(dāng)電子束停止對熒光物質(zhì)的轟擊后,熒光質(zhì)的發(fā)光仍能持續(xù)一定的時間才消失的現(xiàn)象叫余輝。在計算機的屏幕模擬雷達顯示器時,無法自動產(chǎn)生掃描過程中熒光質(zhì)的余輝,因此必須進行人為的模擬。資料表明:指數(shù)函數(shù)曲線與余輝衰減曲線較為吻合,文獻[6]中給出了2個衰減曲線方程,可以利用該方程對余輝進行數(shù)學(xué)描述。本文采用一次指數(shù)衰減曲線方程,即:
式中:I為熒光質(zhì)余輝亮度;I0為一次衰減圖層亮度;k為一次衰減常數(shù);t為衰減時間。
2.1.2.2 余輝的實現(xiàn)方法
實現(xiàn)掃描線余輝的方法有畫線法、固定扇掃法和逐點消隱法等,諸多文獻對這幾種方法進行了描述和討論。結(jié)合前人工作,本文采用可變扇區(qū)內(nèi)畫線法,即通過改變扇區(qū)內(nèi)線條顏色實現(xiàn)余輝效果。優(yōu)點是扇區(qū)范圍可控、效果逼真、實現(xiàn)方便,過程為:
(1)設(shè)定扇形區(qū)域范圍θ。系統(tǒng)為用戶提供30°~180°間隔不等的8個扇區(qū)范圍。用戶可根據(jù)需要自行選擇扇區(qū)大小。
(2)確定衰減步數(shù)(線數(shù))n。它是由前面確定的扇區(qū)大小與相鄰線間夾角共同確定的,本文兩線夾角設(shè)為0.5°。以90°扇區(qū)為例,n等于180°。
(3)確定線色并繪制。將公式(1)相對于I0進行歸一處理,并將衰減過程離散化,最后方程兩側(cè)取對數(shù),得到:
式中:tn為離散時刻;In為離散余輝亮度。
將亮度表示為顏色,以空間信息替代時間信息,則:
式中:Cn為第n條線的顏色;C0為第1條線的顏色;θn=0.5n為2條線間的夾角;kθ為單位夾角顏色衰減值,等于(Cθ-C0)/n。
所以,給定首末線顏色C0、Cθ,則扇區(qū)內(nèi)任意線顏色均可計算得出。通過設(shè)定一個循環(huán)即可完成線條繪制。表1中列出了系統(tǒng)扇區(qū)范圍、線數(shù)及線色間的對應(yīng)關(guān)系。
表1 系統(tǒng)扇區(qū)范圍線數(shù)線色對照表
(4)扇區(qū)旋轉(zhuǎn)。通過設(shè)置定時器,定期修改首線位置,使扇區(qū)不停旋轉(zhuǎn),進而實現(xiàn)雷達掃描效果。圖2展示了系統(tǒng)的兩幅P型顯示器余輝效果圖。
圖2 扇區(qū)范圍分別為90°和120°的余輝效果圖
雷達的主要功能就是對空中和地(海)面的目標(biāo)進行探測與跟蹤,本文設(shè)計了實驗?zāi)繕?biāo)跟蹤顯示圖,用于動態(tài)顯示目標(biāo)運動過程,與雷達掃描結(jié)果進行對比,以使雷達實驗結(jié)果更具有說服力。其中,目標(biāo)的產(chǎn)生、運動模擬、目標(biāo)的跟蹤顯示是仿真實現(xiàn)過程中的關(guān)鍵。
2.2.1 目標(biāo)的產(chǎn)生
(1)坐標(biāo)轉(zhuǎn)換
雷達通常以正北方向為0°,假定按逆時針方向旋轉(zhuǎn),則雷達掃描坐標(biāo)系如圖3(a)所示。目標(biāo)參數(shù)表示為(D,θ),其中D表示目標(biāo)距離,θ表示目標(biāo)方位角。而SDI視圖中極坐標(biāo)形式的邏輯坐標(biāo)系如圖3(b)所示,點的坐標(biāo)表示為(r,α),其中r表示極徑,α表示極角。
圖3 雷達掃描坐標(biāo)系與SDI視類邏輯坐標(biāo)系圖
對比2種坐標(biāo)系可以看出,距離D和極徑r是一致的,但方位角θ和極角α之間有一定的差異。因此,在生成目標(biāo)時,需將目標(biāo)方位角轉(zhuǎn)換為邏輯坐標(biāo)系中的極角。由圖中關(guān)系可知:
求出α后即可確定目標(biāo)邏輯坐標(biāo)。
(2)目標(biāo)區(qū)域
所謂目標(biāo)的區(qū)域,就是為簡化實驗系統(tǒng)且不失一般性,將目標(biāo)的活動范圍設(shè)定到某一固定的區(qū)域。本文設(shè)定雷達掃描圖最大等距圓的外切正方形區(qū)為目標(biāo)區(qū)域,邊長200 km。
(3)目標(biāo)生成
本文設(shè)計了靜止和活動2類目標(biāo),數(shù)量上限均為10個。除數(shù)量、坐標(biāo)、雷達截面積(RCS)3種靜止信息外,運動目標(biāo)還包含速度和加速度信息。其中,目標(biāo)初始坐標(biāo)信息的隨機生成是本系統(tǒng)的一個亮點。首先,在系統(tǒng)文件建立過程中,設(shè)置隨機數(shù)發(fā)生器初始函數(shù)srand;之后目標(biāo)生成時,2次調(diào)用偽隨機數(shù)發(fā)生函數(shù)rand,并將結(jié)果對200(目標(biāo)區(qū)邊長)求余以產(chǎn)生0~200間的隨機數(shù);最后,將2個隨機數(shù)各減掉100,并將結(jié)果分別賦予目標(biāo)的x和y坐標(biāo)。結(jié)合前面的討論可知,目標(biāo)初始位置可以隨機分布于目標(biāo)區(qū)的 4個象限內(nèi)。實現(xiàn)效果如圖4(a)。圖中“士”表示活動目標(biāo),“▲”代表靜止目標(biāo)。
2.2.2 目標(biāo)的運動及其跟蹤
(1)目標(biāo)運動
系統(tǒng)中設(shè)定運動目標(biāo)x和y方向各具有100~1 000 m/s的10個等間隔速度,可以根據(jù)目標(biāo)數(shù)量分別賦予不同序號的目標(biāo)。為將問題簡化,所有目標(biāo)加速度初始化為0,即目標(biāo)均做勻速運動。當(dāng)其運動到目標(biāo)區(qū)邊緣時,相應(yīng)坐標(biāo)速度進行取反處理,以達到運動不間斷的目的。
(2)目標(biāo)的跟蹤與顯示
一方面,隨著目標(biāo)的建立,實驗?zāi)繕?biāo)跟蹤視圖始終保持著目標(biāo)的顯示。通過定時器,每2 s進行一次目標(biāo)位置更新,固定目標(biāo)位置不做更新,運動目標(biāo)坐標(biāo)為:
式中:(x1,y1)為目標(biāo)當(dāng)前坐標(biāo)值;(x0,y0)為上一次目標(biāo)停留坐標(biāo);vx,vy分別為2個坐標(biāo)方向的速度。
圖4(b)展示了經(jīng)過2 min 10 s后的目標(biāo)位置分布。
另一方面,雷達掃描視圖中,首先使用系統(tǒng)PtInRegion函數(shù)判斷目標(biāo)是否在扇區(qū)內(nèi),如果判斷有目標(biāo),則根據(jù)坐標(biāo)公式(5)和變換公式(4)進行目標(biāo)顯示。當(dāng)扇區(qū)經(jīng)過目標(biāo)后,停止該目標(biāo)的顯示,如圖4(c)所示。
對比圖4中(a)、(b)可以發(fā)現(xiàn),活動目標(biāo)位置發(fā)生改變,靜止目標(biāo)位置則未發(fā)生變化。對比圖4中(b)、(c)可以看出,量程90 km,120°的雷達 P 型顯示器掃描扇區(qū)內(nèi)標(biāo)識出存在的4個目標(biāo),扇區(qū)外目標(biāo)未被標(biāo)識,符合系統(tǒng)設(shè)計要求。
圖4 限定區(qū)域內(nèi)實驗?zāi)繕?biāo)分布及對應(yīng)的掃描結(jié)果圖
2.3.1 系統(tǒng)參數(shù)調(diào)整
實驗系統(tǒng)的主要參數(shù)包括雷達參數(shù)、環(huán)境/目標(biāo)參數(shù)和對抗實驗參數(shù),其設(shè)置過程主要由初始化設(shè)置和運行時調(diào)整兩部分組成。
初始化設(shè)置較為簡單,通過調(diào)用OnInitialUpdate函數(shù),在視圖類首次連接到文檔時,使用文檔中的數(shù)據(jù)對象對視類數(shù)據(jù)進行初始化。
運行時調(diào)整則較為復(fù)雜,為方便用戶操作,本文采用屬性表(CPropertySheet)結(jié)構(gòu)設(shè)計了參數(shù)設(shè)置表CSetSheet。系統(tǒng)根據(jù)用戶的不同請求,修改“全部參數(shù)”、“雷達參數(shù)”、“環(huán)境/目標(biāo)參數(shù)”、“對抗實驗參數(shù)”等加載標(biāo)記,再根據(jù)標(biāo)記為設(shè)置表添加不同的參數(shù)設(shè)置頁,進而實現(xiàn)“全部參數(shù)設(shè)置”和“單一參數(shù)設(shè)置”2種模式。圖5展示了“全部參數(shù)設(shè)置”模式下的雷達參數(shù)設(shè)置頁截圖。
2.3.2 系統(tǒng)數(shù)據(jù)的傳遞
其一,由于雷達P顯、系統(tǒng)參數(shù)、實驗?zāi)繕?biāo)跟蹤3個視類共享同一文檔類中的數(shù)據(jù)對象,所以調(diào)用SDI程序中視類成員函數(shù)GetDocument即可獲得系統(tǒng)文檔類的指針pDoc,使用該指針即可實現(xiàn)文檔與視圖、視圖與視圖之間的數(shù)據(jù)傳遞。
其二,用戶通過觸發(fā)參數(shù)設(shè)置請求,在參數(shù)設(shè)置類與雷達P顯視類之間建立關(guān)聯(lián),通過賦值方式實現(xiàn)二者間的數(shù)據(jù)傳遞。再利用文檔指針pDoc調(diào)用文檔類中的UpdateAllViews函數(shù),實現(xiàn)其他視類的數(shù)據(jù)更新。
2.3.3 系統(tǒng)數(shù)據(jù)的顯示
通過前面的討論可知,系統(tǒng)數(shù)據(jù)顯示主要分為3個部分:首先,雷達參數(shù)、環(huán)境參數(shù)、目標(biāo)個數(shù)等信息通過文本形式在系統(tǒng)參數(shù)視圖中顯示;其次,目標(biāo)位置信息分別在實驗?zāi)繕?biāo)跟蹤視圖和雷達P顯視圖中以圖標(biāo)進行標(biāo)示;最后,目標(biāo)位置坐標(biāo)、系統(tǒng)量程、運行時間等以文本形式在狀態(tài)欄中輸出,具體情況參照圖4、圖6。
圖5 全部參數(shù)設(shè)置模式下雷達參數(shù)設(shè)置圖
所謂SDI程序,就是在這樣的應(yīng)用程序中,只使用一個文檔和一種視圖類型,并且對這些類只分別實例化一個對象。
與之相反的是多文檔界面(MDI)程序,它允許同時操作多個文檔,可以有多個子窗口。鑒于只包含一個文檔和MDI文檔管理的復(fù)雜性,本文采用SDI。設(shè)想將系統(tǒng)運行參數(shù)、參照目標(biāo)同時顯示在一個窗體內(nèi),實驗對比效果更加明顯,系統(tǒng)將更加逼真,因此需要對SDI程序進行窗體分割。
圖6 雷達實驗系統(tǒng)暫停狀態(tài)界面圖
本文采用靜態(tài)拆分法,向原有工程中添加實驗?zāi)繕?biāo)視類和系統(tǒng)參數(shù)視類,分別用于顯示目標(biāo)跟蹤圖和系統(tǒng)參數(shù),通過重寫主框架類CMainFrame中的OnCreateClient函數(shù),利用CSplitterWnd對象達到一個窗體切分顯示多視窗口的目的,其效果與圖1中的構(gòu)想一致。
根據(jù)SDI程序菜單及工具欄設(shè)計的方法,利用VC++6.0開發(fā)平臺提供的擴展接口,可以較方便地得到圖1所示的各種菜單項(含快捷菜單)和工具按鈕。通過將某一菜單項和工具欄中的按鈕設(shè)定相同的ID標(biāo)識,可以實現(xiàn)二者的關(guān)聯(lián)并最終完成相同的任務(wù)。
然而在系統(tǒng)建立、運行和停止、退出過程中,菜單(按鈕)間的相互關(guān)系及其狀態(tài)需要不斷發(fā)生變化,這也是系統(tǒng)終端設(shè)計與實現(xiàn)過程中解決的另一個主要問題。
例如:系統(tǒng)建立初期需要進行“參數(shù)設(shè)置”,運行時則“參數(shù)設(shè)置”按鈕不可用,“運行”按鈕也將失效,系統(tǒng)“暫停/停止”運行后,“參數(shù)設(shè)置”等按鈕再次有效。其邏輯關(guān)系如表2所示。其中“1”表示按鈕可用,“0”表示按鈕不可用,系統(tǒng)其他按扭使能過程相類似。
表2 系統(tǒng)狀態(tài)與按鈕使能關(guān)系表
根據(jù)系統(tǒng)設(shè)計想定,結(jié)合前面的討論,對系統(tǒng)界面各部分加以整合,最終得到了系統(tǒng)調(diào)試和發(fā)布兩個版本的可執(zhí)行程序。程序運行結(jié)果如圖6所示,其編譯、調(diào)試環(huán)境為:Pentium 4(CPU:3.0 GHz,顯卡:GeForce FX 5200)PC機,Window s XP系統(tǒng),Visual C++6.0開發(fā)平臺。
本文討論了基于VC++SDI設(shè)計雷達實驗系統(tǒng)人機交互終端的方法,提出了用可變扇形區(qū)畫線法實現(xiàn)P型顯示器的余輝效果,完成了相關(guān)功能設(shè)計與仿真實現(xiàn),其可執(zhí)行文件能脫離VC++環(huán)境單獨運行。結(jié)果表明:該終端操作界面美觀,操作簡便,實驗對比效果直觀,可移植性強,達到了設(shè)計要求與仿真目的。該系統(tǒng)為雷達實驗系統(tǒng)整體實現(xiàn)打下了良好的基礎(chǔ),具有較高的實用價值。
[1] 湯禮建,黃建沖,章桂永.脈沖壓縮多普勒雷達信號處理系統(tǒng)仿真[J].艦船電子對抗,2008,31(3):37-40.
[2] 王小光,唐宏,高山,等.基于Simulink的機載 PD雷達系統(tǒng)的建模與仿真[J].航空計算技術(shù),2007,37(5):77-79.
[3] 李軍.基于SystemView的雷達測距系統(tǒng)設(shè)計與實現(xiàn)[J].實驗室研究與探索,2009,28(6):207-209.
[4] 張劍,楊雷,董曉明.基于OpenGL的雷達顯示器仿真[J].中國艦船研究,2009,4(5):71-74.
[5] 劉焱,張宏偉,曹成俊.基于 Visual C++和 OpenGL的具有余輝效果的P型雷達顯示器仿真[J].科學(xué)技術(shù)與工程,2009,9(10):2751-2754.
[6] 齊越.基于計算機的雷達顯示系統(tǒng)設(shè)計[D].大連:大連海事大學(xué),2008.
[7] David Simon,周瑜平.Visual C++6編程寶典[M].北京:電子工業(yè)出版社,2005.
[8] 羅斌.Visual C++編程技巧精選集[M].北京:中國水利水電出版社,2008.