程耀,謝華,許康恒,王宇飛,沈全成
(上海航天電子技術研究所,上海 201109)
由于武器控制臺中心P 顯的顯示受顯示區域的限制,屏幕上有時無法清晰觀察到某一特定方向上密集型目標群的運動情況[1]。基于此,該課題開發的偏心P 顯可擴大艦艇周圍某一特定方向的瞭望范圍,可將雷達視頻的掃描中心移動到屏幕上的非幾何中心位置,方位刻度盤及其他顯示元素也隨偏心的位置變化而變化[2]。同時該課題借助VxWorks 平臺和Qt 技術,使得系統具有更好的可靠性、卓越的實時性,開發的應用軟件具有模塊化、移植性強的特點,結構簡明,編寫難度較小[3]。
該課題的武器控制臺作為武器作戰系統的信息處理和控制中心,通過網絡接口與雷達、光電跟蹤設備、導彈發射設備、其他輔助設備連接,完成命令、狀態等信息交互[4]。雷達通過網絡接口轉發穩跟的目標信息至武器控制臺,通過FC 光纖接口轉發雷達視頻信息至武器控制臺;然后武器控制臺中的信息處理軟件依據目標信息進行模型分析,算法解析,分析目標屬性,將顯示信息通過消息隊列的通信方式送至顯示控制軟件進行實時顯示[5];雷達視頻轉發至武器控制臺內的視頻接口/處理板進行視頻信息處理,然后通過綜顯板的視頻與圖層疊加技術,顯示控制軟件,再通過封裝好的中間件,調用相關對視頻處理的API 函數,完成雷達視頻與圖形化人機交互界面疊加實時顯示。武器控制臺功能結構框圖如1所示。

圖1 武器控制臺功能結構框圖
武器控制臺的偏心P 顯依據當前艦艇的航向和通過雷達而獲得的目標位置及其運動情況、雷達原始視頻信號、光電跟蹤設備方位等信息,然后圖形化顯示,通過這種直觀有效的方式呈現給操作手,便于掌握目標特性,進而采取最優火力打擊策略。顯示元素包括艦艇航向標識、光電跟蹤設備方位、目標圖符及其運動軌跡、雷達視頻(含視頻掃描線)、方位刻度盤等。武器控制臺中心P顯顯示示意圖如圖2所示。

圖2 武器控制臺中心P顯顯示示意圖
該課題偏心P 顯的實現,首先,通過VxWorks 操作系統強實時,強可靠性的特點,保證顯示控制軟件開發的穩定平臺,然后,依托Qt 豐富的跨平臺C++圖形用戶界面庫[6-7],功能模塊化設計,元素可重用設計。將整個偏心P 顯系統功能模塊層次化設計[8],將軟件分為主模塊和子模塊,主模塊用于控制子模塊運行,并完成子模塊之間的數據調度等工作,包含初始化模塊、管理模塊和維護更新模塊。初始化模塊完成子模塊的聲明和主要全局變量的初始化;管理模塊確定子模塊功能內容,并將子模塊輸入/輸出連接,實現子模塊間信息交互;維護更新模塊使主模塊具備一定的適應性,提高系統自適應性[9]。
子模塊完成具體功能并接收外部輸入信號等,通過模塊內部的過程運行,將運行結果輸出至外部,同時模塊擁有自身的知識庫,使其更加具有可維護性、自適應性。模塊的內部運行受控于知識庫的作用,接收知識庫的參數和方法,同時過程運行結果也會反饋至知識庫,一方面,可以判斷過程運行的結果的正確與否,并優化模塊輸出結果,另一方面,更新知識庫參數等信息,以此不斷提升模塊性能,使系統更加具有智能性。模塊結構示意圖如圖3 所示。

圖3 模塊運行內部示意圖
該課題的軟件功能實現基于良好的軟件設計架構,創建了一個主窗口繼承于QDialog 的控件類,然后創建一個繼承于QWidget 的控件類作為P 顯窗口類,再創建若干繼承于QWidget 的子控件類[10],如艦首標識類、移動目標圖符類、光電標識類等。P 顯窗口類對象作為主窗口的子窗口,子控件類對象作為子窗口顯示元素。
該課題偏心P 顯采用多圖層疊加技術,通過面向對象編程語言的繼承性、多態性特征,創建P 顯窗口類不同屬性的對象子窗口,然后疊加顯示,合理分層,合理分配界面顯示元素和功能,簡化功能模塊復雜性,優化程序代碼可讀性,使得軟件系統簡單,結構清晰,軟件的重復利用率提升[11]。該課題偏心P 顯分圖層疊加顯示示意圖如圖4 所示。

