韓雁飛 孫淑光 徐廣有 王 蓉
1(中國民航大學(xué)天津市智能信號與圖像處理重點實驗室 天津 300300)2(海航航空技術(shù)(天津)有限責(zé)任公司 天津 300300)3(廈門太古飛機工程有限公司 福建 廈門 361003)
一個完整的飛行航段是指航空器從起飛點到下一個著陸點之間的飛行,因此一次航班可以包括一個航段或者多個航段。在機載設(shè)備中,根據(jù)飛行警告計算機(Flight Warning Computer,F(xiàn)WC)預(yù)設(shè)的航段邏輯,一個飛行航段可以劃分為10個不同階段,用于幫助和定位機載設(shè)備故障發(fā)生時的飛行階段。然而,在地面系統(tǒng)中,航空公司需要依據(jù)飛機號和其對應(yīng)的飛行航段對飛機通信尋址與報告系統(tǒng)(Aircraft Communications Addressing and Reporting System,ACARS)報文[1-2]進行存儲、管理和數(shù)據(jù)分析。因此,能夠?qū)崿F(xiàn)飛行航段的正確劃分和識別,對飛機的有效運營、性能監(jiān)控和健康管理等均有著至關(guān)重要的作用。
ACARS可以監(jiān)測和報告當(dāng)前航班飛行階段的變化,其中包含四種階段狀態(tài)(滑出——Out of the gate;起飛——Off the ground;著陸——On the ground;滑入——Into the Gate),工業(yè)上簡稱為OOOI,這四個狀態(tài)也稱為OOOI事件[3]。一次完整的飛行航段包含上述四種狀態(tài),即在飛行過程中將依次產(chǎn)生四種OOOI報文,這些報文被稱為OUT報、OFF報、ON報、IN報。對于OOOI事件的監(jiān)控可被用于航空運行調(diào)度安排、航班滑出預(yù)測和機場場面運行監(jiān)控等[4-7]。Nakahara等[8]對美國紐約肯尼迪機場的機場場面運行數(shù)據(jù)進行分析后指出,利用OUT報文和OFF報文之間的時間間隔,可為機場場面運行的擁堵情況提供一個良好的度量。作為ACARS系統(tǒng)的一個重要應(yīng)用,利用OOOI報文中所包含的狀態(tài)信息可以為航空公司的地面報文監(jiān)控系統(tǒng)提供飛機航段劃分,文獻(xiàn)[9]利用CLIPS開發(fā)工具初步實現(xiàn)了適用于航空公司地面監(jiān)控的航段識別系統(tǒng),但是其僅實現(xiàn)了航段識別的邏輯推理,在知識獲取和自主學(xué)習(xí)等方面還有待完善。
隨著航空業(yè)的飛速發(fā)展,全球范圍內(nèi)航班數(shù)量與日俱增??罩薪煌ǖ膿頂D以及一些人為或設(shè)備故障為航空公司的管理監(jiān)控帶來了巨大的挑戰(zhàn)。在OOOI報文的實際使用過程中,各種人為因素、設(shè)備故障和環(huán)境干擾等會導(dǎo)致報文內(nèi)容的錯誤或缺失,甚至出現(xiàn)報文丟失的情況。例如:2017年1月和2月某公司一架737-800飛機機組反映ACARS OOOI報文ON和IN時間相同的故障情況,經(jīng)過對歷史報文分析后發(fā)現(xiàn)該故障在2016年12月就已經(jīng)出現(xiàn),之后維修人員經(jīng)過長達(dá)3個月的故障排查才解決了此次故障情況。這種非正常情況的出現(xiàn),極有可能導(dǎo)致地面系統(tǒng)不能準(zhǔn)確識別航班所處的航段,進而發(fā)出錯誤的請求,影響航班任務(wù)的正常執(zhí)行。
針對OOOI報文出現(xiàn)內(nèi)容差錯、部分內(nèi)容缺省甚至報文丟失的異常情況,本文提出了一種基于知識輔助和OOOI報文的飛機航段識別方法。該方法借助專家系統(tǒng)的設(shè)計思路和運行流程,考慮航班多航段運行的實際特性,以機載燃油油量、預(yù)計到達(dá)時間和位置報等作為輔助知識,以O(shè)OOI報文中的關(guān)鍵參數(shù)作為航段推理的事實依據(jù),建立了一套完整的飛行航段識別邏輯及知識庫。以真實報文為例,對報文漏發(fā)的情況進行航段識別并分析。結(jié)果表明,利用航段改變、航段不變、報文無效和航段撤銷等判別結(jié)果,該系統(tǒng)可有效地實現(xiàn)飛機航段識別。
作為一種在飛機和地面站之間進行數(shù)據(jù)傳輸?shù)臄?shù)字式數(shù)據(jù)鏈系統(tǒng),ACARS系統(tǒng)的數(shù)據(jù)管理單元通過采集多種機載傳感器(例如,艙門、剎車和起落架上的傳感器)的輸出信號來定義OOOI事件。一次完整的航班任務(wù)包含上述四種狀態(tài),即在飛行過程中將依次產(chǎn)生四種OOOI報文,在ACARS報文體系中,這些報文被稱為OUT報、OFF報、ON報和IN報[10]。
OOOI報文按照飛機執(zhí)行航班任務(wù)的事件發(fā)生順序進行播發(fā),依次是OUT報、OFF報、ON報和IN報,分別對應(yīng)飛機滑出、起飛、著陸和滑入等四種狀態(tài),利用這四種狀態(tài)即可描述一次完整的航班航段,如圖1所示。
圖1 完整航段中OOOI報文產(chǎn)生順序
由于OOOI報文是用于報告飛機狀態(tài)的報文,所以一般出現(xiàn)在ACARS報文下行報文中,飛機通過地-空數(shù)據(jù)通信的方式將表示飛機滑出、起飛、著陸和滑入等四種狀態(tài)事件的OOOI報文下傳給地面。下行報文符合ARINC618協(xié)議[11]的數(shù)據(jù)格式,由數(shù)據(jù)鏈服務(wù)提供商(Datalink Service Provider,DSP)將其轉(zhuǎn)換為符合ARINC620協(xié)議[12]數(shù)據(jù)格式的報文,并轉(zhuǎn)發(fā)給其他終端用戶。
在地空數(shù)據(jù)通信網(wǎng)絡(luò)中,飛機通過空地鏈路向地面?zhèn)鬏敂?shù)據(jù),信息以字符的形式被記錄在傳輸?shù)膱笪闹校琌OOI的傳輸服務(wù)行(即報文頭)包括飛機號、航班號等重要參數(shù)[13]。此外,其他參數(shù)的解釋以及參數(shù)在報文中的字符表示形式,如表1所示。
表1 OOOI報文基本內(nèi)容
地面終端用戶按照ARINC620協(xié)議標(biāo)準(zhǔn)對經(jīng)由DSP轉(zhuǎn)發(fā)后的OOOI報文進行解析,以實際中的OOOI報文為例,如圖2所示是山東航空于2017年4月26日當(dāng)天接收并保存的OUT報文。解析之后,可獲得的報文內(nèi)容如下:報文發(fā)送的時刻為2017年4月26日10時51分38秒,機尾號為B-5119,航班號為SC4779,起飛機場代碼ZHCC,報文類型是OUT報,報文接收時間是10時51分,當(dāng)前機載油量1×104kg。
圖2 OUT報文示例
由圖2可見,OUT報的關(guān)鍵參數(shù)為起飛機場信息。同理,依據(jù)ARINC620協(xié)議標(biāo)準(zhǔn)對OFF報、ON報和IN報進行解析,其中OFF報的關(guān)鍵參數(shù)為起飛機場和目的機場信息,ON和IN報的關(guān)鍵參數(shù)均包含目的機場信息。不同類型的報文在報文類型標(biāo)識符處會有所不同,OOOI報文中通過“OUT”“OFF”“ON”“IN”等字符區(qū)分不同的報文類型。
在商業(yè)、工業(yè)等領(lǐng)域,專家系統(tǒng)(Expert System,ES)的應(yīng)用較為廣泛,其本質(zhì)是一種高效的代碼程序,這類智能程序通過運用某一專業(yè)領(lǐng)域中人類專家積累的專業(yè)知識或者經(jīng)驗,模仿專家解決問題的邏輯,從而高效地解決系統(tǒng)面臨的現(xiàn)實問題[14]。
航段識別的知識獲取是建立專家系統(tǒng)知識庫的主要手段,搭建知識庫是實現(xiàn)專家系統(tǒng)的核心和首要工作[15]。提取書本、文獻(xiàn)和該領(lǐng)域?qū)<业募夹g(shù)經(jīng)驗等已有的知識,并將其轉(zhuǎn)化為機器能夠識別的形式就是知識獲取的過程。
為了使基于知識輔助和OOOI報文的飛機航段識別方法具有專家系統(tǒng)的邏輯推理能力,需要為推理邏輯提供事實依據(jù),也就是事實庫。事實庫中應(yīng)包含當(dāng)前報文內(nèi)容和歷史報文內(nèi)容,推理邏輯將依據(jù)這些事實綜合得出識別結(jié)果。因此,應(yīng)當(dāng)選取報文中合適的參數(shù),作為邏輯推理的事實,將這些參數(shù)解析出來并保存在數(shù)據(jù)庫中。
完整的OOOI報文可分為報頭和正文兩部分。一般情況下,報頭部分位于OOOI報文的前5行,其報文格式基本保持不變,其包含的有效信息包括發(fā)送地址、報文觸發(fā)時間、報文接收時間、通信服務(wù)商代碼、飛機號和航班號等。報文正文的內(nèi)容及格式可以依據(jù)不同航空公司的需求進行客戶化的編輯和修改,不同航空公司發(fā)送的OOOI報文格式可能會有所不同,但其一般情況下均會包含表征航班OOOI運行狀態(tài)的關(guān)鍵信息,主要包括報文名稱、發(fā)送時間、起飛機場代碼、目的機場代碼和飛機燃油油量等參數(shù)。
由于任意兩個連續(xù)航段的起飛機場及目的機場代碼肯定不同,因此識別航段的最優(yōu)判斷依據(jù)是報文正文中的起飛機場和目的機場代碼。但在實際發(fā)送的報文中,起飛機場和目的機場代碼不同時出現(xiàn)時,航班號也可作為判斷依據(jù)。在一個完整正常的航班任務(wù)中,航班號是保持不變的,但當(dāng)航班任務(wù)是經(jīng)停的航班時,同一個航班號會對應(yīng)多個飛行航段,此時需要利用其他附加信息進行輔助識別。其中,機載燃油油量、預(yù)計到達(dá)時間(Estimated Time of Arrival,ETA)和ACARS的位置報(POS報)均是重要的輔助識別依據(jù)。飛機執(zhí)行航段任務(wù)的過程一定會伴隨著燃油油量的消耗,燃油油量和OOOI事件的發(fā)生順序之間存在著對應(yīng)的直接聯(lián)系。利用ETA作為輔助判斷知識,可以有效防止在大量報文無法接收時,將連續(xù)兩個航段識別為一個航段的可能。因此,本文選取燃油油量、ETA和POS報等作為識別OOOI過程的知識輔助參數(shù)。
航段識別規(guī)則即為航段識別知識的表示方式,即如何把用于航段識別的專業(yè)知識轉(zhuǎn)化為計算機能夠存儲和應(yīng)用的表示形式。目前最常用的方式是規(guī)則表示法,它直接模擬人類思維過程,清晰直接地將知識表示成人類思維中最簡單的因果關(guān)系,一般是通過“IF-THEN”的規(guī)則形式表達(dá)[16-17],即:
IF P
THEN Q
其中:P代表規(guī)則的執(zhí)行條件,例如前提、狀態(tài)等;Q表示結(jié)論或者規(guī)則執(zhí)行結(jié)果等。具體含義為:若P條件成立或描述為真,則可推斷出結(jié)論Q或執(zhí)行Q。通過歸納航段識別領(lǐng)域的相關(guān)基礎(chǔ)知識,考慮利用OOOI報文進行航段識別時可能的出錯模式,分析并總結(jié)專家經(jīng)驗,得出了基于OOOI報文進行航段識別的知識[9],并將其以規(guī)則形式表示出來,具體內(nèi)容如表2所示。
表2 飛行航段識別規(guī)則
續(xù)表2
在上述已有知識的基礎(chǔ)上,航段識別系統(tǒng)需要按照一定的推理機制應(yīng)用所有的規(guī)則對OOOI報文進行推理和識別。在專家系統(tǒng)中,推理機通過讀取知識庫中的航段識別規(guī)則,依照事實庫的已有事實,遵循正向推理的原則,從已有的信息和數(shù)據(jù)出發(fā),通過沖突消解的方式逐步建立基于OOOI報文的航段識別推理邏輯。建立推理邏輯的關(guān)鍵之處在于分析OOOI報文應(yīng)用過程中可能出現(xiàn)的情況,并依據(jù)報文解析的關(guān)鍵參數(shù)設(shè)計合適的推理邏輯。
在正常情況下,飛機的一個航段能剛好完整地發(fā)送一組OOOI報文。但在報文的實際使用中一個航段可能會有多個OUT報或IN報。若航班執(zhí)行過程中有飛機復(fù)飛的情況,則會發(fā)送多個ON報和OFF報,由此就會存在將一個航段誤識別為多個航段的情況。因此,根據(jù)航班多航段運行的實際特性,以機載燃油油量、ETA和POS報等作為輔助知識,對接收到的OOOI報文進行有效參數(shù)的提取,通過航段識別推理邏輯對報文內(nèi)容進行判定。
由表2可知,依據(jù)航段識別規(guī)則,在航段識別的初始階段首先需要對報文的類型進行解析和判斷,提取報文中的關(guān)鍵參數(shù),當(dāng)識別到不同類型的報文時,結(jié)合歷史報文信息依據(jù)不同的判斷邏輯進行下一步的航段識別,航段識別邏輯的流程如圖3所示。
圖3 飛行航段識別邏輯流程
由圖3可見,若系統(tǒng)識別到當(dāng)前報文為OUT報時,將進入條件2的判斷邏輯,從而進行下一步的識別,OUT報的識別邏輯流程如圖4所示,其中“DEP”指起飛機場或者目的機場代碼。
圖4 OUT報邏輯流程
由圖4可見,若當(dāng)前OUT報文的DEP有效,則將當(dāng)前DEP與歷史報文的DEP比對。若與歷史報文的DEP一致,且通過歷史OFF報、ON報或者位置報等判斷出飛機沒有起飛,代表飛機推出后滑回又重新推出的情況,故判定航段不改變;否則,若飛機已起飛,代表飛機返航后再推出的情況,判定航段改變。圖4中“燃油消耗<0”指當(dāng)前報文的油量參數(shù)大于歷史報文油量。若當(dāng)前OUT報文的DEP無效,則可以通過油量參數(shù)進行判斷。
如圖5所示,對于OFF報文,判定航段不變的唯一條件為飛機未起飛。如飛機已起飛,通過對比當(dāng)前OFF報與上一個OFF報的時間間隔,確定航段是否改變。如當(dāng)前報文的接收時間與上一個報文的接收時間差小于某個定值,判定當(dāng)前OFF報為重復(fù)發(fā)送,拋棄報文;如大于定值,則判定當(dāng)前OFF報正常,航段改變。同理,通過查看歷史報文是否有IN報,也可以判斷當(dāng)前OFF報是否為重復(fù)發(fā)送。
圖5 OFF報邏輯流程
圖6為ON報邏輯流程,其中“當(dāng)前報文時間>ETA”指當(dāng)前ON報文的接收時間在預(yù)計到達(dá)時間之后,如滿足此條件,則代表飛機航段改變,否則通過歷史報文是否存在ON報進一步判斷當(dāng)前ON報文是否有效。如存在,則代表當(dāng)前ON報文重復(fù)發(fā)送,拋棄報文;如不存在,則代表當(dāng)前ON報文正常,航段不變。
圖6 ON報邏輯流程
圖7為IN報邏輯流程,可以看出,與歷史報文DEP不相同則表明當(dāng)前報文無效拋棄。需要注意的是“與歷史報文DEP相同”這一判斷成立的條件包括不存在起飛機場和目的機場的報文,并且在飛機未起飛的情況下,判定為撤銷航段,刪除該記錄。
圖7 IN報邏輯流程圖
若當(dāng)前報文為POS報,系統(tǒng)則將POS報作為輔助航段識別的判斷條件,POS報的邏輯流程如圖8所示。由圖8可知,“飛機落地”這一判斷成立的條件包括存在ON報、存在POS報和IN報以及存在OFF報和IN報三種情況。
圖8 POS報邏輯流程
本文利用專家系統(tǒng)的框架設(shè)計實現(xiàn)了一種基于知識輔助和OOOI報文的飛機航段識別方法,并在此基礎(chǔ)上搭建一套完整的飛機航段識別系統(tǒng)。該系統(tǒng)以O(shè)OOI報文為數(shù)據(jù)源,根據(jù)航班多航段運行的實際特性,以機載燃油油量、ETA和POS報等作為輔助知識,使用C# 編程語言在Microsoft Visual Studio 2010的平臺中完成系統(tǒng)運行界面的設(shè)計和開發(fā)。
基于知識輔助和OOOI報文的飛機航段識別系統(tǒng)是以飛機OOOI報文為數(shù)據(jù)源,以“對象”為中心來設(shè)計系統(tǒng)運行界面,在Microsoft Visual Studio 2010的環(huán)境下使用C#語言的可視化窗口設(shè)計進行編程開發(fā)。在進行解析OOOI報文的基礎(chǔ)上,將報文內(nèi)的關(guān)鍵參數(shù)保存到Microsoft Office Access數(shù)據(jù)庫中,通過對數(shù)據(jù)庫的操作實現(xiàn)對報文參數(shù)的讀取和錄入。
基于OOOI報文的多航班飛機航段識別系統(tǒng)的結(jié)構(gòu)原理圖,如圖9所示。系統(tǒng)的主要功能模塊包括報文錄入模塊、報文解析模塊、航段識別模塊、當(dāng)前航段報文查詢模塊、歷史航段報文查詢模塊和系統(tǒng)登錄與退出模塊。每個模塊互相關(guān)聯(lián),共同實現(xiàn)航段識別系統(tǒng)的有效工作。
圖9 系統(tǒng)結(jié)構(gòu)原理圖
(1) 報文錄入模塊。該模塊可實現(xiàn)報文參數(shù)的自動錄入和手動錄入兩種方式。采用自動接收報文方式時,可以實時處理OOOI報和POS報的信息,當(dāng)系統(tǒng)正常啟動時就自動開啟這種工作方式,該功能通過固定時間間隔的數(shù)據(jù)刷新方式實現(xiàn)。報文手動錄入模塊主要用于特殊情況下的臨時航班錄入。采用手動錄入方式時,可在該窗口的下拉菜單中手動選擇該報文的數(shù)據(jù)庫、表名以及路徑等關(guān)鍵信息,系統(tǒng)將按照所選信息執(zhí)行報文錄入,并將相應(yīng)參數(shù)存入數(shù)據(jù)庫。
(2) 報文解析模塊。該模塊對接收到的OOOI報或POS報按照ARINC620協(xié)議標(biāo)準(zhǔn)進行解析,可獲得的報文的關(guān)鍵參數(shù),包括:報文發(fā)送的時刻,機尾號,航班號,起飛機場代碼,目的機場代碼,報文類型和當(dāng)前載機油量等。同時,將解析后的報文關(guān)鍵參數(shù)保存到Microsoft Office Access數(shù)據(jù)庫的相應(yīng)表單中。
(3) 航段識別模塊。航段識別功能的實現(xiàn)流程如圖10所示。報文錄入到數(shù)據(jù)庫中以后,即獲得當(dāng)前報文的參數(shù)信息,查詢并調(diào)取歷史數(shù)據(jù)庫中對應(yīng)飛機號的歷史信息,將當(dāng)前報文參數(shù)與歷史報文參數(shù)綜合通過系統(tǒng)的邏輯判斷,得到判斷結(jié)果,共分為以下4種判斷結(jié)果:航段改變、航段不變、報文無效和航段撤銷。對于不同判斷結(jié)果,系統(tǒng)自動完成對應(yīng)的后續(xù)操作,并將航段識別結(jié)果顯示在界面上,最后將識別結(jié)果和參數(shù)一并錄入到數(shù)據(jù)庫中。
圖10 飛行航段識別功能實現(xiàn)流程
(4) 當(dāng)前航段報文查詢模塊。該模塊以當(dāng)前航段下所有航班的飛機號作為初級篩選條件,結(jié)合航段識別模塊的航段識別結(jié)果,為用戶提供當(dāng)前航段下的所有航班的OOOI報文內(nèi)容及其所屬航段信息,包括該報文的狀態(tài)、類型和航段標(biāo)號。同時,該航段已存在的報文信息會通過右側(cè)的報文按鈕進行顯示,名稱變?yōu)榧t色的按鈕代表該報文類型已存在,并可通過單擊進行查看。當(dāng)前航段下報文內(nèi)容及其航段識別結(jié)果,如圖11所示。
圖11 當(dāng)前航段下報文內(nèi)容及其航段識別結(jié)果
(5) 歷史航段報文查詢模塊。當(dāng)用戶輸入需要查詢的飛機號和起止日期之后,系統(tǒng)以列表的形式展示出所查詢飛機的所有航段信息。
(6) 系統(tǒng)登錄與退出模塊。系統(tǒng)登錄與退出模塊通過友好的人機交互接口,實現(xiàn)系統(tǒng)的登錄、用戶注冊和退出等功能。
OOOI報文在航班多航段運行的實際通信過程中,往往會出現(xiàn)由于人為因素、設(shè)備故障、環(huán)境干擾等原因?qū)е聢笪漠惓G闆r,使得航空公司的地面系統(tǒng)不能準(zhǔn)確識別航班狀態(tài),進而發(fā)出錯誤的請求或決策指令,影響航班任務(wù)的正常執(zhí)行。OOOI報文主要的錯誤情況包括報文漏發(fā)、報文重復(fù)和報文延誤等。按照常見的故障類型進行報文仿真,以同一個時間范圍內(nèi)的4個航班號的50組OOOI報文數(shù)據(jù)為觀察對象,系統(tǒng)均可有效地對航段進行劃分,實現(xiàn)航段改變、航段不變、報文無效和航段撤銷等判別結(jié)果。
同時,以飛機號為B-5513在2017年4月25日當(dāng)天的真實報文為例,針對報文漏發(fā)的情況進行實驗并分析。
如圖12所示,當(dāng)前系統(tǒng)判斷飛機號B-5513接收到的報文為0航段的ON報,此時該0航段已接收的報文包括OUT報、OFF報、POS報和ON報,當(dāng)前該航段的IN報還未發(fā)送。下一條系統(tǒng)接收到的報文記錄情況如圖13所示,此時機載設(shè)備發(fā)送的報文為該架飛機下一航段的OUT報,而未發(fā)送IN報,經(jīng)系統(tǒng)判斷此時航段已經(jīng)改變,即當(dāng)前報文為飛機號為B-5513的1航段OUT報,此時系統(tǒng)邏輯判斷上一航段的IN報漏發(fā)了。
圖12 系統(tǒng)接收ON報
由圖13可知,當(dāng)接收到該OUT報時,系統(tǒng)判斷的流程為:讀入當(dāng)前的OUT報文,將報文內(nèi)容進行解析獲取參數(shù)信息,由于報文類型為OUT報,進入OUT報邏輯判斷,由于當(dāng)前報文信息中不含目的機場信息,所以判斷當(dāng)前報文機場代碼無效,進入下一判斷,又由于當(dāng)前報文燃油量值大于上一報文的燃油量值,所以判斷燃油消耗小于0,由此得到結(jié)論為航段改變。
圖13 系統(tǒng)漏發(fā)IN報
OOOI報文往往在實際的通信過程中不可避免地會出現(xiàn)多種異常情況,例如人為因素、設(shè)備故障、環(huán)境干擾等導(dǎo)致報文的不確定性。本文借助專家系統(tǒng)設(shè)計思路和運行流程,提出了一種基于知識輔助和OOOI報文的飛機航段識別方法。以機載燃油油量、預(yù)計到達(dá)時間和位置報等作為輔助知識,利用實際OOOI報文中的關(guān)鍵參數(shù)作為航段推理的事實依據(jù),建立了一套完整的航段識別邏輯和知識庫。最后,以真實報文為例,針對報文漏發(fā)的情況進行航段識別診斷并分析,實驗結(jié)果表明,該方法可對航段進行有效劃分,實現(xiàn)航段改變、航段不變、報文無效和航段撤銷等判別結(jié)果,增加航段識別的準(zhǔn)確程度和效率。