馮 超
ASTERIX協(xié)議數(shù)據(jù)解析算法研究與實(shí)現(xiàn)
馮 超
(中國(guó)民用航空深圳空中交通管理站,深圳 518000)
近年來(lái)隨著航班量與日俱增,應(yīng)用各類航班監(jiān)視設(shè)備數(shù)據(jù)進(jìn)行本地化開(kāi)發(fā)以提升航空管制安全和管制效率已成為必然發(fā)展趨勢(shì)。ASTERIX作為各類航班監(jiān)視設(shè)備數(shù)據(jù)交換標(biāo)準(zhǔn)涉及到的協(xié)議種類較多,解析這些協(xié)議是實(shí)現(xiàn)監(jiān)視設(shè)備數(shù)據(jù)二次開(kāi)發(fā)應(yīng)用的關(guān)鍵。以CAT021數(shù)據(jù)為例,針對(duì)ASTERIX協(xié)議數(shù)據(jù)提供了一種通用的解析算法,并根據(jù)算法完成了一套通用的數(shù)據(jù)解析程序?qū)崿F(xiàn)框架。
ASTERIX;監(jiān)視設(shè)備;解析算法;UAP
隨著中國(guó)經(jīng)濟(jì)的不斷增長(zhǎng),民航機(jī)場(chǎng)的航班量與日俱增,以深圳寶安國(guó)際機(jī)場(chǎng)為例,2019年的航班日均架次已經(jīng)達(dá)到了1013架次,平均每1~2分鐘就需要指揮一架飛機(jī)起降,同時(shí)機(jī)場(chǎng)場(chǎng)面還有很多車(chē)輛行駛,如遇特殊天氣,情況更加復(fù)雜,以上這些狀況為航空管制人員指揮航班帶來(lái)很大壓力。為解決這一問(wèn)題,各大機(jī)場(chǎng)引入了各種類型的航空器監(jiān)視設(shè)備。如監(jiān)視航路上飛機(jī)信息的航管二次雷達(dá)和ADS-B設(shè)備;監(jiān)控機(jī)場(chǎng)場(chǎng)面信息的多點(diǎn)定位和場(chǎng)面監(jiān)視雷達(dá)設(shè)備等。利用各種航空器監(jiān)視設(shè)備實(shí)時(shí)監(jiān)控航班的位置和狀態(tài),并通過(guò)計(jì)算機(jī)軟件終端為管制員實(shí)時(shí)提供航班相關(guān)信息,輔助管制人員指揮飛機(jī),從而有效地提高了航班管制的安全性和效率。
而近年來(lái)隨著大數(shù)據(jù)和人工智能技術(shù)的興起和普及,使利用航班監(jiān)視數(shù)據(jù)進(jìn)行更加前瞻性、智能化的應(yīng)用研究和開(kāi)發(fā)成為可能,這就需要對(duì)各監(jiān)視設(shè)備輸出的數(shù)據(jù)進(jìn)行深入和全面的研究。ASTERIX(All Purpose Structured Euro-control Surveillance Information Exchange)協(xié)議是各類監(jiān)視設(shè)備進(jìn)行數(shù)據(jù)交換的基本傳輸協(xié)議,當(dāng)前的各類研究中,關(guān)于ASTERIX協(xié)議數(shù)據(jù)的解析只針對(duì)某種類型的數(shù)據(jù)進(jìn)行了解析,如只解析了航管二次雷達(dá)數(shù)據(jù)的協(xié)議CAT001和CAT048,并未對(duì)所有ASTERIX協(xié)議中所有數(shù)據(jù)類型的標(biāo)準(zhǔn)提出解析的算法和實(shí)現(xiàn)方案。本文詳細(xì)描述了ASTERIX協(xié)議數(shù)據(jù)的特點(diǎn)和解析規(guī)則,并以CAT021數(shù)據(jù)為例,提出了一種解析ASTERIX協(xié)議數(shù)據(jù)的通用算法,并根據(jù)該算法實(shí)現(xiàn)了一套通用的數(shù)據(jù)解析系統(tǒng)。
ASTERIX,是歐洲航行安全組織制定的關(guān)于航班監(jiān)視設(shè)備間用于數(shù)據(jù)交換的標(biāo)準(zhǔn)[2]。ASTERIX數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)類型(CAT)、數(shù)據(jù)長(zhǎng)度(LEN)、數(shù)據(jù)記錄(Record)、字段描述(Field Specification,F(xiàn)SPEC)、數(shù)據(jù)項(xiàng)(Data Field)等字段[3]。
針對(duì)不同監(jiān)視設(shè)備,ASTERIX制定了不同的協(xié)議標(biāo)準(zhǔn)。CAT001和CAT048,多用于航管二次雷達(dá)的數(shù)據(jù)傳輸;CAT010多用于多點(diǎn)定位系統(tǒng)的數(shù)據(jù)傳輸[3];CAT011是高級(jí)場(chǎng)面活動(dòng)引導(dǎo)系統(tǒng)數(shù)據(jù)的輸出格式,多用于場(chǎng)面自動(dòng)化監(jiān)視系統(tǒng)數(shù)據(jù)的輸出格式[4];CAT021則多用于ADS-B設(shè)備的數(shù)據(jù)傳輸;CAT062多用于雷達(dá)綜合航跡數(shù)據(jù)的傳輸。各硬件設(shè)備輸出的數(shù)據(jù)格式不是固定的,可以根據(jù)需要對(duì)數(shù)據(jù)進(jìn)行封裝輸出,但所有ASTERIX數(shù)據(jù)的解析規(guī)則都是相同的,下面針對(duì)解析方法進(jìn)行論述。
如圖1所示,ASTERIX數(shù)據(jù)主要由CAT、LEN和若干Record組成。其中,一條記錄由一個(gè)FSPEC和Data Field組成。其中,Data Field為數(shù)據(jù)項(xiàng)集合;FSPEC為字段說(shuō)明,它決定了Data Field中包含哪些數(shù)據(jù)項(xiàng)。每條記錄包含了一個(gè)航班在某一時(shí)刻的相關(guān)信息,例如航班的航班號(hào)、位置、時(shí)刻、航班計(jì)劃等。每一類數(shù)據(jù)協(xié)議的每一條記錄所包含的信息都是不同的,記錄中包含哪些信息需要結(jié)合FSPEC和每類協(xié)議的UAP(User Application Profile)來(lái)確定。

