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