牛一波
(中國民用航空河南空中交通管理分局,鄭州 451162)
空中飛行的航空器主要通過水平和垂直間隔實現安全運行,實際工作中,航空器除了起降階段外,使用的是氣壓高度(如航路階段使用標準大氣壓高度,終端/進近管制范圍過渡高度以下使用修正海平面氣壓高度(QNH))[1]。通常,空管自動化系統會根據實時的QNH值對航空器的飛行高度進行修正,該步驟也是空管自動化系統兩項告警的關鍵步驟。因此QNH數據的實時、準確是影響管制安全的重要因素。
雖然當前各地應用有數字通播系統實現對QNH數據的實時播放,但是實時修正海平面氣壓值(QNH)的提供還是需要管制員人工向機組播報。這一方面分散了管制員的工作精力另一方面也增加了管制員的工作量,是一個潛在的運行風險。本文提出一種QNH監控系統,該系統通過融合處理空管S模式雷達數據和AFTN QNH報文信息,可以實時提醒管制員機組設置的氣壓基準值情況并與實際的QNH數據進行對比,提高QNH的智能糾錯效率。
系統通過C#實現軟件設計,主要分為數據接收融合模塊、告警模塊和界面處理模塊。數據接收解析模塊在程序中使用異步UDP實時接收并解析來自S模式雷達的ASTERIX CAT048數據[2]和通過串口接收轉報系統的QNH AFTN報文數據,經過多數據融合處理生成并更新動態列表;告警模塊則按照管制權限對動態列表進行航跡分類,不同類別航跡分別計算是否滿足告警條件,最終將消息送達到終端界面顯示;而界面處理模塊則完成普通的用戶數據處理接口設計和告警功能顯示,主要涉及終端界面處理。系統的結構框圖如圖1所示。

圖1系統設計結構圖
對于轉報機AFTN報文的處理,民航轉報機主要通過RS-232或雙流串口傳輸向外輸出具體的報文信息,QNH作為氣象觀測報文也同理。因此系統必須設計串口接收程序,并將接收到的具體QNH值提取出來。在窗體加載中,程序通過SerialPort.GetPortNames()方法獲取系統所在計算機的所有串口,并以字符串數組存儲(如果沒有則返回null)。此過程,系統將對串口對應設置波特率、停止位和奇偶校驗位等基礎信息,并通過SerialPort類下的DataReceived方法監聽數據回傳。最終,程序采用ReadTimeOut方法對數據讀取超時進行了控制。系統通過ReadTimeOut.Read方法讀取串口數據,數據讀取從0到最后實現對報文的字符串格式轉換。對于接收到的字符串數據(如報文“METAR EDDF 221600Z 24001KT 9999 13/M01 Q1009 CAVOK”),QNH 數值是一個“Q”或“A”開頭的五位數字字符串,系統可以采用C#的正則表達式對數據項進行提取[3],因此可以編寫函數GetValue(string str,string s,string e),設其中字符串變量s為截取的前端字符為“空格+‘A’”,字符串變量e為截取的后續字符,此處為“空格”。為了進一步對處理的字符串進行驗證,結合氣壓數字為四位數字此處采用C#的string類的Length方法實現對字符位數的校驗,個數不為4則代表數據有異常,丟棄數據。GetValue函數實現的代碼如下:
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模式雷達數據處理主要通過UDP數據接收,在C#上通過Socket和多線程進行編程設計,程序添加以下命名空間:
using System.Net.Sockets;
using System.Net;
using System.Threading;
實現部分代碼如下:
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();
數據的解析與AFTN的QNH報文處理類似,此處不贅述。
在數據融合處理上,系統采用多線程處理,主要包含AFTN數據處理線程和S模式雷達數據兩個線程,S模式數據線程通過監聽不同UDP端口實現數據的接收與處理,而AFTN數據處理線程主要通過監聽串口實現實時數據的接收與處理。S模式雷達數據處理線程首先通過異步UDP協議實時接收S模式雷達發送的原始 BDS(Binary Data Selector)信號數據,并將數據按照ASTERIX CAT048數據格式定義進行數據項的解析,獲取具體航空器的當前飛行高度、航班號、起飛機場、落地機場、MCP/FCU(或FMS)高度預設、氣壓基準預設值等數據;AFTN報文處理則根據上述的串口設計,獲得該機場的實時修正海平面氣壓值(QNH)等運行氣象數據。所有信息的處理都在軟件設計上定義具體的類對象列表,通過對象列表的具體對象的新建或屬性更新實現信息的融合交互處理。
航空器飛行過程中需要涉及的高度變化主要有過渡高度層和過渡高度,兩者都是航空器在起飛和進近過程中高度(表)基準值轉換的一個過渡空間。實際工作中,這個過渡空間分成上下兩個面,離地面近的這個面(下面)定義為“過渡高度”;離地面遠的面(上面)定義為“過渡高度層”;過渡高度和過渡高度層之間定義為“過渡夾層”。如圖2所示。

