牛一波
(中國(guó)民用航空河南空中交通管理分局,鄭州 451162)
空中飛行的航空器主要通過(guò)水平和垂直間隔實(shí)現(xiàn)安全運(yùn)行,實(shí)際工作中,航空器除了起降階段外,使用的是氣壓高度(如航路階段使用標(biāo)準(zhǔn)大氣壓高度,終端/進(jìn)近管制范圍過(guò)渡高度以下使用修正海平面氣壓高度(QNH))[1]。通常,空管自動(dòng)化系統(tǒng)會(huì)根據(jù)實(shí)時(shí)的QNH值對(duì)航空器的飛行高度進(jìn)行修正,該步驟也是空管自動(dòng)化系統(tǒng)兩項(xiàng)告警的關(guān)鍵步驟。因此QNH數(shù)據(jù)的實(shí)時(shí)、準(zhǔn)確是影響管制安全的重要因素。
雖然當(dāng)前各地應(yīng)用有數(shù)字通播系統(tǒng)實(shí)現(xiàn)對(duì)QNH數(shù)據(jù)的實(shí)時(shí)播放,但是實(shí)時(shí)修正海平面氣壓值(QNH)的提供還是需要管制員人工向機(jī)組播報(bào)。這一方面分散了管制員的工作精力另一方面也增加了管制員的工作量,是一個(gè)潛在的運(yùn)行風(fēng)險(xiǎn)。本文提出一種QNH監(jiān)控系統(tǒng),該系統(tǒng)通過(guò)融合處理空管S模式雷達(dá)數(shù)據(jù)和AFTN QNH報(bào)文信息,可以實(shí)時(shí)提醒管制員機(jī)組設(shè)置的氣壓基準(zhǔn)值情況并與實(shí)際的QNH數(shù)據(jù)進(jìn)行對(duì)比,提高QNH的智能糾錯(cuò)效率。
系統(tǒng)通過(guò)C#實(shí)現(xiàn)軟件設(shè)計(jì),主要分為數(shù)據(jù)接收融合模塊、告警模塊和界面處理模塊。數(shù)據(jù)接收解析模塊在程序中使用異步UDP實(shí)時(shí)接收并解析來(lái)自S模式雷達(dá)的ASTERIX CAT048數(shù)據(jù)[2]和通過(guò)串口接收轉(zhuǎn)報(bào)系統(tǒng)的QNH AFTN報(bào)文數(shù)據(jù),經(jīng)過(guò)多數(shù)據(jù)融合處理生成并更新動(dòng)態(tài)列表;告警模塊則按照管制權(quán)限對(duì)動(dòng)態(tài)列表進(jìn)行航跡分類(lèi),不同類(lèi)別航跡分別計(jì)算是否滿(mǎn)足告警條件,最終將消息送達(dá)到終端界面顯示;而界面處理模塊則完成普通的用戶(hù)數(shù)據(jù)處理接口設(shè)計(jì)和告警功能顯示,主要涉及終端界面處理。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
圖1系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖
對(duì)于轉(zhuǎn)報(bào)機(jī)AFTN報(bào)文的處理,民航轉(zhuǎn)報(bào)機(jī)主要通過(guò)RS-232或雙流串口傳輸向外輸出具體的報(bào)文信息,QNH作為氣象觀測(cè)報(bào)文也同理。因此系統(tǒng)必須設(shè)計(jì)串口接收程序,并將接收到的具體QNH值提取出來(lái)。在窗體加載中,程序通過(guò)SerialPort.GetPortNames()方法獲取系統(tǒng)所在計(jì)算機(jī)的所有串口,并以字符串?dāng)?shù)組存儲(chǔ)(如果沒(méi)有則返回null)。此過(guò)程,系統(tǒng)將對(duì)串口對(duì)應(yīng)設(shè)置波特率、停止位和奇偶校驗(yàn)位等基礎(chǔ)信息,并通過(guò)SerialPort類(lèi)下的DataReceived方法監(jiān)聽(tīng)數(shù)據(jù)回傳。最終,程序采用ReadTimeOut方法對(duì)數(shù)據(jù)讀取超時(shí)進(jìn)行了控制。系統(tǒng)通過(guò)ReadTimeOut.Read方法讀取串口數(shù)據(jù),數(shù)據(jù)讀取從0到最后實(shí)現(xiàn)對(duì)報(bào)文的字符串格式轉(zhuǎn)換。對(duì)于接收到的字符串?dāng)?shù)據(jù)(如報(bào)文“METAR EDDF 221600Z 24001KT 9999 13/M01 Q1009 CAVOK”),QNH 數(shù)值是一個(gè)“Q”或“A”開(kāi)頭的五位數(shù)字字符串,系統(tǒng)可以采用C#的正則表達(dá)式對(duì)數(shù)據(jù)項(xiàng)進(jìn)行提取[3],因此可以編寫(xiě)函數(shù)GetValue(string str,string s,string e),設(shè)其中字符串變量s為截取的前端字符為“空格+‘A’”,字符串變量e為截取的后續(xù)字符,此處為“空格”。為了進(jìn)一步對(duì)處理的字符串進(jìn)行驗(yàn)證,結(jié)合氣壓數(shù)字為四位數(shù)字此處采用C#的string類(lèi)的Length方法實(shí)現(xiàn)對(duì)字符位數(shù)的校驗(yàn),個(gè)數(shù)不為4則代表數(shù)據(jù)有異常,丟棄數(shù)據(jù)。GetValue函數(shù)實(shí)現(xiàn)的代碼如下:
public static string GetValue(string str,string s,string e)
{
Regex rg=new Regex("(?<=("+s+"))[.\s\S]*?(?=("+e+"))",RegexOptions.Multiline|RegexOptions.Singleline);
return rg.Match(str).Value;
}
S模式雷達(dá)數(shù)據(jù)處理主要通過(guò)UDP數(shù)據(jù)接收,在C#上通過(guò)Socket和多線程進(jìn)行編程設(shè)計(jì),程序添加以下命名空間:
using System.Net.Sockets;
using System.Net;
using System.Threading;
實(shí)現(xiàn)部分代碼如下:
client=new Socket(AddressFamily.InterNetwork,SocketType.
Dgram,ProtocolType.Udp);
client.Bind(new IPEndPoint(IPAddress.Parse("192.168.4.88"),6000));
Thread t=new Thread(ReciveMsg);
t.Start();
數(shù)據(jù)的解析與AFTN的QNH報(bào)文處理類(lèi)似,此處不贅述。
在數(shù)據(jù)融合處理上,系統(tǒng)采用多線程處理,主要包含AFTN數(shù)據(jù)處理線程和S模式雷達(dá)數(shù)據(jù)兩個(gè)線程,S模式數(shù)據(jù)線程通過(guò)監(jiān)聽(tīng)不同UDP端口實(shí)現(xiàn)數(shù)據(jù)的接收與處理,而AFTN數(shù)據(jù)處理線程主要通過(guò)監(jiān)聽(tīng)串口實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的接收與處理。S模式雷達(dá)數(shù)據(jù)處理線程首先通過(guò)異步UDP協(xié)議實(shí)時(shí)接收S模式雷達(dá)發(fā)送的原始 BDS(Binary Data Selector)信號(hào)數(shù)據(jù),并將數(shù)據(jù)按照ASTERIX CAT048數(shù)據(jù)格式定義進(jìn)行數(shù)據(jù)項(xiàng)的解析,獲取具體航空器的當(dāng)前飛行高度、航班號(hào)、起飛機(jī)場(chǎng)、落地機(jī)場(chǎng)、MCP/FCU(或FMS)高度預(yù)設(shè)、氣壓基準(zhǔn)預(yù)設(shè)值等數(shù)據(jù);AFTN報(bào)文處理則根據(jù)上述的串口設(shè)計(jì),獲得該機(jī)場(chǎng)的實(shí)時(shí)修正海平面氣壓值(QNH)等運(yùn)行氣象數(shù)據(jù)。所有信息的處理都在軟件設(shè)計(jì)上定義具體的類(lèi)對(duì)象列表,通過(guò)對(duì)象列表的具體對(duì)象的新建或?qū)傩愿聦?shí)現(xiàn)信息的融合交互處理。
航空器飛行過(guò)程中需要涉及的高度變化主要有過(guò)渡高度層和過(guò)渡高度,兩者都是航空器在起飛和進(jìn)近過(guò)程中高度(表)基準(zhǔn)值轉(zhuǎn)換的一個(gè)過(guò)渡空間。實(shí)際工作中,這個(gè)過(guò)渡空間分成上下兩個(gè)面,離地面近的這個(gè)面(下面)定義為“過(guò)渡高度”;離地面遠(yuǎn)的面(上面)定義為“過(guò)渡高度層”;過(guò)渡高度和過(guò)渡高度層之間定義為“過(guò)渡夾層”。如圖2所示。
圖2航空器的過(guò)度高度和過(guò)度高度層
為了讓所有巡航的飛機(jī)有一樣的零點(diǎn)高度,航空器會(huì)把高度表設(shè)置為標(biāo)準(zhǔn)氣壓,所有的飛行高度以QNE為基準(zhǔn)面。而在航空器起降過(guò)程中,航空器的高度表使用的是修正海壓高QNH。所以起飛離場(chǎng)加入航線或脫離航線進(jìn)場(chǎng)著陸,就需要進(jìn)行修正海壓高與標(biāo)準(zhǔn)氣壓高間的轉(zhuǎn)換,即進(jìn)行基準(zhǔn)氣壓面的調(diào)整。為了統(tǒng)一轉(zhuǎn)換的時(shí)間,民航設(shè)定了過(guò)渡高度和過(guò)渡高度層,具體定義如下:
過(guò)渡高度TA(Transition Altitude)是以修正海壓QNH為基準(zhǔn)面在機(jī)場(chǎng)區(qū)域內(nèi)劃定的一個(gè)氣壓高度,在這個(gè)高度(含)以下,所有飛機(jī)按修正海壓高飛行。
過(guò)渡高度層TL(Transition Level)是在過(guò)渡高度以上可以利用的最低飛行高度層(以QNE為基準(zhǔn)面的飛行高度),在這個(gè)高度(含)以上,所有飛機(jī)按標(biāo)準(zhǔn)氣壓高飛行。過(guò)渡夾層(Transition Layer)是指過(guò)渡高與過(guò)渡高度層之間的空間(即垂直間隔),它隨修正海壓的變化而變化,但在任何情況下必須在300~600米。
鑒于上述的具體要求,系統(tǒng)需要對(duì)不同航空器的不同管制權(quán)限進(jìn)行分類(lèi)處理:如若航空器的具體管制權(quán)限為區(qū)域管制權(quán)限,則比對(duì)S模式數(shù)據(jù)中航空器預(yù)設(shè)氣壓基準(zhǔn)值BPS與QNE值的差;如若航空器的具體管制權(quán)限為進(jìn)近管制權(quán)限,則進(jìn)一步分析航空器實(shí)時(shí)飛行高度。當(dāng)實(shí)時(shí)飛行高度MFL在過(guò)度高度層(含)之上,則比對(duì)S模式數(shù)據(jù)中航空器預(yù)設(shè)氣壓基準(zhǔn)值BPS與QNE值的差,當(dāng)實(shí)時(shí)飛行高度MFL在過(guò)度高度(含)之下,則比對(duì)S模式數(shù)據(jù)中航空器預(yù)設(shè)氣壓基準(zhǔn)值BPS與與AFTN報(bào)文解析的QNH值的差,當(dāng)實(shí)時(shí)飛行高度MFL位于過(guò)度夾層之中,則比對(duì)S模式數(shù)據(jù)中航空器預(yù)設(shè)氣壓基準(zhǔn)值BPS與與AFTN報(bào)文解析的QNH值或QNE值的差;如若航空器的權(quán)限為塔臺(tái)管制權(quán)限比對(duì)S模式數(shù)據(jù)中航空器預(yù)設(shè)氣壓基準(zhǔn)值BPS與AFTN報(bào)文解析的QNH值的差。以上情況,當(dāng)對(duì)比的結(jié)果差大于系統(tǒng)設(shè)定的閾值,數(shù)據(jù)融合處理模塊則將其告警消息發(fā)送到終端軟件實(shí)現(xiàn)聲光告警。
為了提高系統(tǒng)處理的效率和符合現(xiàn)場(chǎng)的工作部署,系統(tǒng)采用C/S模式進(jìn)行設(shè)計(jì),在終端軟件上,主要通過(guò)UDP數(shù)據(jù)接收來(lái)自服務(wù)器端的告警消息并通過(guò)文本日志形式保存本地的配置和歷史記錄信息。系統(tǒng)組成一個(gè)工作局域網(wǎng),通過(guò)IP地址和席位角色綁定可以在服務(wù)器端實(shí)現(xiàn)對(duì)終端的遠(yuǎn)程控制。為了提高系統(tǒng)的人機(jī)交互功能,終端界面提供了管制扇區(qū)所屬顯示、人工修改、目標(biāo)查詢(xún)、數(shù)據(jù)記錄、歷史查詢(xún)、基礎(chǔ)配置和告警消除等功能。實(shí)現(xiàn)界面如圖3所示。
圖3軟件界面
本文從實(shí)際出發(fā),提出一種QNH實(shí)時(shí)監(jiān)控系統(tǒng)。系統(tǒng)基于C#實(shí)現(xiàn)了C/S模式的軟件架構(gòu),可以處理來(lái)自S模式雷達(dá)的CAT048數(shù)據(jù)和來(lái)自AFTN的QNH報(bào)文數(shù)據(jù),通過(guò)數(shù)據(jù)的融合處理實(shí)現(xiàn)了對(duì)QNH狀態(tài)的實(shí)時(shí)監(jiān)控,為管制員糾錯(cuò)航空器設(shè)置QNH差錯(cuò)提供技術(shù)手段,減少因機(jī)組人為因素而導(dǎo)致的氣壓設(shè)置錯(cuò)誤,對(duì)提高運(yùn)行安全效率有一定的意義。