圖4 偏心P顯分圖層疊加顯示示意圖
PPI 頂圖層和PPI 圖層均為透明圖層,PPI 頂圖層顯示P 顯方位刻度盤和響應鼠標單擊信號事件,并連接主窗口槽函數,同時響應主窗口發來的偏心顯示信號;PPI 圖層顯示P 顯距離環、艦首指示、光電指示、目標指示,響應主窗口發來的輸入事件(如偏心顯示、中心顯示、距離環顯示等信號)[12];雷達視頻圖層負責開窗并顯示雷達視頻信息,接收主窗口發來的設置視頻圓周位置、中心和半徑及掃描線屬性等命令信息。
PPI 頂圖層和PPI 圖層同屬P 顯窗口控件類,通過類的創建函數create(QWidget *parent,quint16 x,quint16 y,quint16 w,quint16 h,quint16 r,quint8 type),指定父窗口、顯示位置和大小信息,以及創建類型[13]。PPI 頂圖層方位刻度盤偏心狀態的實現如圖5所示。o(centerx,centery)為中心顯示的中心點,o′(centerx′,centery′)為偏心顯示的中心點。偏心中心的位置是通過鼠標獲取當前窗口光標指示的位置確定的。方位刻度盤的實現借助于Qt 的QPainter 類功能,通過translate()函數,實現對繪圖窗口坐標原點的重新定義,將繪圖中心點o作為直角坐標系原點(0,0),然后通過rotate(int angle)函數對繪圖進行特定角度旋轉,完成中心P 顯及偏心P 顯的方位刻度盤的繪制。

圖5 偏心P顯方位刻度盤實現邏輯示意圖
中心P 顯顯示時,根據圓形P 顯半徑像素點r,繪制00方位刻度值painter.drawText(0,r,tr("00"));再通過根據方位刻度盤分度值,進行rotate(Angle)旋轉繪制其他刻度值,進而完成整個中心P 顯的刻度值繪制。偏心P 顯時,已知新中心點o′(centerx′,centery′)的坐標值和偏心P 顯方位刻度的值,如繪制方位100和1900刻度,以圖可知y=kx+b的k=tan(10),b=centery′-tan(10)·centerx′,而圓形P 顯的圓的方程為(x-centerx)2+(y-centery)2,依據直線和圓方程算出偏心P 顯下100和1900的窗口坐標(xo′,yo′)和(xo″,yo″),再已知中心o(centerx,centery)算出旋轉角度α和β,依據中心P 顯方位刻度盤的實現方式,完成偏心P 顯下方位刻度盤的繪制[14]。
PPI 圖層主要完成自身距離環的繪制以及自定義子控件對象的顯示(艦首標識、光電標識,目標圖符等界面元素),繪畫區域限制為圓形區域,通過Qt 的QRegion(x,y,w,h,QRegion::Ellipse)類完成圓形繪圖區域的指定和限制,偏心P 顯狀態下,通過o(centerx,centery)和o′(centerx′,centery′)計算出兩點之間距離d,進而測算出偏心P 顯半徑像素點r′=r+d,如圖6 所示。

圖6 偏心P顯距離環的實現邏輯示意圖
目標指示、艦首指示、光電指示等界面元素均屬于PPI圖層子控件對象,在創建界面元素子控件時[15],通過創建子控件類對象create(QWidget *parent,quint16 w,quint16 h,quint16 centerx,quint16 centery,QString str)傳遞繪圖區域中心位置、繪圖半徑等信息給子控件實例對象,然后子控件本身完成繪制工作并實時動態刷新顯示。信息處理軟件將艦首航向角度和光電跟蹤設備方位值發至顯示控制軟件,顯控軟件根據偏心中心點位置和當前繪圖區域半徑,繪制艦首航向指示和光電跟蹤方位指示。
目標指示的顯示將根據目標方位、距離實時換算出在偏心P 顯狀態下繪圖區域的像素點,創建P 顯目標庫,每次刷新顯示時首先判斷目標庫是否存在相同目標批號的目標moving_target,若存在,則更新該目標歷史點跡數,否則在目標庫創建新目標moving_target,并保存該目標的歷史點跡;當顯示控制軟件未收到目標庫內某一批號目標時,刪除該目標及其歷史點跡數。偏心P 顯下目標指示的移動換算示意圖如圖7 所示。

圖7 偏心P顯目標指示移動邏輯示意圖
顯示控制軟件對雷達視頻圖層的控制是通過中間件控制,主窗口通過PPI 頂圖層鼠標點跡事件獲取偏心P 顯中心位置o′(centerx′,centery′)和PPI 圖層的偏心P 顯半徑r′,然后開雷達視頻窗口,并傳遞中心位置和半徑參數至綜顯板,對雷達視頻圖層進行控制操作[16]。
該課題經過良好的軟件架構設計和位置信息與坐標映射關系的計算,完成了基于VxWorks 平臺和Qt 技術的偏心P 顯功能的實現,并在艦艇武器型號應用中得到穩定測試,功能可靠,實時性強,具備良好的人機交互功能。通過點擊主窗口的偏心顯示功能按鈕,啟動偏心P 顯功能,在通過鼠標點擊事件時,確定光標所在窗口位置為新的中心點,以此實現偏心P 顯功能。中心P 顯和偏心P 顯軟件實現效果圖如圖8 所示。

圖8 武器控制臺雷達顯示實現效果圖
該課題偏心P 顯通過良好軟件架構的頂層設計,借助VxWorks 操作系統高可靠性、強實時性的開發平臺和Qt 全面、豐富的藝術級應用界面開發庫來實現。開發實現了友好、便捷的人機交互界面,使得武器控制臺顯控系統具有更強的兼容性和擴展性,縮短了開發周期,方便系統的升級和維護。