圖1 數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)圖
CAT021數(shù)據(jù)類型的UAP[1]如表1所示,UAP中給出了FRN和數(shù)據(jù)項(xiàng)名稱及數(shù)據(jù)項(xiàng)的字節(jié)長(zhǎng)度。每一條記錄中的Data Field包含哪些數(shù)據(jù)項(xiàng),是由FRN決定的,F(xiàn)RN就是FSPEC的二進(jìn)制表示形式,F(xiàn)RN從高位到低位,按照表1中對(duì)應(yīng)關(guān)系,F(xiàn)RN是1的位所對(duì)應(yīng)的數(shù)據(jù)項(xiàng)在Data Field中是存在的,0所對(duì)應(yīng)的數(shù)據(jù)項(xiàng)在Data Field中則不存在。FRN中每個(gè)字節(jié)的第八位,即FX位是FRN的擴(kuò)展位,若FX為“1”則表示下一個(gè)字節(jié)仍然屬于FSPEC,若為“0”則下一個(gè)字節(jié)的數(shù)據(jù)屬于Data Field。對(duì)于存在的數(shù)據(jù)項(xiàng),需要按照具體的解析規(guī)則進(jìn)行解析。

表1 CAT021 UAP

續(xù)表1 CAT021 UAP
CAT021數(shù)據(jù)包實(shí)例如圖2所示。整個(gè)數(shù)據(jù)包是一個(gè)字節(jié)數(shù)組,圖2中以空格作為間隔展示數(shù)組中所有字節(jié),每個(gè)字節(jié)是0~255之間的十進(jìn)制數(shù)字。

圖2 CAT021數(shù)據(jù)實(shí)例
具體解析規(guī)則如下:
(1)第1個(gè)字節(jié)中的十進(jìn)制數(shù)21,代表此數(shù)據(jù)包格式為CAT021數(shù)據(jù);

(3)從第4個(gè)字節(jié)開(kāi)始到最后,包含了一條或者多條航班信息的記錄;
(4)圖中實(shí)例只包含了一條記錄,它的FSPEC為“245 31 251 107 211 160”。確定FSPEC的方法為,從本記錄的第1個(gè)字節(jié)開(kāi)始查找到第1個(gè)是偶數(shù)的字節(jié)為止所有的字節(jié)構(gòu)成FSPEC。轉(zhuǎn)換為二進(jìn)制的FRN后,根據(jù)表1中的對(duì)應(yīng)關(guān)系,按照順序此條數(shù)據(jù)的Data Field中包含的數(shù)據(jù)項(xiàng)依次為“I021/010”、“I021/040”、……、“I021/132”;
(5)按照每個(gè)數(shù)據(jù)項(xiàng)具體解析規(guī)則對(duì)Data Field中數(shù)據(jù)進(jìn)行逐項(xiàng)解析。
ASTERIX中包含三種類型的數(shù)據(jù)項(xiàng):長(zhǎng)度固定的數(shù)據(jù)項(xiàng)、有擴(kuò)展項(xiàng)的數(shù)據(jù)項(xiàng)及組合定義的數(shù)據(jù)項(xiàng)。
此類數(shù)據(jù)項(xiàng)所占的字節(jié)數(shù)在Data Field中是固定的,按照固定字節(jié)長(zhǎng)度進(jìn)行解析即可,如圖2實(shí)例中“I021/010”,在表1中定義長(zhǎng)度固定為2字節(jié),那么在Data Field中“22 171”即為其值,再根據(jù)“I021/010”具體解析規(guī)則,如圖3所示,第一個(gè)字節(jié)為SAC(系統(tǒng)區(qū)域碼),第二個(gè)字節(jié)為SIC(系統(tǒng)標(biāo)識(shí)碼),則可以最終解析結(jié)果為SAC為“22”,SIC為“171”。

