張鵬+何光亮
摘 要: 以1090ES廣播式自動相關監(jiān)視(ADS?B)系統(tǒng)的飛機位置報文為信號源,采用ARM Cortex?M4內核的微控制器為硬件平臺。針對目前空中交通管制對數(shù)據處理的實時性和準確性的要求,對空中目標飛機的經緯度和高度等關鍵信息進行解碼。分析以往查表法在解碼中的優(yōu)缺點,歸納總結和實現(xiàn)了公式法在ADS?B系統(tǒng)位置報文中高度信息的解碼。通過在真實數(shù)據環(huán)境下實驗驗證,其實驗結果表明該方法能很好地克服常規(guī)算法繁瑣、占用內存資源多等缺點,且軟硬件實現(xiàn)更加方便、快捷。
關鍵詞: ADS?B; Cortex?M4:CPR; C模式高度應答碼; CRC校驗; 公式法; 解碼
中圖分類號: TN919?34 文獻標識碼: A 文章編號: 1004?373X(2018)03?0030?06
Abstract: Taking the aircraft position message of the 1090ES automatic dependent surveillance?broadcast (ADS?B) system as the signal source, the microcontroller with ARM Cortex?M4 kernel is adopted as the hardware platform. In order to satisfy the requirements of current air traffic control for its data processing real?time performance and accuracy, the key messages (such as latitude, longitude and height) of the aerial target aircraft are decoded. The advantages and disadvantages of the available look?up table methods for decoding are analyzed. The formula method used to decode the height information in ADS?B system′s position massage is summarized and realized. The algorithm was verified with experiment in actual data environment. The experimental results show that the algorithm can eliminate the conventional algorithms′ disadvantages (such as the cumbersome procedure and high memory resource occupation), and has convenient and efficient software and hardware implementation.
Keywords: ADS?B; Cortex?M4; CPR; height answer?back code of C mode; cyclic redundancy check; formula method; decoding
0 引 言
1090ES廣播式自動相關監(jiān)視(Automatic Dependent Surveillance?Broadcast,ADS?B)是國際民航組織(ICAO)為了未來航空運輸發(fā)展的需要,以衛(wèi)星技術、數(shù)據通信技術和計算機技術為基礎提出的一種監(jiān)視技術[1]。與傳統(tǒng)的雷達監(jiān)視技術相比,ADS?B系統(tǒng)主要實現(xiàn)空對空監(jiān)視,一般情況下只需機載電子設備(如GPS接收機、數(shù)據鏈收發(fā)機及其天線、駕駛艙沖突信息顯示器(CDTI)),不需要任何地面輔助設備即可完成相關功能,實時、自發(fā)、間歇性地對外廣播自身狀態(tài)參數(shù)(包括飛機編碼、三維位置、速度矢量、飛行意圖等)[2]。在地面用數(shù)據鏈接收設備可直接監(jiān)視空中目標;在空中相鄰運行的飛機通過相互偵聽鄰近廣播(不是相互探測和問訊)就能實現(xiàn)對周圍空域交通狀況全面、詳細地了解。
此外,單個ADS?B監(jiān)控基站監(jiān)控范圍覆蓋方圓200海里以上,可提供全視角監(jiān)視,監(jiān)控更新頻率是雷達的4倍,精度可達米級,成本卻只有雷達的。ADS?B技術能以低成本實現(xiàn)空中航空器之間的相互監(jiān)視和優(yōu)于雷達間隔標準的虛擬雷達管制服務,它將會使當今空中交通管制中的三大要素——通信、導航、監(jiān)視重新定義。
1 CPR解碼算法及實現(xiàn)
以ADS?B飛機空中位置報文為例,該信息共有112 bits,即14 B。其信息結構格式如表1所示[3]。當DF=17時,表示發(fā)射機是基于1 090 MHz ES通信數(shù)據鏈;CA表示是否有CommA或者CommB通信能力;AA是發(fā)射機全球惟一的ICAO地址;PI字段為該字段前面所有88位數(shù)據的CRC校驗碼;ME字段為擴展斷續(xù)震蕩消息域,ME字段可以承載多種信息,例如,空中位置信息、地表面位置信息、空中速度信息、飛機標識與類型信息等。
其中,空中位置信息報文的“ME”字段如表2所示[4]。
1.1 CPR解碼算法
在ADS?B系統(tǒng)中,為提高數(shù)據的傳輸效率,飛機位置報文采用簡潔位置報告(Compact Position Reporting,CPR)的形式[5]。由于高階位不發(fā)送會導致飛機在地球上多個位置的編碼信息是一致的,CPR編碼時將地球劃分為不同的區(qū)域(Zone),包括南北方向上的緯度Zone和東西方向上的經度Zone;并且緯度Zone和經度Zone根據編碼形式的不同,又被細分為“奇/偶”緯度Zone,“奇/偶”經度Zone。endprint
目標飛機交替發(fā)送含有偶形式和奇形式兩種CPR編碼的位置報文,解碼時接收設備只要在規(guī)定的時間內(空中目標約10 s,地面目標約50 s)接收到一組含奇/偶編碼信息的報文,就能準確地解算出目標飛機的位置[6]。
目標飛機全球明確的空中位置報文中經緯度解碼算法如下:
解碼算法中用下標區(qū)分奇偶編碼,為偶編碼,為奇編碼。
1) 首先計算出緯度Zone的尺寸:
式中:為半球內緯度Zone的數(shù)量。緯度Zone的劃分是以赤道為中線,赤道至南北極各有15個,即。
為了更精確地確定目標飛機在經緯度Zone的具體位置,CPR編碼將每個Zone細分成塊(Bin)。對于全球明確的空中位置報文,。
2) 計算緯度索引為:
3) 緯度的計算與緯度Zone的尺寸及緯度索引有關,其計算公式為:
式中為求模運算。
在系統(tǒng)程序設計時,可將上述取模運算簡化為:當時,;當時,。由于緯度的取值范圍為,若,則。
4) 經度Zone的劃分又與緯度的絕對值有關,其尺寸為:
式中:為對應緯度的經度Zone的數(shù)量,其取值范圍為1~59之間的整數(shù),可以由式(5)解得:
由于計算比較復雜,不能滿足系統(tǒng)實時性輸出的設計要求,因此,在實際程序設計時采用查表法代替直接計算該函數(shù),避免了運算量大和過多的占用內存資源,提高了系統(tǒng)整體效率。緯度與函數(shù)表如表3所示。
5) 由經度Zone的個數(shù)計算出經度索引:
6) 計算全球位置的經度
同樣,式(7)中的取模運算可簡化為:當時,;當時,。由于經度的取值范圍為,若,則。圖1為CPR解碼的流程圖。
1.2 CPR解碼實驗驗證
實現(xiàn)過程中,系統(tǒng)在成功接收到1 090 MHz頻率上的報文信息之后,選用DF=17格式的信息進行CPR解碼驗證,隨機抽取其中10組數(shù)據列于表4中。
通過對5 000次CPR解碼測試結果的統(tǒng)計,實際數(shù)據偏差在數(shù)量級,驗證了CPR解碼算法的有效性和可靠性。另外,CPR算法降低了位置信息編解碼的位數(shù),使經度碼位(24 bits)和緯度碼位(23 bits)均降為17位,這樣在傳輸帶寬有限的情況下,為1090ES數(shù)據鏈提供了更多的可用空間,有效地提高了信息的傳輸效率。
2 高度解碼
ADS?B發(fā)射的高度數(shù)據融合在空中位置消息“ME”字段第9~20位的高度字段中,表5是高度子字段的編碼方式。
高度子字段的第16位為當時,高度以每25英尺遞增,編碼的組合順序為:二進制編碼后字段最低有效位為25英尺,十進制數(shù)字的二進制值用來表示其高度英尺,該編碼方式能編碼的海拔高度范圍為英尺。當時,高度以每100英尺遞增,編碼的組合順序為其中前8位用標準循環(huán)碼(格雷碼)的編碼形式,以每500英尺為單位遞增;后3位則用五周期循環(huán)碼的形式表示,以每100英尺為單位遞增,用于對應高度分層的最小單位。
2.1 C模式高度解碼算法的優(yōu)化
當時,由高度碼解算對應的海拔高度,通常采用查表法實現(xiàn),但是在進行標準循環(huán)碼(格雷碼)與二進制碼轉換時,存在建表繁瑣、占用資源多等缺點。因此,在實際程序設計時,考慮到格雷碼與二進制碼之間的關系,運用公式法完成格雷碼與二進制碼的轉換,實現(xiàn)C模式高度解碼[7]。能夠很好地克服查表法建表和查表的復雜操作,大大地簡化了高度解碼的設計和計算,而且不會受因處理信息數(shù)據位數(shù)變化的影響。
公式法完成格雷碼與二進制碼的轉換原理是保留格雷碼的最高位不變,作為二進制碼的最高位,二進制碼的次高位由二進制碼最高位與格雷碼的次高位異或所得,二進制碼的其余各位與二進制碼的次高位的求法類似。設為一組格雷碼,為其轉換后的二進制碼,轉換過程用公式法表示如下:
由式(8)轉換后的第位二進制碼左移位后再求和,結果就是轉換后二進制碼的值,記為:
五周期循環(huán)碼轉換成對應的十進制數(shù)值時,與上述公式法得到的值是奇數(shù)還是偶數(shù)有關,即與值的二進制數(shù)末位是1和0有關[8]。五周期循環(huán)碼的對應關系如表6所示。
將格雷碼轉換成普通二進制碼,用表示,由表6得到五周期循環(huán)碼對應的值實現(xiàn)高度的解碼,具體流程如圖2所示。
由C模式高度編碼可知,當時,對應的高度大于10萬英尺(約30 000 m),該值是目前民航飛機還達不到的海拔高度,故必須有??捎稍撐慌袛喔叨茸幼侄问欠窠邮照_,如果出現(xiàn)則判定該幀數(shù)據信息無效。
2.2 高度解碼實驗驗證
表7是從文獻[7]附錄A中截取的5個高度數(shù)據和編碼,用以驗證2.1中所介紹的方法的有效性和可用性。利用圖2的解碼流程求得表7中的5個編碼數(shù)據的高度值分別約為-366 m(-1 200 ft),-335 m(-1 100 ft),366 m(1 200 ft),396 m(1 300 ft),38 618 m(126 700 ft),位未使用(恒為0),這5個高度值與文獻[7]附錄A的原始值相符。
3 系統(tǒng)設計
3.1 Cortex?M4硬件平臺優(yōu)勢
系統(tǒng)硬件由三部分組成:解調器和1 090 MHz接收機模塊、主控模塊、上位機。主控模塊將接收的ADS?B位置信息進行解碼,在監(jiān)控設備上顯示出飛機位置信息,如飛機注冊編碼號、三維位置、速度矢量、飛行意圖等。整個系統(tǒng)硬件框圖如圖3所示。
由于嵌入式程序受硬件資源的限制,在實現(xiàn)CPR經緯度和高度解碼需要充分利用Cortex?M4硬件平臺資源。Cortex?M4內核采用32位精簡指令集、多重AHB(Advanced High?peripheral Bus)總線矩陣和多通道DMA(Direct Memory Access)控制器,能夠實現(xiàn)程序執(zhí)行和數(shù)據傳輸?shù)牟⑿刑幚恚罡吖ぷ黝l率高達168 MHz,內置高速嵌入式存儲器、豐富的增強型I/O端口[9]。它還擁有192 kB的SRAM和自適應實時加速器ART,SRAM是CPU和外部主存的高速緩沖器。Cortex?M4具有浮點運算單元(FPU),支持所有的ARM單精度數(shù)據處理指令和數(shù)據類型,通過內置單精度FPU提升算法執(zhí)行速度。endprint
3.2 系統(tǒng)軟件設計
整個系統(tǒng)實現(xiàn)飛機位置報文的解碼,包括飛機識別信息、經緯度、高度、速度、方向和爬升率等。當系統(tǒng)接收到位置信息后提取有效的位置信息,整理成標準化的幀信息,經CRC校驗后,實現(xiàn)經緯度以及高度、飛機識別碼、速度和航向角等信息解碼,通過串口傳輸?shù)奖O(jiān)控機上顯示和保存數(shù)據。系統(tǒng)軟件工作流程圖如圖4所示。
3.3 CRC校驗算法優(yōu)化
為了驗證接收的ADS?B位置報文信息的正確性,并且使系統(tǒng)對接收到的錯誤數(shù)據有一定的糾錯能力,ADS?B空中位置報文的PI字段定義為24位CRC(Cyclic Redundancy Check)校驗碼。首先將接收到的位置報文數(shù)據幀作為一個多項式,用約定的24次多項式去除,求得的余子多項式即為ADS?B報文的CRC校驗碼多項式。多項式除法運算不帶借位或進位,其等同于異或運算[10]。其中,實驗所用的多項式為:
對信息進行CRC校驗時,一般采用按位依次進行多項式除法的方法,但這種方法處理效率不高。為了提高計算速度,節(jié)省存儲空間,在實驗設計中采用32位多項式除法。軟件設計時,將接收到的ADS?B數(shù)據幀的前88位二進制數(shù)據左移8位,整理成96位數(shù)據幀,按4 B分成3組;并將多項式左移7位整理成32位多項式。設異或運算后的商為余數(shù)為即:
根據計算余數(shù)多項式是否等于接收到的多項式來判斷接收到的飛機空中位置報文是否出現(xiàn)傳輸錯誤。
為驗證CRC校驗結果的正確性,實驗參考一幀實際的ADS?B數(shù)據“8D7802666045823D79BC8F”,利用上述方法進行CRC校驗,得到校驗碼為0xFBCDD8,結果與真實值完全一致。CRC關鍵代碼如下:
int VerifyCrc(u8 *pbin, int bits) //CRC校驗 bits = 112
{
int i,ret = 0;
u32 p[3],crc;
u32 poly = 0xFFFA0480;
//1111 1111 1111 1010 0000 0100 1(生成多項式)+000 0000
bits ?= 24;
p[0]=(pbin[0]<<24)|(pbin[1]<<16)|(pbin[2]<<8)|(pbin[3]);
p[1] = (pbin[4]<<24)|(pbin[5]<<16)|(pbin[6]<<8)|(pbin[7]);
p[2] = (pbin[8]<<24)|(pbin[9]<<16)|(pbin[10]<<8);
for( i = 0; i < bits; i++ ){
if( p[0] & 0x80000000 ) p[0] ^= poly;
p[0] <<= 1;
if( p[1] & 0x80000000 ) p[0] |= 0x01;
p[1] <<= 1;
if( p[2] & 0x80000000 ) p[1] |= 0x01;
p[2] <<= 1;
}
bits = ( bits + 7 ) >>3;
crc=(pbin[bits]<<24)|(pbin[bits+1]<<16)|(pbin[bits+2]<<8);
if(crc == p[0]) ret = 1;
else ret = 0;
return ret;
}
4 結 語
經上述分析和驗證,闡明了ADS?B飛機空中位置報文信息中CPR解碼算法和C模式高度碼解碼算法的基本原理及詳細實現(xiàn)步驟,系統(tǒng)可以完好地對接收機經PPM解調后的位置報文信息進行解碼,實現(xiàn)實時觀測空中飛機的位置狀態(tài)和高度等信息,論證了該算法有著很高的精確度和穩(wěn)定性。整體設計對基于ADS?B系統(tǒng)位置報文解碼算法進行了分析和嘗試,并對部分算法做出改進,有助于從事ADS?B技術的科研人員做相關的軟件開發(fā),有一定的參考和實用價值。
參考文獻
[1] HARRISON M J. ADS?X: the next gen approach for the next generation air transportation system [C]// Proceedings of IEEE/AIAA the 25th Digital Avionics Systems Conference. Portland: IEEE, 2006: 1?8.
[2] REKKAS C, REES M. Towards ADS?B implementation in Europe [C]// Tyrrhenian International Workshop on Digital Communications?Enhanced Surveillance of Aircraft and Vehicles. Capri: IEEE, 2008: 1?4.
[3] RTCA. RTCA/DO?242A minimum aviation system performance standards for automatic dependent surveillance?broadcast (ADS?B) [S]. US: RTCA, 2002.
[4] RTCA. RTCA/DO?260A minimum operational performance standards for 1090 MHz extended squitter automatic dependent surveillance?broadcast (ADS?B) and traffic information services?broadcast (TIS?B) [S]. US: RTCA, 2003.endprint
[5] 呂小平.ADS?B技術介紹[J].空中交通管理,2005(4):24?25.
L? Xiaoping. Introduction of ADS?B technology [J]. Air traffic management, 2005(4): 24?25.
[6] 鄭值,練馬林,張超,等.模式S應答處理中報頭檢測算法的研究與實現(xiàn)[J].電子科技大學學報,2008,37(z1):66?70.
ZHENG Zhi, LIAN Malin, ZHANG Chao, et al. Research and realization of preamble detection arithmetic in mode S reply processing [J]. Journal of UESTC, 2008, 37(S1): 66?70.
[7] 中國民用航空總局.MH/T4010?2006 空中交通管制二次監(jiān)視雷達設備技術規(guī)范[S].北京:中國民用航空總局,2006.
CAAC. MH/T4010 ?2006 the technical specifications of air traffic control secondary surveillance radar equipment [S]. Beijing: CAAC, 2006.
[8] 張尉.二次雷達原理[M].北京:國防工業(yè)出版社,2009:28?40.
ZHANG Wei. Secondary radar principle [M]. Beijing: National Defense Industry Press, 2009: 28?40.
[9] 沈建良,賈玉坤,周芬芬,等.STM32F10X系列ARM微控制器入門與提高[M].北京:北京航空航天大學出版社,2013.
SHEN Jianliang, JIA Yukun, ZHOU Fenfen, et al. STM32F10X
series of ARM microcontrollers entry and improve [M]. Beijing: Beijing University of Aeronautics and Astronautics Press, 2013.
[10] WARREN H S.算法心得:高效算法的奧妙[M].愛飛翔,譯. 2版.北京:機械工業(yè)出版社,2014:276?284.
WARREN H S. Algorithm experience: the mystery of efficient algorithms [M]. 2nd ed. Translated by Ai Feixiang. Beijing: Mechanical Industry Press, 2014: 276?284.
[11] STEVENS M C. Secondary surveillance radar [M]. London: Artech House Inc., 1988.endprint