吳世雄
(中國民用航空中南地區(qū)空中交通管理局,廣州 510000)
MH/T4029.3是民航定義的空管自動化系統(tǒng)主備交換標(biāo)準(zhǔn),當(dāng)前各地空管自動化系統(tǒng)已在主備空管自動化的同步中應(yīng)用該標(biāo)準(zhǔn)。按照規(guī)范要求,空管主備自動化系統(tǒng)通常由兩個不同廠家型號的系統(tǒng)構(gòu)成,不同廠家對標(biāo)準(zhǔn)的理解和系統(tǒng)定義不完全一致,這導(dǎo)致了空管主備自動化系統(tǒng)之間的同步容易出現(xiàn)數(shù)據(jù)處理問題,而廠家給予的支持也較為有限,排查故障較為復(fù)雜。本文從實際出發(fā),基于C#設(shè)計一種空管自動化系統(tǒng)主備同步監(jiān)控系統(tǒng),該系統(tǒng)通過引接主備同步數(shù)據(jù),對數(shù)據(jù)的處理流程進(jìn)行分析得出具體主備數(shù)據(jù)交互的實際信息,為空管主備自動化系統(tǒng)的同步的數(shù)據(jù)處理過程分析提供一種參考。
MH/T4029.3標(biāo)準(zhǔn)規(guī)定了包括飛行計劃數(shù)據(jù)、飛行基礎(chǔ)數(shù)據(jù)以及不同管制單位間實現(xiàn)屏幕移交所包含的字段、數(shù)據(jù)項與發(fā)送時機(jī)。其主要在于在實現(xiàn)空管自動化系統(tǒng)業(yè)務(wù)鏈中的不同系統(tǒng)間的數(shù)據(jù)交互,可以補(bǔ)充自動化系統(tǒng)AIDC不能實現(xiàn)的不同管制單位間的屏幕移交。另外,基礎(chǔ)飛行數(shù)據(jù)和主備空管自動化數(shù)據(jù)的系統(tǒng)間信息交互,可以減輕因多套系統(tǒng)間數(shù)據(jù)不統(tǒng)一給管制人員、維護(hù)人員帶來的困擾和維護(hù)的工作量。標(biāo)準(zhǔn)規(guī)定了三大類的基礎(chǔ)報文分別是“基礎(chǔ)飛行數(shù)據(jù)交換報文”、“主備空管自動化系統(tǒng)數(shù)據(jù)交換報文”和“管制單位間飛行數(shù)據(jù)交換報文”。
其中,“基礎(chǔ)飛行數(shù)據(jù)交換報文”中3種數(shù)據(jù)的報文類型(使用報文結(jié)構(gòu)中的專用字段表示)均以字母‘I’開始,例如:IFPL、IDEL等;而“主備空管自動化系統(tǒng)數(shù)據(jù)交換報文”中6種數(shù)據(jù)的報文類型均以字母‘B’開始,例如:BSSR、BSEC等;“管制單位間飛行數(shù)據(jù)交換報文”中4種數(shù)據(jù)的報文類型則均以字母‘C’開始,例如:CFPL、CLAM等。前兩者是當(dāng)前空管自動化系統(tǒng)主備同步的主要應(yīng)用報文,也是本設(shè)計研究的基礎(chǔ)。
在4029.3標(biāo)準(zhǔn)中定義了數(shù)據(jù)交換格式,數(shù)據(jù)交換的具體內(nèi)容,以下對BSEC報文進(jìn)行分析。
BSEC扇區(qū)同步通過標(biāo)準(zhǔn)的同步報文進(jìn)行數(shù)據(jù)交換,扇區(qū)同步信息在接收系統(tǒng)收到后,接收的系統(tǒng)會對自己的原有扇區(qū)方案進(jìn)行修改,并更新自己的扇區(qū)表,將相應(yīng)的扇區(qū)分配方案發(fā)送至終端席位。最終實現(xiàn)具體席位扇區(qū)的同步。同理,系統(tǒng)目標(biāo)標(biāo)牌和計劃的同步也是由主用系統(tǒng)發(fā)送相應(yīng)的報文,備用系統(tǒng)收到報文后,修改對應(yīng)計劃的對應(yīng)項,同時修改系統(tǒng)目標(biāo)標(biāo)牌。最終完成系統(tǒng)的管制界面的自動同步。因此設(shè)計必須針對上述的報文信息進(jìn)行數(shù)據(jù)項的分揀詮釋。
系統(tǒng)主要分為接收模塊和數(shù)據(jù)解析模塊。前者主要涉及報文接收的通信編程,后者則主要采用C#的正則表達(dá)式實現(xiàn)對關(guān)鍵字符的識別得出具體發(fā)送信息的空管自動化系統(tǒng)給予的信息及數(shù)據(jù)項,并通過軟件界面提醒和日志寫入存儲。
4029.3標(biāo)準(zhǔn)提供了空管自動化系統(tǒng)之間交互的建議傳輸方式,為了使系統(tǒng)有更好的擴(kuò)展性和實用性,標(biāo)準(zhǔn)建議進(jìn)行主備同步的空管自動化系統(tǒng)系統(tǒng)同時支持網(wǎng)絡(luò)和串口兩種傳輸接口,方便用戶根據(jù)實際情況自由選擇。當(dāng)使用網(wǎng)絡(luò)傳輸接口時應(yīng)該同時支持TCP和UDP協(xié)議,可以同時支持長距離和短距離傳輸,滿足不同系統(tǒng)的數(shù)據(jù)傳輸需求。當(dāng)使用串口方式時,為了滿足帶寬要求和數(shù)據(jù)的時效性建議使用同步串口(推薦HDLC)的方式。當(dāng)然,由于飛行計劃的數(shù)據(jù)量較大,大多數(shù)空管自動化系統(tǒng)采用網(wǎng)絡(luò)接口方式。因此在接收模塊方面,系統(tǒng)可以采用C#的TCP接收處理。C#的TCP通信實質(zhì)是Socket通信,軟件在實現(xiàn)過程中需要新建一個Socket對象,于此同時設(shè)定相應(yīng)的設(shè)定目標(biāo)IP(主備自動化系統(tǒng)的IP),并設(shè)定目標(biāo)端口實現(xiàn)TCP通信的監(jiān)聽。最終,調(diào)用connect函數(shù)進(jìn)行連接。接收數(shù)據(jù)處理上可以直接調(diào)用Receive函數(shù)就可以完成數(shù)據(jù)的接收。Receive函數(shù)是一個實時等待函數(shù),如果沒有數(shù)據(jù)到來,會一直阻塞,導(dǎo)致程序控件假死,因此需要設(shè)計一個單獨的線程進(jìn)行接收。軟件實現(xiàn)上首先增加以下命名空間:
部分關(guān)鍵代碼如下:
為了同時接入主備空管自動化系統(tǒng),軟件部署的PC需要同時配置兩個網(wǎng)卡,一個用于連接主用自動化系統(tǒng),一個用于連接備用自動化系統(tǒng)。考慮信息安全等級保護(hù)要求,系統(tǒng)在接入過程中增加了防火墻配置,篇幅關(guān)系,相關(guān)防火墻策略配置此處不贅述。具體硬件實現(xiàn)接入如圖1。
圖1 系統(tǒng)硬件接入圖
為了數(shù)據(jù)項的解析,系統(tǒng)可以將MH/T4029.3的相應(yīng)報文類的對應(yīng)數(shù)據(jù)項內(nèi)容和意義以數(shù)據(jù)庫表字典的形式存儲起來,此處數(shù)據(jù)庫采用SQL Server進(jìn)行設(shè)計。C#程序增加以下命名空間:
同時創(chuàng)建連接數(shù)據(jù)庫對象如下:
表的數(shù)據(jù)項內(nèi)容樣例如表1。
表1 數(shù)據(jù)項樣例
系統(tǒng)可以采用正則表達(dá)式對上述richTextBox1內(nèi)部的內(nèi)容進(jìn)行解析[2]-[3]。接收的報文通過以下正則表達(dá)式函數(shù)實現(xiàn)對具體字符串內(nèi)部信息的截取。
其中,string str參數(shù)變量是傳入的待處理字符串,系統(tǒng)可以直接將實時的richTextBox1內(nèi)部字符串變量傳入,string s參數(shù)變量則為開始識別的字符串,string e參數(shù)變量則為結(jié)束字符串。例如系統(tǒng)首先按照標(biāo)準(zhǔn)解析當(dāng)前報文的類型,string s=”ZCZC-TITLE”,string e=”/n”,如若是該字段是“ZCZC-TITLE BSEC”,系統(tǒng)則返回“BSEC”并根據(jù)預(yù)先存儲的MH/T4029.3字典,系統(tǒng)解析出該報文為扇區(qū)分配報文。類似地(如Get-Value(richTextBox1.txt,”-FILTIM”,”/n”)得出報文時間、GetValue(richTextBox1.txt,”-BEGIN”,”/n”)得出下一步將是扇區(qū)劃分列表等),可以解析出系統(tǒng)內(nèi)部的所有數(shù)據(jù)項并根據(jù)字典將對應(yīng)的內(nèi)容打印到軟件界面通過richTextBox2控件顯示。
另外,為了記錄相應(yīng)的處理過程以及后續(xù)事件排查,系統(tǒng)提供了日志調(diào)查功能,將解析過程和歷史原始數(shù)據(jù)記錄在后臺文本文件中。C#實現(xiàn)代碼如下:
其中string path參數(shù)變量為系統(tǒng)存放日志的路徑,在實際操作中以時間戳為文件名命名存入,string contentSrt則為報文內(nèi)容變量,每次處理完畢系統(tǒng)將分別傳入richTextBox1和richTextBox2文本內(nèi)容,每個報文都有原始數(shù)據(jù)和解析結(jié)果的存儲。后續(xù)日志調(diào)查則直接打開文件對話框,用戶只需要選擇具體日志文件即可查看相應(yīng)的信息,軟件界面實現(xiàn)如圖2。
圖2 軟件實現(xiàn)界面
本文從實際出發(fā),基于MH/T4029.3設(shè)計了一套空管自動化系統(tǒng)主備同步數(shù)據(jù)處理監(jiān)控系統(tǒng)。系統(tǒng)通過C#設(shè)計實現(xiàn),主要包括接收數(shù)據(jù)處理和數(shù)據(jù)分析處理,實現(xiàn)了TCP編程下的網(wǎng)絡(luò)數(shù)據(jù)接收、字典建立和正則表達(dá)式匹配的數(shù)據(jù)解析以及后臺日志記錄。系統(tǒng)可以廣泛應(yīng)用于當(dāng)前主流空管自動化系統(tǒng)的主備數(shù)據(jù)同步,也為相關(guān)研究拋磚引玉。