圖3 I021/010數(shù)據(jù)項(xiàng)解析規(guī)則
此類數(shù)據(jù)項(xiàng)第1個(gè)字節(jié)的二進(jìn)制表示形式的最后一位,若為“1”則表示此數(shù)據(jù)項(xiàng)還有一個(gè)擴(kuò)展字節(jié),以此類推,直到字節(jié)最后一位為“0”為止。如圖2實(shí)例中“I021/040”,在表1中定義長(zhǎng)度為“1+”,表示長(zhǎng)度至少有1個(gè)字節(jié),具體解析規(guī)則如圖4所示。

圖4 I021/040數(shù)據(jù)項(xiàng)解析規(guī)則
按照解析順序,在Data Field中I021/040所對(duì)應(yīng)的字節(jié)應(yīng)為“0”,根據(jù)解析規(guī)則,將十進(jìn)制“0”轉(zhuǎn)換為二進(jìn)制后為“00000000”,那么對(duì)應(yīng)的ATP值為“000”,即十進(jìn)制值為0,那么它所描述的含義為地址類型是24位地址碼;ARC值為“00”,即十進(jìn)制值為“0”,所描述的含義為目標(biāo)高度報(bào)告能力為25英尺;依此類推。其中FX為擴(kuò)展位,此位為“0”,那么I021/040就沒(méi)有擴(kuò)展字節(jié);假設(shè)若FX位為“1”,則表示在Data Field中“0”的下一個(gè)字節(jié)“12”也屬于I021/040,那么需要繼續(xù)按照擴(kuò)展字節(jié)的解析規(guī)則繼續(xù)解析,擴(kuò)展字節(jié)解析規(guī)則在此就不再贅述。
此類數(shù)據(jù)項(xiàng)在Data Field中占有的字節(jié)長(zhǎng)度是根據(jù)前幾個(gè)字節(jié)的二進(jìn)制位是“1”還是“0”來(lái)確定后面有哪些子數(shù)據(jù)項(xiàng)而確定的。例如I021/220數(shù)據(jù)項(xiàng),其解析規(guī)則如圖5所示。

圖5 I021/220數(shù)據(jù)項(xiàng)解析規(guī)則
假設(shè)一段I021/220所屬的字節(jié)數(shù)據(jù)為“192 0 106 0 255 234……”,如圖6所示,第1個(gè)字節(jié)數(shù)值為“192”,轉(zhuǎn)換為二進(jìn)制數(shù)為“11000000”,那么其對(duì)應(yīng)的風(fēng)速(WS)和風(fēng)向(WD)值為“1”,氣溫(TMP)和氣流(TRB)的值為“0”[1]。代表字節(jié)數(shù)組中存在WS和WD的子數(shù)據(jù)項(xiàng),需要按照子數(shù)據(jù)項(xiàng)的規(guī)則進(jìn)行解析,WS和WD的子數(shù)據(jù)項(xiàng)根據(jù)協(xié)議均占有2字節(jié)固定長(zhǎng)度[1],那么按照解析規(guī)則,WS的值為106節(jié),WD的值為255度。

圖6 I021/220數(shù)據(jù)項(xiàng)解析規(guī)則
根據(jù)ASTERIX數(shù)據(jù)的特點(diǎn),本文設(shè)計(jì)了算法用于解析所有類型的ASTERIX數(shù)據(jù)。ASTERIX數(shù)據(jù)解析流程如圖7所示。

圖7 解析算法流程圖
(1)判斷數(shù)據(jù)協(xié)議。當(dāng)接收到相關(guān)字節(jié)數(shù)組時(shí),首先判斷第1個(gè)字節(jié)中的數(shù)值是否為對(duì)應(yīng)的協(xié)議名稱的數(shù)值,例如CAT021協(xié)議,則第1個(gè)字節(jié)為“21”;CAT011協(xié)議,第1個(gè)字節(jié)則為“11”;以此類推,若正確則繼續(xù)進(jìn)行,若不正確則直接將數(shù)據(jù)包舍棄;

