王欣 陶杰 張弛 王文娟
(軍械工程學(xué)院,河北石家莊 050003)
基于Labview的空情接收系統(tǒng)
王欣 陶杰 張弛 王文娟
(軍械工程學(xué)院,河北石家莊 050003)
LabVIEW是NI公司開(kāi)發(fā)的圖形化編程開(kāi)發(fā)平臺(tái),具備強(qiáng)大的實(shí)時(shí)數(shù)據(jù)處理功能與顯示功能[1]。雷達(dá)空情接收系統(tǒng)通過(guò)雷達(dá)發(fā)現(xiàn)目標(biāo),識(shí)別出目標(biāo),并且分析出目標(biāo)的特征,按照一定的格式將其需要信息發(fā)送到空情接收系統(tǒng),空情接收系統(tǒng)接收到信息后分析出數(shù)據(jù),并用LabVIEW軟件將這一過(guò)程顯示出來(lái)。LabVIEW與其他軟件比較有更友好的可視化界面,操作簡(jiǎn)單,易于實(shí)現(xiàn)。
雷達(dá)LabVIEW UDP空情接收
LabVIEW是一種程序開(kāi)發(fā)環(huán)境,由美國(guó)國(guó)家儀器(NI)公司研制開(kāi)發(fā)的,類(lèi)似于C和BASIC開(kāi)發(fā)環(huán)境,但是LabVIEW與其他計(jì)算機(jī)語(yǔ)言的顯著區(qū)別是:其他計(jì)算機(jī)語(yǔ)言都是采用基于文本的語(yǔ)言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語(yǔ)言G編寫(xiě)程序,產(chǎn)生的程序是框圖的形式,底層的程序已經(jīng)封裝在這些框圖中,不涉及到基本語(yǔ)言的編程,這種圖形編程方法可使沒(méi)有編程經(jīng)驗(yàn)的用戶(hù)避免學(xué)習(xí)編程語(yǔ)言的麻煩[2],實(shí)現(xiàn)簡(jiǎn)單,并且提供了友好的可視化界面。而雷達(dá)空情接收系統(tǒng)實(shí)時(shí)顯示接收的空情,用LabVIEW實(shí)現(xiàn)簡(jiǎn)單、方便。
雷達(dá)的一個(gè)重要的任務(wù)就是掃描空情,發(fā)現(xiàn)目標(biāo)飛機(jī)的位置、類(lèi)型和架次等重要信息[3,4]。把雷達(dá)掃描的數(shù)據(jù)傳輸給空情接收系統(tǒng),使其顯示出空情。其具體方法及步驟如下:
(1)UDP接收數(shù)據(jù)
用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)是一種無(wú)連接的協(xié)議,而傳輸控制協(xié)議(Trans mission Control P rotocol,TCP)協(xié)議是面向連接的[5]。面向連接是在通信前建立一條可靠的物理鏈路,這就是鏈路的建立過(guò)程,建立完后查詢(xún)對(duì)方是否忙,如果不忙,雙方即可通信(傳送信息),當(dāng)通信完成要釋放此鏈路,所以面向連接必須有“建立、傳送、釋放”3個(gè)過(guò)程。當(dāng)利用TCP協(xié)議傳送數(shù)據(jù)的時(shí)候,首先必須建立連接才可以傳輸數(shù)據(jù)。而計(jì)算機(jī)利用UDP協(xié)議進(jìn)行數(shù)據(jù)傳送的時(shí)候,發(fā)送方只需要知道對(duì)方的IP地址和端口號(hào)就可以發(fā)送數(shù)據(jù),而并不需要進(jìn)行連接。就是在正式通信前不必與對(duì)方先建立連接,不考慮對(duì)方狀態(tài)就直接發(fā)送數(shù)據(jù),這就象平時(shí)的發(fā)手機(jī)短信,不必考慮對(duì)方狀態(tài),只需要輸入對(duì)方手機(jī)號(hào)就行。
TCP提供的是面向連接的而UDP提供的是面向非連接的。面向連接的協(xié)議在任何數(shù)據(jù)傳輸前就建立好了點(diǎn)到點(diǎn)的連接,面向非連接的協(xié)議在數(shù)據(jù)傳輸之前不建立連接,而是在每個(gè)中間節(jié)點(diǎn)對(duì)面向非連接的包和數(shù)據(jù)包進(jìn)行路由。因此利用UDP協(xié)議傳送和接收數(shù)據(jù)要簡(jiǎn)單的多。利用UDP進(jìn)行數(shù)據(jù)接收,如圖1所示,打開(kāi)UDP函數(shù)中,要設(shè)置IP和端口號(hào),讀取UDP函數(shù)中數(shù)據(jù)輸出為字符串格式。
圖1 UDP接收數(shù)據(jù)
(2)分析數(shù)據(jù)
①發(fā)送的是十六進(jìn)制數(shù),發(fā)送方發(fā)過(guò)來(lái)的數(shù)據(jù)為十六進(jìn)制數(shù),而通過(guò)UDP接收的數(shù)據(jù)為字符串,字符串如何轉(zhuǎn)換成十六進(jìn)制數(shù),成為解決本問(wèn)題的關(guān)鍵。在程序框圖函數(shù)面板中,編程/字符串/字符串至數(shù)值/十六進(jìn)制字符串轉(zhuǎn)換成數(shù)值,找到字符串與數(shù)值的轉(zhuǎn)換函數(shù),經(jīng)過(guò)實(shí)驗(yàn)并不能將其轉(zhuǎn)換成數(shù)值,這是由于在轉(zhuǎn)化過(guò)程中數(shù)值與字符串之間是按字節(jié)進(jìn)行轉(zhuǎn)換的,但是有的數(shù)值如FF并沒(méi)有對(duì)應(yīng)的字符串,最后成了亂碼。如發(fā)送端發(fā)送的十六進(jìn)制數(shù)為:ff201009a34d5b2274,直接用UDP函數(shù)(圖1)接收,得到亂碼如圖2所示。
圖2 直接讀取數(shù)據(jù)
最后將接收的字符串轉(zhuǎn)換成數(shù)組,用字符串至字節(jié)數(shù)組轉(zhuǎn)換,每個(gè)字符串都轉(zhuǎn)化成無(wú)符號(hào)數(shù)組,同樣發(fā)送上述十六進(jìn)制數(shù),得到圖3所示的十進(jìn)制數(shù),經(jīng)過(guò)驗(yàn)證,確實(shí)把上述十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),并且是一個(gè)字節(jié)一個(gè)字節(jié)的轉(zhuǎn)換,如FF轉(zhuǎn)換為255,20轉(zhuǎn)換為32等等。
圖3 轉(zhuǎn)換成數(shù)組
把得到得字節(jié)用索引數(shù)組函數(shù)把數(shù)組中的需要的每個(gè)字節(jié)索引出來(lái),再作處理。收發(fā)放約定好協(xié)議,F(xiàn)F為幀頭,后面第2、3、4字節(jié)為顯示空情直角坐標(biāo)中的x值,第5、6、7字節(jié)為y值,第8、9字節(jié)為z值。如收到ff201009a34d5b2274,索引數(shù)組中的二三四個(gè)字節(jié),并且字節(jié)存儲(chǔ)時(shí)按從低位到高位,所以x的值應(yīng)該是第4個(gè)字節(jié)是高位,再次是第3個(gè)字節(jié),最后為第2個(gè)字節(jié)。那是不是把第4個(gè)字節(jié)乘以10000,加上第3個(gè)字節(jié)乘以100,再加上第2個(gè)字節(jié)就是x的值呢?其實(shí)不然,因?yàn)榇鎯?chǔ)的數(shù)據(jù)為二進(jìn)制形式的,所以第4個(gè)字節(jié)應(yīng)該乘以216(65536),加上第3個(gè)字節(jié)乘以28(256),再加上第2個(gè)字節(jié)。但是我們都知道,其實(shí)最高位為符號(hào)位,如果是1就表示負(fù),如果是0就表示正,而我們卻把這個(gè)值當(dāng)成數(shù)值進(jìn)行計(jì)算了,如果最高位為1,其余位為0的話,其對(duì)應(yīng)的數(shù)值應(yīng)為223(8388608),所以我們可以把最初計(jì)算的數(shù)值減去8388608,再乘以負(fù)1就能得到x的值(如圖4),同樣,y、z的值獲取方式與x相同,即可得到相對(duì)于原點(diǎn)(我們所在位置)的空間坐標(biāo)值。
圖4 數(shù)據(jù)接收及處理程序框圖
②發(fā)送的是字符串,如果發(fā)過(guò)來(lái)的是字符串,通過(guò)UDP直接能正確接收,首先應(yīng)該通過(guò)匹配字符串,如果找到幀頭—FF,或雙方約定好的一個(gè)協(xié)議幀頭,則取其后的字符串,再用函數(shù)截取字符串,自己設(shè)定截取字符串的偏移量和長(zhǎng)度,如果不設(shè)偏移量則默認(rèn)為0,截取所需字符串,如圖5所示,圖6為接收的數(shù)據(jù)。之后再把這些字符串根據(jù)需要處理,步驟如圖4數(shù)值處理方式相同,不再贅述。
圖5 直接接收字符串
圖6 結(jié)果顯示
(3)顯示空情
分析數(shù)據(jù)完成,通過(guò)列表的形式,把x、y、z的值顯示出來(lái),并且用點(diǎn)的形式在直角坐標(biāo)中表示出來(lái)。發(fā)送方不斷的發(fā)送數(shù)據(jù),接收方收到的這些數(shù)據(jù)在坐標(biāo)系中描出來(lái)的點(diǎn)就是飛機(jī)的航跡。
LabVIEW為用戶(hù)提供了友好的可視化圖形界面。LabVIEW設(shè)計(jì)的界面美觀漂亮,數(shù)據(jù)顯示直觀,操作簡(jiǎn)單。當(dāng)用戶(hù)在操作時(shí),就感覺(jué)是在操作實(shí)在的儀器設(shè)備。和其他軟件開(kāi)發(fā)相比,LabVIEW更具有和硬件設(shè)備打交道的優(yōu)勢(shì)。利用圖形化編程語(yǔ)言的直觀、快捷的優(yōu)勢(shì),通過(guò)功能模塊的組合和連接能夠方便地開(kāi)發(fā)出適合各種不同通信協(xié)議的通信程序[6]。
[1]呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].國(guó)外電子測(cè)量技術(shù),2009,28(12):27-30,42.
[2]馮勁梅,連之偉.對(duì)LabVIEW使用中若干問(wèn)題的探討[J].中國(guó)制造業(yè)信息化,2003,32(9):121-124.
[3]史穎超,李俠,程?hào)|升,等.窄帶雷達(dá)飛機(jī)目標(biāo)識(shí)別方法綜述[J].艦船電子工程,2010,30(2):45-49.
[4]張漢華,王偉,李國(guó)順.一種低分辨雷達(dá)自動(dòng)目標(biāo)識(shí)別系統(tǒng)[J].現(xiàn)代雷達(dá),2003(12):11-13.
[5]張宗飛.VB中基于TCP和UDP協(xié)議的通信編程技術(shù)[J].計(jì)算機(jī)與現(xiàn)代化,2008(4):48-50.
[6]都亮,龔曉峰,侯志紅.基于虛擬儀器LabVIEW開(kāi)發(fā)的串行通信系統(tǒng)[J].控制工程,2004,11(S1):82-85.
Air Situation Receiving System Based on Labview
WANG Xin,TAO Jie,ZHANG Chi,WANG Wen-juan
(PLA College of Ordnance Engineering,Shijiazhuang Hebei 050003,China)
LabVIEW is a graphical programming development platform developed by NI company,and has powerful real-time data processing and display function.The radar air situation receiving system finds and identifies targets,and analyzes the characteristics of targets by radar.The required information in a certain format is sent to the air situation receiving system,then analyzed to obtain data,and the process is displayed through LabVIEW software.Compared with other software,LabVIEW has such characteristics as more friendly interface,simple operation and easy implementation.
radar;LabVIEW;UDP;air situation receiving
TP312
A
1008-1739(2015)10-40-3
定稿日期:2015-04-26