剡熠琛 李雅梅 拜兵虎
(西安電子工程研究所 西安 710100)
某跟蹤雷達(dá)作為某武器系統(tǒng)中的一個(gè)單體,與其他單體之間通過CAN總線進(jìn)行通信,因?yàn)榭偩€上單體較多,CAN總線分配給雷達(dá)的只有兩幀數(shù)據(jù)。在雷達(dá)樣機(jī)研制以及調(diào)試過程中,涉及到信號處理、微波前端、伺服系統(tǒng)等多個(gè)分機(jī),為了能夠在雷達(dá)調(diào)試過程中及時(shí)發(fā)現(xiàn)問題、解決問題,僅用兩幀CAN內(nèi)容是不夠的,額外增加CAN命令可能增加總線負(fù)擔(dān)、引起系統(tǒng)混亂。
因此,為了兼顧雷達(dá)單體調(diào)試以及武器系統(tǒng)通訊鏈路的穩(wěn)定,雷達(dá)樣機(jī)研制中,在滿足總體CAN總線通訊要求的基礎(chǔ)上增加了網(wǎng)絡(luò)通訊方式,調(diào)試顯控終端需要同時(shí)具備這兩種通訊方式的命令下發(fā)及狀態(tài)采集。
此外,為了便于調(diào)試過程中的雷達(dá)狀態(tài)分析,調(diào)試終端具備數(shù)據(jù)分析功能也尤為重要。對于該雷達(dá)系統(tǒng)而言,首先,需要對雷達(dá)狀態(tài)、雷達(dá)跟蹤數(shù)據(jù)、伺服編碼及全量數(shù)據(jù)進(jìn)行解析;其次,在系統(tǒng)聯(lián)調(diào)時(shí),搜索雷達(dá)通過CAN總線將目標(biāo)信息發(fā)送給跟蹤雷達(dá),導(dǎo)引跟蹤雷達(dá)完成對目標(biāo)的截獲和跟蹤。由于調(diào)試中受雷達(dá)擺放位置的影響,經(jīng)常需要對導(dǎo)引角度做修正。因此在聯(lián)調(diào)時(shí),需要對導(dǎo)引精度進(jìn)行分析,以便偏差較大時(shí)能夠進(jìn)行修正;最后,跟蹤雷達(dá)作為武器系統(tǒng)的重要組成部分,其跟蹤精度直接影響了整個(gè)武器系統(tǒng)的作戰(zhàn)效能,因此在終端中進(jìn)行動(dòng)飛精度分析,是非常必要的。
我們希望設(shè)計(jì)一款調(diào)試軟件,能夠同時(shí)實(shí)現(xiàn)上述功能,即集雷達(dá)控制、狀態(tài)顯示及數(shù)據(jù)分析功能于一體。Matlab是一款功能強(qiáng)大的科研軟件,具有豐富的信號處理工具、強(qiáng)大的數(shù)據(jù)計(jì)算能力與實(shí)時(shí)繪圖功能,而且編程非常簡單,此外Matlab也有自己的界面設(shè)計(jì)模塊——用戶圖形界面(Graphical User Interface,GUI),GUI模塊可方便設(shè)計(jì)出圖形用戶界面。適用于在雷達(dá)總站調(diào)試過程中實(shí)現(xiàn)數(shù)據(jù)分析、控制、顯示等融為一體的軟件設(shè)計(jì)[1-2]。本文將借助Matlab GUI來實(shí)現(xiàn)該雷達(dá)的調(diào)試顯控終端設(shè)計(jì)。
根據(jù)雷達(dá)調(diào)試需求,為了Matlab GUI界面的清晰簡潔與操作簡便,可將其主要功能分為UDP網(wǎng)絡(luò)通訊模塊、CAN指令控制模塊、網(wǎng)絡(luò)指令控制模塊、雷達(dá)狀態(tài)顯示模塊、目標(biāo)信息顯示模塊、目標(biāo)AR顯示模塊、數(shù)據(jù)錄取模塊、數(shù)據(jù)分析模塊。組成框圖如圖1所示。
圖1 軟件組成框圖
Matlab中創(chuàng)建GUI界面通常有兩種方式:一是使用m文件直接動(dòng)態(tài)添加控件,利用程序編寫產(chǎn)生對象(如uicontrol、uimenu)來開發(fā)GUI界面;二是通過Matlab自帶的GUIDE來快速建立GUI對象,事件處理的代碼可以再m文件中進(jìn)行編寫,需修改程序代碼時(shí)可快捷地在m文件中修改[3]。顯然第二種可視化編輯方法更適合編寫設(shè)計(jì)大型程序。本文中選擇第二種方法對調(diào)試顯控終端進(jìn)行設(shè)計(jì)。使用GUIDE來建立GUI的設(shè)計(jì)過程如下:
1)在Matlab命令行窗口中輸入GUIDE、或者從菜單欄新建app選擇GUIDE創(chuàng)建GUI界面文件,新建且保存后,會生成相應(yīng)的fig文件和m文件。
2)可以通過在命令行輸入guide+文件名.fig進(jìn)入編輯界面,可以在編輯界面中按照程序功能設(shè)計(jì)將所需要的控件添加到編輯界面中。常用控件有按鈕(Pushbutton)、彈出式菜單(Popup Menu)、坐標(biāo)軸(Axes)、復(fù)選框(CheckBox)、可編輯文本框(Edit Text)、靜態(tài)文本(Static Text)、面板(Panel)等。
3)每一個(gè)控件都有自己的屬性,可以在編輯界面中雙擊該控件進(jìn)入屬性編輯器來設(shè)置或修改控件屬性,包括控件的名稱(Name)、文本(String)、標(biāo)簽(Tag)、位置(Position)、使能狀態(tài)(Enable)、回調(diào)函數(shù)(Callback)等各種屬性。在m文件中可以通過使用set、get等函數(shù)來設(shè)置和獲取控件屬性值。
4)回調(diào)函數(shù)(Callback)是連接界面和整個(gè)程序系統(tǒng)的實(shí)質(zhì)性功能紐帶,利用回調(diào)函數(shù)實(shí)現(xiàn)Matlab GUI界面與數(shù)據(jù)計(jì)算的相互交互。編輯某控件回調(diào)函數(shù)時(shí),右擊該控件,在彈出菜單中點(diǎn)擊Callback子菜單,激活系統(tǒng)自動(dòng)生成的hName_Callback(hObject,eventdata,handles)函數(shù),hName表示該控件的Tag屬性,hObject表示當(dāng)前控件的的句柄。在該回調(diào)函數(shù)下完成相應(yīng)的功能程序編寫即可。
5)在界面設(shè)計(jì)完畢后,可以對程序進(jìn)行封裝。首先在Matlab命令行窗口輸入deploytool,按下回車后彈出窗口,選擇第一項(xiàng)“Application Compiler”。在打開的窗口里,點(diǎn)擊“加號”,選擇打開要生成exe文件的代碼,然后選中Runtime included in package,最后點(diǎn)擊Package按鈕,完成打包,生成可執(zhí)行exe文件。
該雷達(dá)與調(diào)試終端之間通過UDP網(wǎng)絡(luò)進(jìn)行通訊。利用Matlab進(jìn)行UDP通信的主要程序指令如下:
1)新建UDP對象與連接
u1=udp(remote_ip); %新建一個(gè)udp通信對象
set(u1,‘RemotePort’,remote_port);
set(u1,‘LocalHost’,local_ip);
set(u1,‘LocalPort’,local_port);
set(u1,‘DatagramReceivedFcn’,{@udp_read,handles});
fopen(u1); %打開終端與雷達(dá)之間的網(wǎng)絡(luò)連接
2)通過UDP發(fā)送信息和讀取
fwrite(u1,data _frame,‘uint8’); %發(fā)送
num=u1.BytesAvailable;
udp_read_buf=fread(u1,num,‘uint8’); %讀取
3)關(guān)閉UDP
fclose(u1);
delete(u1);
為了雷達(dá)調(diào)試的便捷性,這里借助通用計(jì)算機(jī)外設(shè)CANET-2E-U將CAN-bus數(shù)據(jù)轉(zhuǎn)換為以太網(wǎng)數(shù)據(jù),CANET-2E-U設(shè)備具有一路10M/100M/1000M自適應(yīng)以太網(wǎng)接口,2路CAN-bus接口, 實(shí)現(xiàn)CAN-bus網(wǎng)絡(luò)和以太網(wǎng)網(wǎng)絡(luò)互連互通。在接入該設(shè)備后,雷達(dá)調(diào)試時(shí)的拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 拓?fù)鋱D
調(diào)試終端通過該設(shè)備可以將CAN命令通過UDP幀發(fā)送出去。一個(gè)UDP幀可以包含若干CAN幀(最多40個(gè),最少1個(gè)),一個(gè)CAN幀包含13個(gè)字節(jié),CAN幀數(shù)據(jù)格式如圖3所示。
圖3 CAN幀格式示意圖
其中:Byte1用于標(biāo)識該CAN幀的類型和長度;Byte2~Byte5用于表示該CAN幀的幀ID;Byte6~Byte13表示CAN幀內(nèi)容。在調(diào)試界面CAN指令控制模塊程序編寫的時(shí)候,只需在回調(diào)函數(shù)中將協(xié)議中的CAN指令內(nèi)容轉(zhuǎn)換為圖3格式,便可以通過UDP幀將CAN指令發(fā)送出去。
該雷達(dá)的數(shù)據(jù)分析主要包括雷達(dá)狀態(tài)、雷達(dá)跟蹤數(shù)據(jù)、伺服編碼及全量的解析,導(dǎo)引精度分析,動(dòng)態(tài)檢飛精度分析等。對于雷達(dá)狀態(tài)、雷達(dá)跟蹤數(shù)據(jù)、伺服編碼及全量、導(dǎo)引精度分析而言,不涉及過多運(yùn)算,按照協(xié)議對相應(yīng)參數(shù)進(jìn)行解析,再按照需求進(jìn)行一些計(jì)算即可。動(dòng)態(tài)檢飛精度分析中涉及到數(shù)據(jù)插值、時(shí)間對準(zhǔn)、坐標(biāo)系轉(zhuǎn)換[4-5]等,較為復(fù)雜。
本小節(jié)中主要對動(dòng)態(tài)檢飛精度分析的實(shí)現(xiàn)進(jìn)行說明。圖4為動(dòng)態(tài)檢飛精度分析流程圖,其具體步驟如下:
圖4 精度分析流程圖
1)步驟1:獲取雷達(dá)站心位置數(shù)據(jù),目標(biāo)靶機(jī)GPS軌跡數(shù)據(jù),雷達(dá)探測到的目標(biāo)數(shù)據(jù),雷達(dá)車體的姿態(tài)數(shù)據(jù)等。其中,雷達(dá)站心數(shù)據(jù),目標(biāo)軌跡數(shù)據(jù)主要包括時(shí)間、經(jīng)度、緯度、高度等信息,該數(shù)據(jù)基于大地坐標(biāo)系,可標(biāo)記為LLA(Longtitude、Latitude、Altitude)坐標(biāo);車體姿態(tài)數(shù)據(jù)包括橫滾角、縱搖角、偏航角;雷達(dá)觀測數(shù)據(jù)包含距離、方位角、俯仰角,該數(shù)據(jù)基于雷達(dá)極坐標(biāo)。
2)步驟2:步驟1中獲取的四組數(shù)據(jù)采樣率不同,為了精度分析的準(zhǔn)確性,需要將數(shù)據(jù)進(jìn)行插值、平滑濾波處理,然后將四組數(shù)據(jù)的時(shí)間進(jìn)行對齊,以便于做出更加客觀準(zhǔn)確的對比。
3)步驟3:將LLA坐標(biāo)下的雷達(dá)站心數(shù)據(jù)和目標(biāo)軌跡數(shù)據(jù)轉(zhuǎn)換到地心地固直角坐標(biāo)系,標(biāo)記為ECEF(Earth-Centered Earth-Fixed)坐標(biāo),然后旋轉(zhuǎn)平移得到目標(biāo)相對于雷達(dá)站心東北天(East-North-Up,ENU)直角坐標(biāo)系下的數(shù)據(jù),最后將數(shù)據(jù)轉(zhuǎn)換到ENU極坐標(biāo)系。
4)步驟4:將雷達(dá)極坐標(biāo)下的雷達(dá)觀測數(shù)據(jù)轉(zhuǎn)換到直角坐標(biāo),再通過旋轉(zhuǎn)將其轉(zhuǎn)到ENU直角坐標(biāo)系下,最后將數(shù)據(jù)轉(zhuǎn)換到ENU極坐標(biāo)系。
5)步驟5:通過步驟3和步驟4的坐標(biāo)系轉(zhuǎn)換操作,已將目標(biāo)真值數(shù)據(jù)和雷達(dá)觀測數(shù)據(jù)轉(zhuǎn)換到同一坐標(biāo)系下,即可對受檢雷達(dá)的檢飛精度進(jìn)行計(jì)算,得到精度分析結(jié)果。
雷達(dá)調(diào)試顯控終端的設(shè)計(jì),其控件組織要簡潔、合理,且操作使用要方便。最終設(shè)計(jì)的該雷達(dá)調(diào)試顯控終端界面如圖5所示。
圖5 調(diào)試顯控終端界面
1)UDP通信模塊:采用“終端網(wǎng)絡(luò)”復(fù)選框控件,當(dāng)選中“終端網(wǎng)絡(luò)”復(fù)選框后,回調(diào)函數(shù)會按照預(yù)先設(shè)置好的IP地址、端口號打開UDP網(wǎng)絡(luò),雷達(dá)與終端之間開始有數(shù)據(jù)交互,取消選中“終端網(wǎng)絡(luò)”復(fù)選框時(shí),該UDP網(wǎng)絡(luò)斷開,數(shù)據(jù)傳輸中斷。
2)網(wǎng)絡(luò)指令控制模塊:當(dāng)按下“發(fā)送”按鈕時(shí),回調(diào)函數(shù)會調(diào)用get函數(shù)從各交互控件中獲取用戶設(shè)置雷達(dá)參數(shù),然后按照通信協(xié)議格式使用UDP協(xié)議將設(shè)置的參數(shù)打包發(fā)送給雷達(dá)信號處理機(jī)。按下“模擬”按鈕時(shí),會將目標(biāo)模擬設(shè)置的參數(shù)下發(fā)給雷達(dá)信號處理機(jī)。
3)CAN指令控制模塊:按下相應(yīng)功能的控件,回調(diào)函數(shù)會按照CAN協(xié)議將CAN幀轉(zhuǎn)換為圖3格式發(fā)送給信號處理機(jī)。
4)雷達(dá)狀態(tài)、目標(biāo)信息、AR顯示模塊:主要采用可編輯文本框和坐標(biāo)軸控件,當(dāng)終端網(wǎng)絡(luò)連通后,回調(diào)函數(shù)會實(shí)時(shí)讀取雷達(dá)信號處理機(jī)回報(bào)的數(shù)據(jù),并按照協(xié)議對其進(jìn)行解析,調(diào)用set函數(shù)將其回報(bào)內(nèi)容顯示在調(diào)試終端上。
5)數(shù)據(jù)錄取模塊:選擇存儲路徑后,點(diǎn)擊“存儲”按鈕,就開始實(shí)時(shí)錄取雷達(dá)回報(bào)的數(shù)據(jù),點(diǎn)擊“停止”按鈕,停止存儲。
6)數(shù)據(jù)分析模塊:菜單欄中的“導(dǎo)引精度分析”、“CAN數(shù)據(jù)分析”和“動(dòng)飛精度分析”是對錄取的雷達(dá)數(shù)據(jù)進(jìn)行分析的模塊,當(dāng)選中這三個(gè)菜單時(shí),會彈出三個(gè)子界面。圖6為導(dǎo)引精度分析子界面,圖7為CAN數(shù)據(jù)分析子界面,圖8為動(dòng)態(tài)檢飛精度分析子界面。按下“文件選擇”按鈕選擇錄取的數(shù)據(jù)文件,回調(diào)函數(shù)會對該錄取數(shù)據(jù)進(jìn)行解析,按下參數(shù)顯示控件,會對相應(yīng)參數(shù)進(jìn)行計(jì)算并繪圖輸出。
圖6 導(dǎo)引精度分析子界面圖
圖7 CAN數(shù)據(jù)分析子界面
圖8 動(dòng)態(tài)檢飛精度分析子界面
目前該調(diào)試顯控終端已經(jīng)應(yīng)用到了該雷達(dá)總站調(diào)試中,為發(fā)現(xiàn)問題、分析問題、解決問題提供了有力支持。正常工作時(shí)的調(diào)試終端主界面如圖9所示??刂浦鹘缑孀筮叺膮?shù),雷達(dá)會響應(yīng)終端下發(fā)的指令,右邊顯示欄會發(fā)生相應(yīng)變化。
圖9 調(diào)試終端主界面
圖10為某次調(diào)試過程中自檢狀態(tài)下的方位路幅度,圖10中可見其幅度為97,而正常工作時(shí)自檢狀態(tài)下,和路、方位路、俯仰路幅度均應(yīng)該在115左右,由此可見方位路信號有大幅衰減,通過分析查找發(fā)現(xiàn)方位路有一處線纜不通,整改之后幅度恢復(fù),雷達(dá)自檢正常。
圖10 自檢方位路幅度
某次跟飛試驗(yàn)中,為了跟飛過程中導(dǎo)引的準(zhǔn)確性,在雷達(dá)站標(biāo)定完成后,對一組數(shù)據(jù)進(jìn)行導(dǎo)引精度分析,結(jié)果如圖11、圖12所示。圖11為距離導(dǎo)引精度,圖12為角度導(dǎo)引精度??筛鶕?jù)圖11的距離導(dǎo)引誤差對其距離進(jìn)行修正。由圖12可見,俯仰誤差較大,在標(biāo)定準(zhǔn)確的前提下,出現(xiàn)大誤差是不合理的,通過分析發(fā)現(xiàn)跟蹤雷達(dá)俯仰零位沒進(jìn)行標(biāo)定,重新標(biāo)完零位后,導(dǎo)引精度在正常范圍。
圖11 距離導(dǎo)引精度圖
圖12 角度導(dǎo)引精度
某次跟飛試驗(yàn)中,利用圖8子界面對跟蹤雷達(dá)的檢飛精度進(jìn)行分析,在Y軸數(shù)據(jù)選擇欄選擇方位誤差,得到方位精度分析結(jié)果如圖13所示。選擇俯仰誤差和距離誤差同樣會出現(xiàn)相應(yīng)精度分析結(jié)果,這里不再羅列。
圖13 方位精度分析結(jié)果
基于Matlab GUI的界面設(shè)計(jì),編程簡單,開發(fā)快速、且界面友好,而且Matlab自身強(qiáng)大的數(shù)據(jù)處理能力和繪圖功能有助于數(shù)據(jù)分析[6]。在調(diào)試顯控界面中集成了主要的總站調(diào)試功能,能夠?yàn)榉治鰡栴}和系統(tǒng)改進(jìn)提供有力支持,可以大幅提高雷達(dá)的調(diào)試效率,有一定的實(shí)際工程意義。