(3)記錄解析。從字節(jié)數(shù)組第4個(gè)字節(jié)開(kāi)始到最后,包含了一條或多條記錄。根據(jù)文章前面闡述的解析規(guī)則結(jié)合數(shù)據(jù)類型解析出每條記錄包含的航班信息。當(dāng)一條記錄被解析完成后,若字節(jié)數(shù)組中還存在未被解析的數(shù)據(jù),需要繼續(xù)按照記錄解析的規(guī)則循環(huán)解析數(shù)據(jù),直到整個(gè)數(shù)據(jù)包中所有數(shù)據(jù)全部被解析為止。
本文以ASP.net core為基礎(chǔ)框架[5],結(jié)合UDP Client,MySQL及Redis和RabbitMQ等中間件,完成了ASTERIX數(shù)據(jù)解析的通用服務(wù),程序框架如圖8所示。

圖8 ASTERIX數(shù)據(jù)解析程序框架

圖9 CAT021數(shù)據(jù)解析結(jié)果示例
程序啟動(dòng)時(shí)通過(guò)加載配置文件中數(shù)據(jù)類型信息,將對(duì)應(yīng)的數(shù)據(jù)項(xiàng)解析服務(wù)注冊(cè)到ASP.net core框架的容器中;監(jiān)視數(shù)據(jù)一般會(huì)以UDP組播的形式進(jìn)行傳輸,所以程序可通過(guò)UDP Client接收數(shù)據(jù),并傳遞給注冊(cè)后的解析服務(wù)進(jìn)行解析;最后將解析后的結(jié)果進(jìn)行存儲(chǔ);對(duì)于新增的數(shù)據(jù)類型,只需要增加協(xié)議中各數(shù)據(jù)項(xiàng)內(nèi)容的解析服務(wù)即可。以JSON格式編碼的解析后數(shù)據(jù)如圖9所示。
本文以CAT021數(shù)據(jù)為例分析了數(shù)據(jù)項(xiàng)的類型并詳細(xì)闡述了ASTERIX數(shù)據(jù)的解析規(guī)則,給出了通用的ASTERIX數(shù)據(jù)解析方法,同時(shí)利用ASP.net core等技術(shù),成功實(shí)現(xiàn)了通用的ASTERIX數(shù)據(jù)解析程序框架。對(duì)利用航班監(jiān)視設(shè)備數(shù)據(jù)進(jìn)行航班空中和地面監(jiān)視應(yīng)用的開(kāi)發(fā)具有重要的理論和現(xiàn)實(shí)意義。
[1] Euro-control. Euro-control Standard Document For Surveillance Data Exchange Part 12: Category 021 ADS-B Reports[Z]. 2.1 ed. Euro-control, 2011.
[2] 雷張華,李方軍,邱天,等. 基于ASTERIX標(biāo)準(zhǔn)的終端數(shù)據(jù)交換[J]. 火控雷達(dá)技術(shù),2020,49(2):41-45+65.
[3] Euro-control. Euro-control Standard Document For Surveillance Data Exchange Part 7: Category 010 Transmission of Mono-sensor Surface Movement Data[Z]. 1.1 ed. Euro-control, 2007.
[4] 王暉. 場(chǎng)面監(jiān)視雷達(dá)數(shù)據(jù)處理方法研究[D]. 成都:電子科技大學(xué),2017.
[5] 蔣金楠. ASP.NET Core 3框架揭秘[M]. 北京:北京電子工業(yè)出版社,2020.
Research and Implementation of Data Parsing Algorithm for ASTERIX Protocol
FENG Chao
With the increasing number of flights in recent years, it has become an inevitable development trend to apply all kinds of flight surveillance equipment data for localized development to improve aviation control safety and control efficiency. As a data exchange standard for various flight surveillance equipment, ASTERIX involves many kinds of protocols. Analyzing these protocols is the key to realize the secondary development and application of surveillance equipment data. Taking CAT021 data as an example, a general analysis algorithm for ASTERIX protocol data is provided, and a set of general data analysis program implementation framework is completes according to the algorithm.
ASTERIX; Surveillance Equipment; Analytical Algorithm; UAP
V355.1
A
1674-7976-(2021)-06-444-05
2021-10-11。
馮超(1986.10—),吉林白城人,碩士,工程師,主要研究方向?yàn)槊裼煤娇胀ㄐ艑?dǎo)航監(jiān)視領(lǐng)域軟件研發(fā)。