圖2航空器的過度高度和過度高度層
為了讓所有巡航的飛機有一樣的零點高度,航空器會把高度表設置為標準氣壓,所有的飛行高度以QNE為基準面。而在航空器起降過程中,航空器的高度表使用的是修正海壓高QNH。所以起飛離場加入航線或脫離航線進場著陸,就需要進行修正海壓高與標準氣壓高間的轉換,即進行基準氣壓面的調整。為了統一轉換的時間,民航設定了過渡高度和過渡高度層,具體定義如下:
過渡高度TA(Transition Altitude)是以修正海壓QNH為基準面在機場區域內劃定的一個氣壓高度,在這個高度(含)以下,所有飛機按修正海壓高飛行。
過渡高度層TL(Transition Level)是在過渡高度以上可以利用的最低飛行高度層(以QNE為基準面的飛行高度),在這個高度(含)以上,所有飛機按標準氣壓高飛行。過渡夾層(Transition Layer)是指過渡高與過渡高度層之間的空間(即垂直間隔),它隨修正海壓的變化而變化,但在任何情況下必須在300~600米。
鑒于上述的具體要求,系統需要對不同航空器的不同管制權限進行分類處理:如若航空器的具體管制權限為區域管制權限,則比對S模式數據中航空器預設氣壓基準值BPS與QNE值的差;如若航空器的具體管制權限為進近管制權限,則進一步分析航空器實時飛行高度。當實時飛行高度MFL在過度高度層(含)之上,則比對S模式數據中航空器預設氣壓基準值BPS與QNE值的差,當實時飛行高度MFL在過度高度(含)之下,則比對S模式數據中航空器預設氣壓基準值BPS與與AFTN報文解析的QNH值的差,當實時飛行高度MFL位于過度夾層之中,則比對S模式數據中航空器預設氣壓基準值BPS與與AFTN報文解析的QNH值或QNE值的差;如若航空器的權限為塔臺管制權限比對S模式數據中航空器預設氣壓基準值BPS與AFTN報文解析的QNH值的差。以上情況,當對比的結果差大于系統設定的閾值,數據融合處理模塊則將其告警消息發送到終端軟件實現聲光告警。
為了提高系統處理的效率和符合現場的工作部署,系統采用C/S模式進行設計,在終端軟件上,主要通過UDP數據接收來自服務器端的告警消息并通過文本日志形式保存本地的配置和歷史記錄信息。系統組成一個工作局域網,通過IP地址和席位角色綁定可以在服務器端實現對終端的遠程控制。為了提高系統的人機交互功能,終端界面提供了管制扇區所屬顯示、人工修改、目標查詢、數據記錄、歷史查詢、基礎配置和告警消除等功能。實現界面如圖3所示。

圖3軟件界面
本文從實際出發,提出一種QNH實時監控系統。系統基于C#實現了C/S模式的軟件架構,可以處理來自S模式雷達的CAT048數據和來自AFTN的QNH報文數據,通過數據的融合處理實現了對QNH狀態的實時監控,為管制員糾錯航空器設置QNH差錯提供技術手段,減少因機組人為因素而導致的氣壓設置錯誤,對提高運行安全效率有一定的意義。