謝東穎
(中國(guó)民用航空汕頭空中交通管理站,汕頭515000)
當(dāng)前民航空管正大力推進(jìn)對(duì)中小機(jī)場(chǎng)在空管技術(shù)上的幫扶,通過(guò)技術(shù)援助等方式提高中小機(jī)場(chǎng)的空管保障能力,促進(jìn)民航整體空管水平的提升。以中南地區(qū)為例,汕頭空管站負(fù)責(zé)了梅縣機(jī)場(chǎng)的ADS-B 的技術(shù)支持和相應(yīng)設(shè)備運(yùn)維。當(dāng)前梅縣機(jī)場(chǎng)應(yīng)用了ADS-B中小機(jī)場(chǎng)顯示系統(tǒng),該系統(tǒng)可以接入ADS-B 數(shù)據(jù),實(shí)現(xiàn)對(duì)梅縣管制區(qū)內(nèi)的飛行態(tài)勢(shì)監(jiān)視。ADS-B 是民航近年推進(jìn)發(fā)展的新技術(shù),雖然已經(jīng)在全國(guó)范圍內(nèi)實(shí)現(xiàn)了普及,但是目前數(shù)據(jù)穩(wěn)定性方面還不如傳統(tǒng)雷達(dá)。本文從實(shí)際出發(fā)提出一種將雷達(dá)數(shù)據(jù)轉(zhuǎn)換為ADS-B 數(shù)據(jù)的軟件系統(tǒng),通過(guò)系統(tǒng)的轉(zhuǎn)換可以將本地的雷達(dá)數(shù)據(jù)以ADS-B 數(shù)據(jù)格式接入中小機(jī)場(chǎng)顯示系統(tǒng),為當(dāng)?shù)貦C(jī)場(chǎng)的運(yùn)行保障提供另一種手段。
ADS-B 采用網(wǎng)絡(luò)接入到中小機(jī)場(chǎng)顯示系統(tǒng),其格式為ASTERIX CAT021 格式,更新周期為0.4~0.6s。航空器的相關(guān)信息可以通過(guò)不同的消息廣播,具體數(shù)據(jù)項(xiàng)的更新時(shí)間間隔不一致,因此,每次更新的目標(biāo)描述數(shù)據(jù)不一定完整,存在部分?jǐn)?shù)據(jù)更新的情況。雷達(dá)數(shù)據(jù)在實(shí)際工作中則通過(guò)同步串口,采用HDLC 高級(jí)數(shù)據(jù)鏈路協(xié)議。一般的A/C 模式雷達(dá)的目標(biāo)數(shù)據(jù)格式為歐控ASTERIX CAT001,服務(wù)信息數(shù)據(jù)格式為ASTERIX CAT002(S 模式雷達(dá)則分別為CAT034 和CAT048)[1],相比之下,雷達(dá)數(shù)據(jù)更新的周期較長(zhǎng),一般為4s 或5s。因此設(shè)計(jì)必須解決以下問(wèn)題:一是需要將雷達(dá)數(shù)據(jù)的同步串口進(jìn)行解析和處理得出具體數(shù)據(jù)項(xiàng)內(nèi)容;二是需要根據(jù)ASTERIX 協(xié)議將CAT001/CAT002和CAT034/CAT048 中的具體數(shù)據(jù)項(xiàng)和CAT021 中的具體對(duì)應(yīng)項(xiàng)分別對(duì)應(yīng),進(jìn)行數(shù)據(jù)狀態(tài)的更新,封裝為CAT021 的數(shù)據(jù)格式轉(zhuǎn)換為UDP 網(wǎng)絡(luò)數(shù)據(jù)接入到中小機(jī)場(chǎng)顯示系統(tǒng);三是解決兩種數(shù)據(jù)格式之間的更新周期不一致問(wèn)題。對(duì)雷達(dá)數(shù)據(jù)進(jìn)行內(nèi)插預(yù)測(cè)。主要的系統(tǒng)流程結(jié)構(gòu)如圖1,軟件設(shè)計(jì)上可以分為雷達(dá)數(shù)據(jù)處理模塊、數(shù)據(jù)轉(zhuǎn)換模塊、更新周期同步模塊和數(shù)據(jù)發(fā)送模塊。
圖1 系統(tǒng)流程結(jié)構(gòu)圖
為了提高開(kāi)發(fā)效率,系統(tǒng)采用當(dāng)前汕頭空管站在用自動(dòng)化系統(tǒng)的協(xié)議轉(zhuǎn)換器,該協(xié)議轉(zhuǎn)換器可以將接入的雷達(dá)信號(hào)由RS-232 同步信號(hào)轉(zhuǎn)換為UDP 網(wǎng)絡(luò)信號(hào)。因此,系統(tǒng)只需要在網(wǎng)絡(luò)接入上對(duì)數(shù)據(jù)進(jìn)行分析處理即可。在C#中UDP 數(shù)據(jù)處理可以采用以下方式。首先創(chuàng)建數(shù)據(jù)緩存隊(duì)列,并開(kāi)啟數(shù)據(jù)包解析線程,創(chuàng)建UDP 通信對(duì)象,綁定本地IP 和端口,通過(guò)UDP 異步接收數(shù)據(jù)將接收到的數(shù)據(jù)封裝為DataPacket 放入數(shù)據(jù)包緩沖隊(duì)列中。后續(xù)的軟件分析處理模塊只需要在隊(duì)列中對(duì)具體數(shù)據(jù)項(xiàng)處理即可。數(shù)據(jù)格式解析則可以根據(jù)CAT021、CAT001 和CAT048 進(jìn)行具體解析。同時(shí),系統(tǒng)將建立起目標(biāo)數(shù)據(jù)列表,通過(guò)航班號(hào)為唯一識(shí)別信息建立數(shù)據(jù)類(lèi),該類(lèi)將包含數(shù)據(jù)轉(zhuǎn)換關(guān)鍵對(duì)應(yīng)項(xiàng)的多個(gè)屬性,后續(xù)的數(shù)據(jù)項(xiàng)對(duì)應(yīng)只需要修改具體目標(biāo)的具體屬性即可,方便消息傳遞和處理[2]。
中小機(jī)場(chǎng)顯示系統(tǒng)在態(tài)勢(shì)顯示上的關(guān)鍵數(shù)據(jù)項(xiàng)為航空器的航班號(hào)、SSR、位置和高度,因此系統(tǒng)在進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí)必須關(guān)注相應(yīng)的數(shù)據(jù)項(xiàng)信息,除了上述數(shù)據(jù),筆者對(duì)監(jiān)視數(shù)據(jù)的必須關(guān)注項(xiàng)進(jìn)行了整理得出關(guān)鍵數(shù)據(jù)項(xiàng)對(duì)應(yīng)表,具體如表1。
表1 關(guān)鍵數(shù)據(jù)項(xiàng)對(duì)應(yīng)表
中小機(jī)場(chǎng)顯示系統(tǒng)在信號(hào)引接中需要數(shù)據(jù)源提供標(biāo)識(shí),而在ASTERIX 數(shù)據(jù)中,主要通過(guò)SAC/SIC 碼進(jìn)行識(shí)別,因此系統(tǒng)需要對(duì)010 數(shù)據(jù)項(xiàng)進(jìn)行解析;實(shí)際工作中ADS-B 數(shù)據(jù)是可以不包含SSR 二次代碼信息的,但是雷達(dá)數(shù)據(jù)必須實(shí)時(shí)具備該信息,因此為了提高信息的豐富余度,此處不管ADS-B 是否需要SSR 都將雷達(dá)數(shù)據(jù)的070 數(shù)據(jù)項(xiàng)轉(zhuǎn)換到ADS-B 的070 數(shù)據(jù)項(xiàng)中;S 模式與ADS-B 在航班號(hào)和24 位地址碼的格式表現(xiàn)上是類(lèi)似的因此可以直接將其轉(zhuǎn)換應(yīng)用,如若是A/C模式雷達(dá)數(shù)據(jù)則將其置為不可信“????”字符(如航班號(hào));至于SPI 是監(jiān)視數(shù)據(jù)的重要信息,因此需要將雷達(dá)數(shù)據(jù)中的020 轉(zhuǎn)換到ADS-B 數(shù)據(jù)中的040 數(shù)據(jù)項(xiàng);特殊代碼在ADS-B 中有兩個(gè)標(biāo)志位,如若雷達(dá)數(shù)據(jù)的該數(shù)據(jù)項(xiàng)有具體的內(nèi)容,轉(zhuǎn)換時(shí)必須將ADS-B 中的200 數(shù)據(jù)項(xiàng)的標(biāo)志位置為有效和在070 中設(shè)置相應(yīng)的特殊代碼[3];位置和高度則是態(tài)勢(shì)顯示的關(guān)鍵,系統(tǒng)必須對(duì)其進(jìn)行準(zhǔn)確、實(shí)時(shí)的轉(zhuǎn)換。雷達(dá)數(shù)據(jù)采用的是極坐標(biāo)或笛卡爾坐標(biāo)系表現(xiàn)位置,ADS-B 則是WGS-84坐標(biāo)顯示的經(jīng)緯度坐標(biāo)。因此此處需要將雷達(dá)數(shù)據(jù)坐標(biāo)轉(zhuǎn)為WGS-84。
在高度的處理上,主要存在精度的不一致情況。雷達(dá)數(shù)據(jù)主要采用C 模式高度,A/C 模式雷達(dá)的高度數(shù)據(jù)精度為100ft,S 模式則為25ft,ADS-B 也為25ft。而在實(shí)際應(yīng)用中,這種精度的差別并不影響態(tài)勢(shì)顯示,因此可以選擇不進(jìn)行精度對(duì)應(yīng)處理,直接將雷達(dá)數(shù)據(jù)的高度數(shù)據(jù)項(xiàng)值填入具體的ADS-B 數(shù)據(jù)項(xiàng)即可。
如上所述,需要對(duì)雷達(dá)數(shù)據(jù)進(jìn)行內(nèi)插預(yù)測(cè)處理,此處采用隨機(jī)森林內(nèi)插算法[4]。隨機(jī)森林可以綜合集成學(xué)習(xí)思想和隨機(jī)子空間方法,利用袋裝重抽樣的方法從4s 一周期的雷達(dá)歷史數(shù)據(jù)中抽取多個(gè)與原始樣本一樣數(shù)量的元素構(gòu)建一個(gè)決策樹(shù)。在決策樹(shù)的構(gòu)建中,通過(guò)隨機(jī)子空間法從特征中隨機(jī)選擇特征,利用最優(yōu)特征進(jìn)行節(jié)點(diǎn)分裂。預(yù)測(cè)決策樹(shù)每次預(yù)測(cè)都會(huì)給出一個(gè)預(yù)測(cè)結(jié)果,并通過(guò)少數(shù)服從多數(shù)的原則得出最終的結(jié)果,最終進(jìn)行回歸計(jì)算。具體實(shí)現(xiàn)為:系統(tǒng)保存1分鐘內(nèi)的雷達(dá)數(shù)據(jù)作為訓(xùn)練集,并選擇出測(cè)試集和特征維數(shù),抽取根節(jié)點(diǎn)樣本進(jìn)行訓(xùn)練;若當(dāng)前節(jié)點(diǎn)達(dá)到終止條件,該節(jié)點(diǎn)將會(huì)被設(shè)置為葉子節(jié)點(diǎn),預(yù)測(cè)輸出具體的平均值,否則從特征維數(shù)中隨機(jī)選取特征維數(shù)尋找回歸效果最優(yōu)的特征和閾值,當(dāng)最優(yōu)特征值大于該閾值時(shí),樣本進(jìn)入右節(jié)點(diǎn),否則進(jìn)入左節(jié)點(diǎn)。如此循環(huán)運(yùn)行直到所有節(jié)點(diǎn)都被標(biāo)記為葉子節(jié)點(diǎn)。為提高執(zhí)行效率,算法采用Python 設(shè)計(jì)[5],部分代碼實(shí)現(xiàn)如下:
對(duì)于中小型機(jī)場(chǎng),管制空域較小,區(qū)域內(nèi)需要顯示的目標(biāo)不多,因此可以在顯示范圍上對(duì)目標(biāo)進(jìn)行過(guò)濾,只關(guān)心和處理本區(qū)域內(nèi)目標(biāo),降低算法運(yùn)行開(kāi)銷(xiāo)。實(shí)際測(cè)試表明,這種算法能有效實(shí)現(xiàn)雷達(dá)數(shù)據(jù)更新周期的改變,位置和高度信息不會(huì)出現(xiàn)較大的突變,數(shù)據(jù)預(yù)測(cè)效果與實(shí)際的ADS-B 數(shù)據(jù)運(yùn)行態(tài)勢(shì)較為接近。
數(shù)據(jù)最終需要封裝為CAT021 的ADS-B 數(shù)據(jù)發(fā)送到中小機(jī)場(chǎng)顯示系統(tǒng)。與雷達(dá)數(shù)據(jù)接收處理類(lèi)似,此處采用UDP 封裝類(lèi),而前端的數(shù)據(jù)處理效果能夠滿(mǎn)足實(shí)時(shí)性要求,因此此處采用C#的UDP 通信關(guān)鍵類(lèi)Udpclient 進(jìn)行設(shè)計(jì),引入命名空間:
為了提高系統(tǒng)的人機(jī)交互性能,系統(tǒng)在前端提供用戶(hù)接口,用戶(hù)可以輸入中小機(jī)場(chǎng)顯示系統(tǒng)的IP 地址。最終軟件通過(guò)“Send”方法的調(diào)用實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。采用UdpClient 類(lèi)調(diào)用函數(shù)發(fā)送UDP 數(shù)據(jù)包,具體實(shí)現(xiàn)部分代碼如下:
根據(jù)當(dāng)前ADS-B 在中小機(jī)場(chǎng)的顯示應(yīng)用提出一種ADS-B 數(shù)據(jù)轉(zhuǎn)換系統(tǒng),該系統(tǒng)將A/C 模式和S 模式雷達(dá)數(shù)據(jù)轉(zhuǎn)換為ADS-B 數(shù)據(jù),以豐富當(dāng)前ADS-B 中小機(jī)場(chǎng)顯示系統(tǒng)的監(jiān)視源,為中小型機(jī)場(chǎng)的空管運(yùn)行保障提供支持。系統(tǒng)在周期同步方面采用了隨機(jī)森林內(nèi)插法,完成了雷達(dá)數(shù)據(jù)與ADS-B 數(shù)據(jù)的實(shí)時(shí)同步顯示,軟件實(shí)現(xiàn)上通過(guò)C#和Python 結(jié)合編程的方式,兼顧開(kāi)發(fā)效率和算法運(yùn)行性能,在實(shí)際工作中表現(xiàn)良好。