張鵬+何光亮
摘 要: 以1090ES廣播式自動(dòng)相關(guān)監(jiān)視(ADS?B)系統(tǒng)的飛機(jī)位置報(bào)文為信號(hào)源,采用ARM Cortex?M4內(nèi)核的微控制器為硬件平臺(tái)。針對(duì)目前空中交通管制對(duì)數(shù)據(jù)處理的實(shí)時(shí)性和準(zhǔn)確性的要求,對(duì)空中目標(biāo)飛機(jī)的經(jīng)緯度和高度等關(guān)鍵信息進(jìn)行解碼。分析以往查表法在解碼中的優(yōu)缺點(diǎn),歸納總結(jié)和實(shí)現(xiàn)了公式法在ADS?B系統(tǒng)位置報(bào)文中高度信息的解碼。通過在真實(shí)數(shù)據(jù)環(huán)境下實(shí)驗(yàn)驗(yàn)證,其實(shí)驗(yàn)結(jié)果表明該方法能很好地克服常規(guī)算法繁瑣、占用內(nèi)存資源多等缺點(diǎn),且軟硬件實(shí)現(xiàn)更加方便、快捷。
關(guān)鍵詞: ADS?B; Cortex?M4:CPR; C模式高度應(yīng)答碼; CRC校驗(yàn); 公式法; 解碼
中圖分類號(hào): TN919?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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廣播式自動(dòng)相關(guān)監(jiān)視(Automatic Dependent Surveillance?Broadcast,ADS?B)是國(guó)際民航組織(ICAO)為了未來(lái)航空運(yùn)輸發(fā)展的需要,以衛(wèi)星技術(shù)、數(shù)據(jù)通信技術(shù)和計(jì)算機(jī)技術(shù)為基礎(chǔ)提出的一種監(jiān)視技術(shù)[1]。與傳統(tǒng)的雷達(dá)監(jiān)視技術(shù)相比,ADS?B系統(tǒng)主要實(shí)現(xiàn)空對(duì)空監(jiān)視,一般情況下只需機(jī)載電子設(shè)備(如GPS接收機(jī)、數(shù)據(jù)鏈?zhǔn)瞻l(fā)機(jī)及其天線、駕駛艙沖突信息顯示器(CDTI)),不需要任何地面輔助設(shè)備即可完成相關(guān)功能,實(shí)時(shí)、自發(fā)、間歇性地對(duì)外廣播自身狀態(tài)參數(shù)(包括飛機(jī)編碼、三維位置、速度矢量、飛行意圖等)[2]。在地面用數(shù)據(jù)鏈接收設(shè)備可直接監(jiān)視空中目標(biāo);在空中相鄰運(yùn)行的飛機(jī)通過相互偵聽鄰近廣播(不是相互探測(cè)和問訊)就能實(shí)現(xiàn)對(duì)周圍空域交通狀況全面、詳細(xì)地了解。
此外,單個(gè)ADS?B監(jiān)控基站監(jiān)控范圍覆蓋方圓200海里以上,可提供全視角監(jiān)視,監(jiān)控更新頻率是雷達(dá)的4倍,精度可達(dá)米級(jí),成本卻只有雷達(dá)的。ADS?B技術(shù)能以低成本實(shí)現(xiàn)空中航空器之間的相互監(jiān)視和優(yōu)于雷達(dá)間隔標(biāo)準(zhǔn)的虛擬雷達(dá)管制服務(wù),它將會(huì)使當(dāng)今空中交通管制中的三大要素——通信、導(dǎo)航、監(jiān)視重新定義。
1 CPR解碼算法及實(shí)現(xiàn)
以ADS?B飛機(jī)空中位置報(bào)文為例,該信息共有112 bits,即14 B。其信息結(jié)構(gòu)格式如表1所示[3]。當(dāng)DF=17時(shí),表示發(fā)射機(jī)是基于1 090 MHz ES通信數(shù)據(jù)鏈;CA表示是否有CommA或者CommB通信能力;AA是發(fā)射機(jī)全球惟一的ICAO地址;PI字段為該字段前面所有88位數(shù)據(jù)的CRC校驗(yàn)碼;ME字段為擴(kuò)展斷續(xù)震蕩消息域,ME字段可以承載多種信息,例如,空中位置信息、地表面位置信息、空中速度信息、飛機(jī)標(biāo)識(shí)與類型信息等。
其中,空中位置信息報(bào)文的“ME”字段如表2所示[4]。
1.1 CPR解碼算法
在ADS?B系統(tǒng)中,為提高數(shù)據(jù)的傳輸效率,飛機(jī)位置報(bào)文采用簡(jiǎn)潔位置報(bào)告(Compact Position Reporting,CPR)的形式[5]。由于高階位不發(fā)送會(huì)導(dǎo)致飛機(jī)在地球上多個(gè)位置的編碼信息是一致的,CPR編碼時(shí)將地球劃分為不同的區(qū)域(Zone),包括南北方向上的緯度Zone和東西方向上的經(jīng)度Zone;并且緯度Zone和經(jīng)度Zone根據(jù)編碼形式的不同,又被細(xì)分為“奇/偶”緯度Zone,“奇/偶”經(jīng)度Zone。endprint
目標(biāo)飛機(jī)交替發(fā)送含有偶形式和奇形式兩種CPR編碼的位置報(bào)文,解碼時(shí)接收設(shè)備只要在規(guī)定的時(shí)間內(nèi)(空中目標(biāo)約10 s,地面目標(biāo)約50 s)接收到一組含奇/偶編碼信息的報(bào)文,就能準(zhǔn)確地解算出目標(biāo)飛機(jī)的位置[6]。
目標(biāo)飛機(jī)全球明確的空中位置報(bào)文中經(jīng)緯度解碼算法如下:
解碼算法中用下標(biāo)區(qū)分奇偶編碼,為偶編碼,為奇編碼。
1) 首先計(jì)算出緯度Zone的尺寸:
式中:為半球內(nèi)緯度Zone的數(shù)量。緯度Zone的劃分是以赤道為中線,赤道至南北極各有15個(gè),即。
為了更精確地確定目標(biāo)飛機(jī)在經(jīng)緯度Zone的具體位置,CPR編碼將每個(gè)Zone細(xì)分成塊(Bin)。對(duì)于全球明確的空中位置報(bào)文,。
2) 計(jì)算緯度索引為:
3) 緯度的計(jì)算與緯度Zone的尺寸及緯度索引有關(guān),其計(jì)算公式為:
式中為求模運(yùn)算。
在系統(tǒng)程序設(shè)計(jì)時(shí),可將上述取模運(yùn)算簡(jiǎn)化為:當(dāng)時(shí),;當(dāng)時(shí),。由于緯度的取值范圍為,若,則。
4) 經(jīng)度Zone的劃分又與緯度的絕對(duì)值有關(guān),其尺寸為:
式中:為對(duì)應(yīng)緯度的經(jīng)度Zone的數(shù)量,其取值范圍為1~59之間的整數(shù),可以由式(5)解得:
由于計(jì)算比較復(fù)雜,不能滿足系統(tǒng)實(shí)時(shí)性輸出的設(shè)計(jì)要求,因此,在實(shí)際程序設(shè)計(jì)時(shí)采用查表法代替直接計(jì)算該函數(shù),避免了運(yùn)算量大和過多的占用內(nèi)存資源,提高了系統(tǒng)整體效率。緯度與函數(shù)表如表3所示。
5) 由經(jīng)度Zone的個(gè)數(shù)計(jì)算出經(jīng)度索引:
6) 計(jì)算全球位置的經(jīng)度
同樣,式(7)中的取模運(yùn)算可簡(jiǎn)化為:當(dāng)時(shí),;當(dāng)時(shí),。由于經(jīng)度的取值范圍為,若,則。圖1為CPR解碼的流程圖。
1.2 CPR解碼實(shí)驗(yàn)驗(yàn)證
實(shí)現(xiàn)過程中,系統(tǒng)在成功接收到1 090 MHz頻率上的報(bào)文信息之后,選用DF=17格式的信息進(jìn)行CPR解碼驗(yàn)證,隨機(jī)抽取其中10組數(shù)據(jù)列于表4中。
通過對(duì)5 000次CPR解碼測(cè)試結(jié)果的統(tǒng)計(jì),實(shí)際數(shù)據(jù)偏差在數(shù)量級(jí),驗(yàn)證了CPR解碼算法的有效性和可靠性。另外,CPR算法降低了位置信息編解碼的位數(shù),使經(jīng)度碼位(24 bits)和緯度碼位(23 bits)均降為17位,這樣在傳輸帶寬有限的情況下,為1090ES數(shù)據(jù)鏈提供了更多的可用空間,有效地提高了信息的傳輸效率。
2 高度解碼
ADS?B發(fā)射的高度數(shù)據(jù)融合在空中位置消息“ME”字段第9~20位的高度字段中,表5是高度子字段的編碼方式。
高度子字段的第16位為當(dāng)時(shí),高度以每25英尺遞增,編碼的組合順序?yàn)椋憾M(jìn)制編碼后字段最低有效位為25英尺,十進(jìn)制數(shù)字的二進(jìn)制值用來(lái)表示其高度英尺,該編碼方式能編碼的海拔高度范圍為英尺。當(dāng)時(shí),高度以每100英尺遞增,編碼的組合順序?yàn)槠渲星?位用標(biāo)準(zhǔn)循環(huán)碼(格雷碼)的編碼形式,以每500英尺為單位遞增;后3位則用五周期循環(huán)碼的形式表示,以每100英尺為單位遞增,用于對(duì)應(yīng)高度分層的最小單位。
2.1 C模式高度解碼算法的優(yōu)化
當(dāng)時(shí),由高度碼解算對(duì)應(yīng)的海拔高度,通常采用查表法實(shí)現(xiàn),但是在進(jìn)行標(biāo)準(zhǔn)循環(huán)碼(格雷碼)與二進(jìn)制碼轉(zhuǎn)換時(shí),存在建表繁瑣、占用資源多等缺點(diǎn)。因此,在實(shí)際程序設(shè)計(jì)時(shí),考慮到格雷碼與二進(jìn)制碼之間的關(guān)系,運(yùn)用公式法完成格雷碼與二進(jìn)制碼的轉(zhuǎn)換,實(shí)現(xiàn)C模式高度解碼[7]。能夠很好地克服查表法建表和查表的復(fù)雜操作,大大地簡(jiǎn)化了高度解碼的設(shè)計(jì)和計(jì)算,而且不會(huì)受因處理信息數(shù)據(jù)位數(shù)變化的影響。
公式法完成格雷碼與二進(jìn)制碼的轉(zhuǎn)換原理是保留格雷碼的最高位不變,作為二進(jìn)制碼的最高位,二進(jìn)制碼的次高位由二進(jìn)制碼最高位與格雷碼的次高位異或所得,二進(jìn)制碼的其余各位與二進(jìn)制碼的次高位的求法類似。設(shè)為一組格雷碼,為其轉(zhuǎn)換后的二進(jìn)制碼,轉(zhuǎn)換過程用公式法表示如下:
由式(8)轉(zhuǎn)換后的第位二進(jìn)制碼左移位后再求和,結(jié)果就是轉(zhuǎn)換后二進(jìn)制碼的值,記為:
五周期循環(huán)碼轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)值時(shí),與上述公式法得到的值是奇數(shù)還是偶數(shù)有關(guān),即與值的二進(jìn)制數(shù)末位是1和0有關(guān)[8]。五周期循環(huán)碼的對(duì)應(yīng)關(guān)系如表6所示。
將格雷碼轉(zhuǎn)換成普通二進(jìn)制碼,用表示,由表6得到五周期循環(huán)碼對(duì)應(yīng)的值實(shí)現(xiàn)高度的解碼,具體流程如圖2所示。
由C模式高度編碼可知,當(dāng)時(shí),對(duì)應(yīng)的高度大于10萬(wàn)英尺(約30 000 m),該值是目前民航飛機(jī)還達(dá)不到的海拔高度,故必須有??捎稍撐慌袛喔叨茸幼侄问欠窠邮照_,如果出現(xiàn)則判定該幀數(shù)據(jù)信息無(wú)效。
2.2 高度解碼實(shí)驗(yàn)驗(yàn)證
表7是從文獻(xiàn)[7]附錄A中截取的5個(gè)高度數(shù)據(jù)和編碼,用以驗(yàn)證2.1中所介紹的方法的有效性和可用性。利用圖2的解碼流程求得表7中的5個(gè)編碼數(shù)據(jù)的高度值分別約為-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個(gè)高度值與文獻(xiàn)[7]附錄A的原始值相符。
3 系統(tǒng)設(shè)計(jì)
3.1 Cortex?M4硬件平臺(tái)優(yōu)勢(shì)
系統(tǒng)硬件由三部分組成:解調(diào)器和1 090 MHz接收機(jī)模塊、主控模塊、上位機(jī)。主控模塊將接收的ADS?B位置信息進(jìn)行解碼,在監(jiān)控設(shè)備上顯示出飛機(jī)位置信息,如飛機(jī)注冊(cè)編碼號(hào)、三維位置、速度矢量、飛行意圖等。整個(gè)系統(tǒng)硬件框圖如圖3所示。
由于嵌入式程序受硬件資源的限制,在實(shí)現(xiàn)CPR經(jīng)緯度和高度解碼需要充分利用Cortex?M4硬件平臺(tái)資源。Cortex?M4內(nèi)核采用32位精簡(jiǎn)指令集、多重AHB(Advanced High?peripheral Bus)總線矩陣和多通道DMA(Direct Memory Access)控制器,能夠?qū)崿F(xiàn)程序執(zhí)行和數(shù)據(jù)傳輸?shù)牟⑿刑幚?,最高工作頻率高達(dá)168 MHz,內(nèi)置高速嵌入式存儲(chǔ)器、豐富的增強(qiáng)型I/O端口[9]。它還擁有192 kB的SRAM和自適應(yīng)實(shí)時(shí)加速器ART,SRAM是CPU和外部主存的高速緩沖器。Cortex?M4具有浮點(diǎn)運(yùn)算單元(FPU),支持所有的ARM單精度數(shù)據(jù)處理指令和數(shù)據(jù)類型,通過內(nèi)置單精度FPU提升算法執(zhí)行速度。endprint
3.2 系統(tǒng)軟件設(shè)計(jì)
整個(gè)系統(tǒng)實(shí)現(xiàn)飛機(jī)位置報(bào)文的解碼,包括飛機(jī)識(shí)別信息、經(jīng)緯度、高度、速度、方向和爬升率等。當(dāng)系統(tǒng)接收到位置信息后提取有效的位置信息,整理成標(biāo)準(zhǔn)化的幀信息,經(jīng)CRC校驗(yàn)后,實(shí)現(xiàn)經(jīng)緯度以及高度、飛機(jī)識(shí)別碼、速度和航向角等信息解碼,通過串口傳輸?shù)奖O(jiān)控機(jī)上顯示和保存數(shù)據(jù)。系統(tǒng)軟件工作流程圖如圖4所示。
3.3 CRC校驗(yàn)算法優(yōu)化
為了驗(yàn)證接收的ADS?B位置報(bào)文信息的正確性,并且使系統(tǒng)對(duì)接收到的錯(cuò)誤數(shù)據(jù)有一定的糾錯(cuò)能力,ADS?B空中位置報(bào)文的PI字段定義為24位CRC(Cyclic Redundancy Check)校驗(yàn)碼。首先將接收到的位置報(bào)文數(shù)據(jù)幀作為一個(gè)多項(xiàng)式,用約定的24次多項(xiàng)式去除,求得的余子多項(xiàng)式即為ADS?B報(bào)文的CRC校驗(yàn)碼多項(xiàng)式。多項(xiàng)式除法運(yùn)算不帶借位或進(jìn)位,其等同于異或運(yùn)算[10]。其中,實(shí)驗(yàn)所用的多項(xiàng)式為:
對(duì)信息進(jìn)行CRC校驗(yàn)時(shí),一般采用按位依次進(jìn)行多項(xiàng)式除法的方法,但這種方法處理效率不高。為了提高計(jì)算速度,節(jié)省存儲(chǔ)空間,在實(shí)驗(yàn)設(shè)計(jì)中采用32位多項(xiàng)式除法。軟件設(shè)計(jì)時(shí),將接收到的ADS?B數(shù)據(jù)幀的前88位二進(jìn)制數(shù)據(jù)左移8位,整理成96位數(shù)據(jù)幀,按4 B分成3組;并將多項(xiàng)式左移7位整理成32位多項(xiàng)式。設(shè)異或運(yùn)算后的商為余數(shù)為即:
根據(jù)計(jì)算余數(shù)多項(xiàng)式是否等于接收到的多項(xiàng)式來(lái)判斷接收到的飛機(jī)空中位置報(bào)文是否出現(xiàn)傳輸錯(cuò)誤。
為驗(yàn)證CRC校驗(yàn)結(jié)果的正確性,實(shí)驗(yàn)參考一幀實(shí)際的ADS?B數(shù)據(jù)“8D7802666045823D79BC8F”,利用上述方法進(jìn)行CRC校驗(yàn),得到校驗(yàn)碼為0xFBCDD8,結(jié)果與真實(shí)值完全一致。CRC關(guān)鍵代碼如下:
int VerifyCrc(u8 *pbin, int bits) //CRC校驗(yàn) bits = 112
{
int i,ret = 0;
u32 p[3],crc;
u32 poly = 0xFFFA0480;
//1111 1111 1111 1010 0000 0100 1(生成多項(xiàng)式)+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 結(jié) 語(yǔ)
經(jīng)上述分析和驗(yàn)證,闡明了ADS?B飛機(jī)空中位置報(bào)文信息中CPR解碼算法和C模式高度碼解碼算法的基本原理及詳細(xì)實(shí)現(xiàn)步驟,系統(tǒng)可以完好地對(duì)接收機(jī)經(jīng)PPM解調(diào)后的位置報(bào)文信息進(jìn)行解碼,實(shí)現(xiàn)實(shí)時(shí)觀測(cè)空中飛機(jī)的位置狀態(tài)和高度等信息,論證了該算法有著很高的精確度和穩(wěn)定性。整體設(shè)計(jì)對(duì)基于ADS?B系統(tǒng)位置報(bào)文解碼算法進(jìn)行了分析和嘗試,并對(duì)部分算法做出改進(jìn),有助于從事ADS?B技術(shù)的科研人員做相關(guān)的軟件開發(fā),有一定的參考和實(shí)用價(jià)值。
參考文獻(xiàn)
[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技術(shù)介紹[J].空中交通管理,2005(4):24?25.
L? Xiaoping. Introduction of ADS?B technology [J]. Air traffic management, 2005(4): 24?25.
[6] 鄭值,練馬林,張超,等.模式S應(yīng)答處理中報(bào)頭檢測(cè)算法的研究與實(shí)現(xiàn)[J].電子科技大學(xué)學(xué)報(bào),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] 中國(guó)民用航空總局.MH/T4010?2006 空中交通管制二次監(jiān)視雷達(dá)設(shè)備技術(shù)規(guī)范[S].北京:中國(guó)民用航空總局,2006.
CAAC. MH/T4010 ?2006 the technical specifications of air traffic control secondary surveillance radar equipment [S]. Beijing: CAAC, 2006.
[8] 張尉.二次雷達(dá)原理[M].北京:國(guó)防工業(yè)出版社,2009:28?40.
ZHANG Wei. Secondary radar principle [M]. Beijing: National Defense Industry Press, 2009: 28?40.
[9] 沈建良,賈玉坤,周芬芬,等.STM32F10X系列ARM微控制器入門與提高[M].北京:北京航空航天大學(xué)出版社,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版.北京:機(jī)械工業(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