胡鐵喬,陳浩帆
(中國民航大學 天津市智能信號與圖像處理重點實驗室,天津 300300)
現(xiàn)如今,隨著飛行器的數(shù)量越來越多,無線電技術(shù)的應用趨于多樣化發(fā)展。其中,1090 MHz信道被廣泛使用[1]。然而,伴隨著數(shù)量的增多,1090 MHz信道也越來越擁擠[2]。為探究1090 MHz信道的使用情況[3,4],為現(xiàn)有系統(tǒng)的工作提供保障,有必要對1090 MHz信道進行監(jiān)測和分析,了解信道的占用狀況。日本方面做過類似的研究,文獻[5-7]使用機載雷達,對日本國內(nèi)所有機場的1090 MHz信號分別進行采集,根據(jù)時間長度和信號幅度統(tǒng)計出信號的頻譜占用率。但是這種方法太復雜,且成本過高,根本無法在日常進行監(jiān)測。國內(nèi)針對1090 MHz信道的研究相對較少,文獻[8]采用一種軟件無線電平臺接收1090 MHz信道內(nèi)的信號,根據(jù)不同種類信號的接收率計算出頻譜占用率。由于實驗條件的限制,得出的結(jié)果很片面,并不準確。
本文利用實驗室的1090 MHz信號接收機[9-11],通過計算機編程將采集到的信道內(nèi)主要信號(ADS-B信號、二次雷達信號以及干擾信號)的數(shù)據(jù)進行解析,解析出的數(shù)據(jù)使用上位機軟件界面完成監(jiān)測和分析。該方法簡潔有效,操作便利,通過軟件系統(tǒng)在日常就可以完成對1090 MHz信道的監(jiān)測和分析,具有很強的開放性和擴展性,豐富了現(xiàn)有的1090 MHz信號接收機的功能,未來可以增加新的模塊對1090 MHz信道進行全面評估和監(jiān)測[12]。
設(shè)計1090 MHz信道分析軟件,需要考慮對數(shù)據(jù)的解析、數(shù)據(jù)的存放以及數(shù)據(jù)的監(jiān)測分析這3個方面。基于此思路,設(shè)計了數(shù)據(jù)解析模塊、數(shù)據(jù)庫存儲模塊和顯示模塊。3個模塊相互關(guān)聯(lián),完成各自功能的同時會對下一個模塊起到承上啟下的作用。接收的數(shù)據(jù)在數(shù)據(jù)解析模塊中進行解析,解析完成后數(shù)據(jù)會存入存儲模塊,同時解析出的一部分數(shù)據(jù)可以用于顯示模塊里對信道占用率的實時顯示。經(jīng)過存儲模塊對數(shù)據(jù)的計算處理和保存,后臺存儲部分基本完成。上位機軟件部分基于Visual Studio 2015開發(fā)平臺,使用C++編程語言,通過顯示模塊的上位機軟件界面調(diào)用存儲模塊的數(shù)據(jù)進行可視化顯示,具體分析信道占用情況。1090 MHz信道分析軟件系統(tǒng)框架如圖1所示。
圖1 1090 MHz信道分析軟件框架
為實現(xiàn)對1090 MHz信道占用情況的監(jiān)測,首先需要對信道中的各類信號數(shù)據(jù)進行解析。本文使用實驗室1090 MHz信號接收機,通過TCP協(xié)議(保證數(shù)據(jù)傳輸可靠)傳輸接口[13],每隔一秒鐘采集一次包含各類信號的統(tǒng)計數(shù)據(jù)。在Visual Studio 2015開發(fā)平臺中進行數(shù)據(jù)的解析處理和計算,得到信道分析所需的數(shù)據(jù)。處理結(jié)束后,數(shù)據(jù)解析模塊的功能基本完成,接下來需要將數(shù)據(jù)送到存儲模塊執(zhí)行存儲。
存儲模塊執(zhí)行后臺存儲部分。由于存儲的數(shù)據(jù)量非常龐大且對數(shù)據(jù)的使用有更多的要求,故需要有數(shù)據(jù)存儲和處理能力的軟件來完成此模塊的功能?;谂c其它軟件契合度和使用效果的考慮,本文選用的是本地數(shù)據(jù)庫SQL Server 2014,具體特點請參見文獻[14]。數(shù)據(jù)庫的設(shè)計和數(shù)據(jù)的處理調(diào)用是存儲模塊的核心部分。一方面,數(shù)據(jù)解析后得到的參數(shù),需要與數(shù)據(jù)庫中設(shè)計的表相匹配,才能有序且高效地將數(shù)據(jù)存入其中。另一方面,后期對數(shù)據(jù)庫中的數(shù)據(jù)進行調(diào)用分析時,可以編寫SQL函數(shù)代碼完成所需功能,對數(shù)據(jù)的檢索和處理更加簡潔高效,而不是只能在Visual Studio平臺中編寫代碼處理數(shù)據(jù)。此外,ADO是連接Visual Studio平臺和SQL Server數(shù)據(jù)庫的重要一環(huán),通過ADO接口連接可以將數(shù)據(jù)解析模塊解析出的數(shù)據(jù)保存到數(shù)據(jù)庫中,完成原始數(shù)據(jù)的存儲執(zhí)行功能。接下來需要在數(shù)據(jù)庫中對原始數(shù)據(jù)進行再一次的數(shù)據(jù)處理,計算出所需要的數(shù)據(jù),這樣就可以在顯示模塊中調(diào)用各類數(shù)據(jù)進行顯示分析。
顯示模塊是1090 MHz信道分析軟件的主要部分。完成顯示分析,需要考慮到軟件界面的穩(wěn)定性,操作的簡潔高效性和與Visual Studio平臺以及數(shù)據(jù)庫的匹配等。基于此,本軟件設(shè)計界面采用MFC來完成制作。MFC由微軟開發(fā),是一套面向?qū)ο蟆⑹褂肅++編寫應用程序的框架和引擎,它將大部分的Window API封裝到C++類中,以類成員函數(shù)的形式提供給開發(fā)人員調(diào)用[15,16]。上位機軟件部分使用MFC(microsoft foundation classes)來制作界面,結(jié)合MFC的按鈕、編輯框、組合框等控件類,根據(jù)不同的需求設(shè)置參數(shù),實現(xiàn)各自的功能,將相關(guān)數(shù)據(jù)從數(shù)據(jù)庫中回調(diào)出來,使用CDC類繪圖函數(shù),可視化處理后,在軟件界面中顯示,實現(xiàn)信道分析功能。
1090 MHz信道分析軟件系統(tǒng)流程如圖2所示,該軟件可以根據(jù)接收到的1090 MHz信號實時監(jiān)視信道占用率的變化情況,并且能夠讀取數(shù)據(jù)庫中存儲的數(shù)據(jù),在軟件界面中對全天的1090 MHz信道占用情況做具體分析并顯示。
圖2 1090 MHz信道分析軟件系統(tǒng)流程
根據(jù)設(shè)定,1090 MHz信號接收機每秒鐘接收一次數(shù)據(jù),所以需要在Visual Studio平臺中建立與下位機的通信接口,使用send()函數(shù)來向TCP連接的另一端發(fā)送數(shù)據(jù),并編寫數(shù)據(jù)接收線程。完成編寫后,首先對存入緩沖區(qū)的數(shù)據(jù)進行幀頭檢測,判斷是否收到完整準確的一幀。如果不完整,則丟掉這一幀數(shù)據(jù),更新緩沖區(qū)位置,重新接收;如果完整,則開始進行解析。
根據(jù)數(shù)據(jù)幀的解碼標準,將對應字節(jié)的數(shù)據(jù)進行提取和計算,分別得到正確ES幀數(shù)RES、 正確S幀數(shù)RS、 正確AC幀數(shù)RAC、 錯誤ES幀數(shù)WES、 錯誤S幀數(shù)WS、 錯誤AC幀數(shù)WAC和干擾脈沖數(shù)ND。 ES幀信號的長度為120 μs,S幀信號的長度約為64 μs,AC幀信號的長度約為20 μs,干擾脈沖信號的長度約為0.5 μs。根據(jù)4種信號的長度,可以計算出單位時間內(nèi)的信道占用率ChannelRate, 有效占用率EffectivityRate, 干擾占用率DisturbRate和誤幀率WrongRate。 計算公式如下
ChannelRate=[(RES+WES)*120+(RS+WS)*64+ (RAC+WAC)*20+ND*0.5]*10-4
(1)
EffectivityRate=(RES*120+RS*64+RAC*20)*10-4
(2)
DisturbRate=(ND*0.5)*10-4
(3)
WrongRate=(WES*120+WS*64+WAC*20)*10-4
(4)
從公式中可以看出,信道占用率是其它3種占用率的總和,干擾占用率由干擾脈沖數(shù)計算,有效占用率由各正確幀數(shù)計算,誤幀率由各錯誤幀數(shù)計算。各占用率計算完成以后,將所有數(shù)據(jù)存入數(shù)據(jù)庫中。
數(shù)據(jù)解析模塊解析出的數(shù)據(jù)要實時地保存到數(shù)據(jù)庫中進行統(tǒng)計。在此之前,根據(jù)數(shù)據(jù)的類型和軟件性能的需求,需要在SQL Server 2014中創(chuàng)建本地數(shù)據(jù)庫并新建表。首先,需要新建一個數(shù)據(jù)接收表用于接收原始數(shù)據(jù)。表設(shè)計完成后,通過ADO接口編程執(zhí)行存儲。由于軟件界面大小有限,調(diào)用全天的占用率做分析時,不能將每一秒鐘的數(shù)據(jù)全部都顯示在界面中?;谲浖到y(tǒng)的整體性能以及數(shù)據(jù)分析的考慮,需要對原始數(shù)據(jù)做均值處理,把每分鐘的數(shù)據(jù)求和取平均得出一個均值,再在軟件界面中做可視化顯示。使用C++編程將數(shù)據(jù)累加求和處理成均值,需要把數(shù)據(jù)庫中全天的數(shù)據(jù)全部回讀后才能完成計算,這樣就會造成可視化顯示的時候等待時間過長,出現(xiàn)卡頓現(xiàn)象。而數(shù)據(jù)庫的功能則較為全面,在數(shù)據(jù)庫中把數(shù)據(jù)處理好以后,讀取的數(shù)據(jù)量就會大幅度減少,可視化顯示時很流暢,不會出現(xiàn)卡頓問題。因此,為了滿足上位機軟件界面中各類數(shù)據(jù)的可視化顯示,需要對原始數(shù)據(jù)進行處理,在數(shù)據(jù)庫中需另外新建兩種表,分別為數(shù)據(jù)抽樣表和數(shù)據(jù)均值表,對數(shù)據(jù)接收表中的原始數(shù)據(jù)進行固定截取間隔處理和均值處理,然后存入各自的表中,完成所需分析功能。數(shù)據(jù)處理結(jié)束后,數(shù)據(jù)庫部分的操作基本完成,所需數(shù)據(jù)已經(jīng)全部準備完畢。
2.2.1 ADO
ADO定義請參見文獻[17]。該程序是一組優(yōu)化的訪問數(shù)據(jù)庫專用對象集合,按程序作用主要分為連接對象(Connection)、命令對象(Command)、記錄對象(RecondSet)三部分。使用C++訪問數(shù)據(jù)庫可以用_ConnectionPtr、_CommandPtr和_RecordsetPtr這3種指針來實現(xiàn)。通過ADO接口可以連接上位機軟件和數(shù)據(jù)庫,方便數(shù)據(jù)的存儲和讀取操作。
使用ADO接口前,需要先導入ADO庫,即在stdafx.h中使用import語句導入,代碼如下:
#import "C: Program FilesCommon FilesSystemadomsado15.dll"no_namespace rename("EOF","ADOEOF")rename("BOF","ADOBOF")
導入完成后,使用ADO接口連接數(shù)據(jù)庫存儲數(shù)據(jù)。連接數(shù)據(jù)庫存儲數(shù)據(jù)程序流程如圖3所示。
圖3 連接數(shù)據(jù)庫存儲數(shù)據(jù)程序流程
2.2.2 數(shù)據(jù)接收表、數(shù)據(jù)抽樣表和數(shù)據(jù)均值表
設(shè)計數(shù)據(jù)接收表時,首先將統(tǒng)計時間寫入第一個字段。統(tǒng)計時間統(tǒng)計的是各類數(shù)據(jù)存入數(shù)據(jù)庫時的系統(tǒng)時間。由于數(shù)據(jù)每秒解析一次,故字段的數(shù)據(jù)類型設(shè)置為datetime型,調(diào)用getdate()函數(shù),即可得到當前系統(tǒng)時間。其余字段按照各類占用率和各類幀數(shù)的名稱分別設(shè)置。由于計算出的占用率為float型浮點數(shù),故表中各類占用率的數(shù)據(jù)類型設(shè)置為對應的real型;而幀數(shù)為int型整數(shù),故各類幀數(shù)的數(shù)據(jù)類型設(shè)置為對應的smallint型,合理規(guī)劃內(nèi)存占用空間。對照數(shù)據(jù)接收表,分別對數(shù)據(jù)抽樣表和數(shù)據(jù)均值表建立字段和選取數(shù)據(jù)類型。
3種表設(shè)計完成后,編寫SQL代碼,先讀取數(shù)據(jù)接收表,截取需要分析的原始數(shù)據(jù)保存到數(shù)據(jù)抽樣表,再利用各類函數(shù)求出所需數(shù)據(jù)的均值,分組排序后將結(jié)果保存到數(shù)據(jù)均值表中。一般情況下截取的數(shù)據(jù)從第一天零時開始,到最后一天二十四時前結(jié)束。
顯示分析部分制作了實時信道占用率顯示界面、全天信道占用率顯示分析界面和信道占用率與幀數(shù)分析比較界面,分別實現(xiàn)不同的功能。數(shù)據(jù)解析完成后,打開MFC制作的軟件界面,根據(jù)不同的按鈕類型,讀取各類數(shù)據(jù),可視化顯示出來。
數(shù)據(jù)采集的時間為2020年7月份,界面中顯示的均為時采數(shù)據(jù)時間。本次測試共接收了從7月7日到18日共12天的數(shù)據(jù),取8日到17日的完整數(shù)據(jù),并選取7月8日這天的數(shù)據(jù)用來顯示分析,根據(jù)真實數(shù)據(jù)對整個軟件系統(tǒng)進行檢驗。
數(shù)據(jù)庫中存儲的數(shù)據(jù)如圖4所示。圖4(a)為數(shù)據(jù)接收表的數(shù)據(jù),占用內(nèi)存大小約為57 MB;圖4(b)為數(shù)據(jù)均值表的數(shù)據(jù),內(nèi)存大小約為0.8 MB;圖4(c)為數(shù)據(jù)抽樣表的數(shù)據(jù),內(nèi)存大小約為46 MB。數(shù)據(jù)庫數(shù)據(jù)接收狀況良好,每條數(shù)據(jù)都完整地存儲下來,無異常數(shù)據(jù)出現(xiàn)。據(jù)此推算,存儲全年的數(shù)據(jù)大約占用2 G左右,故數(shù)據(jù)庫中只需建立這3個數(shù)據(jù)表,無需設(shè)計新表存儲統(tǒng)計數(shù)據(jù)。另外,在數(shù)據(jù)接收表中隨機選取某一時間點的原始數(shù)據(jù)60條,通過人工計算和數(shù)據(jù)均值表中這一時間點的數(shù)據(jù)進行比較,結(jié)果相同,驗證數(shù)據(jù)計算正確,系統(tǒng)處理無誤。
實時顯示信道占用率界面如圖5所示,測試時間為7月8日早上。上位機軟件連接1090 MHz信號接收機,點擊實時顯示占用率按鈕,函數(shù)中設(shè)置的定時器開始啟動,當前顯示時間則會調(diào)用系統(tǒng)時間。使用CDC類作圖函數(shù)可以將計算處理后的每秒鐘信道占用率的數(shù)值以波形顯示出來,達到實時監(jiān)測的目的。由于界面大小有限,20 min后,波形從起始位置開始更新,即逐個替換原來的點,循環(huán)顯示。
在側(cè)邊按鈕欄中,點擊回放全天占用率按鈕和占用率與幀數(shù)比較按鈕,分別顯示出全天信道占用率顯示分析界面和信道占用率與幀數(shù)分析比較界面。各界面均為非模態(tài)對話框,可以同時顯示出來,方便分析比較。
全天信道占用率顯示分析界面的功能是具體分析信道中各類占用率。信道占用率按每分鐘均值顯示如圖6(a)所示。側(cè)邊欄中,第一框為標識牌,是對本界面會出現(xiàn)的4種顏色波形的標識說明。起始時間設(shè)定框是根據(jù)數(shù)據(jù)庫中截取時間段的起始時間來設(shè)定,橫坐標軸會根據(jù)設(shè)定好的時間顯示時間間隔。起始時間默認零時零分。時間設(shè)定好以后,選擇截取時間段內(nèi)的任一天,點擊均值顯示按鈕,就會讀取數(shù)據(jù)均值表中的數(shù)據(jù),將全天占用率以波形顯示出來。點擊固定值顯示按鈕,會讀取數(shù)據(jù)抽樣表中每分鐘的第一個數(shù)據(jù)進行抽樣顯示,如圖6(b)所示,抽取的數(shù)據(jù)量和均值顯示的數(shù)據(jù)量相同,二者的波形可以作比較。從圖中可以看出,兩種顯示方式的波形總趨勢基本相同,而均值顯示與抽樣顯示相比則更為平滑,更能反映客觀真實的信道占用情況。點擊占用率分析顯示按鈕,會讀取各類占用率的均值,在同一個坐標軸中顯示出4種不同顏色的波形,分別代表4種占用率,根據(jù)標識牌中的提示,一一對應出各自的類型,分析各類占用率的變化情況。進入界面時,會從數(shù)據(jù)庫回讀截取的時間段,將日期顯示在循環(huán)顯示框中,點擊循環(huán)顯示按鈕,將截取時間段內(nèi)每日的信道占用率波形每隔一秒鐘循環(huán)播放,這樣可以對整個時間段內(nèi)信道占用率的波形變化有直觀的了解。
從整體上看,信道占用率從凌晨開始下降,到早上六七點左右基本處于最低;七八點開始航班流量逐漸增多,呈上升趨勢;白天基本為高峰期,晚上十點以后再逐漸下降,符合實際情況。
3.3.1 各類占用率分析
各類占用率分析如圖7所示。圖中共有4條波形,根據(jù)標識從上到下依次為信道占用率、干擾占用率、有效占用率和誤幀率。干擾占用率在信道使用逐漸進入高峰期后才會發(fā)生變化,而且,隨著有效占用率的升高,干擾占用率也會隨之下降。有效占用率的總體趨勢和信道占用率基本相同。誤幀率也會隨著信道占用率的升高而逐漸上升,高峰期間略高,其余時間起伏變化不大。
3.3.2 信道占用率與各幀數(shù)分析比較
信道占用率與幀數(shù)分析比較界面的功能是具體分析各類幀數(shù)對信道占用率的影響。信道占用率與正確幀數(shù)分析比較如圖8(a)所示,與錯誤幀數(shù)分析比較如圖8(b)所示。側(cè)邊欄第一框為標識牌,是對本界面會出現(xiàn)的4種顏色波形的標識說明。由于各幀數(shù)量相差很大,為便于觀察分析,需要對波形進行放縮處理。例如,正確AC幀數(shù)量需要將縱軸的數(shù)值乘以20倍,才是真實數(shù)量值;而錯誤AC幀數(shù)量則需要乘以10倍,其它各幀數(shù)量按照標識以此類推。根據(jù)比例,在同一個坐標軸中有層次地從上到下顯示出所有的波形。起始時間設(shè)定框和全天信道占用率顯示分析界面中的功能相同。設(shè)定好時間后,根據(jù)選擇的日期,點擊正確幀顯示按鈕,會讀取數(shù)據(jù)均值表中當日各正確幀和信道占用率的數(shù)據(jù)顯示;點擊錯誤幀顯示按鈕,會讀取當日各錯誤幀和信道占用率的數(shù)據(jù)顯示。局部放大時間框中可以設(shè)定以1 h為基準的橫軸時間,調(diào)用數(shù)據(jù)抽樣表中的數(shù)據(jù),在Visual Studio 2015中把每3 s的數(shù)據(jù)求和取一次平均值,計算1 h的數(shù)據(jù)量并顯示到界面中。將每60 s放大成每3 s做均值處理,可以更清晰地分析各時段信道占用率和各幀數(shù)量的變化情況。左邊的縱坐標軸是幀數(shù)量,右邊的縱坐標軸是信道占用率數(shù)值,根據(jù)顏色標識從上到下依次為信道占用率波形、AC幀數(shù)波形、ES幀數(shù)波形和S幀數(shù)波形。
圖4 數(shù)據(jù)庫中創(chuàng)建的表
圖5 實時顯示信道占用率界面
圖6 信道占用率顯示方式
圖7 信道中各類占用率分析
從圖中可以看出,AC幀數(shù)量所占比例最大,S幀數(shù)量最少,錯誤幀數(shù)也會隨著正確幀數(shù)的增加而增加,各幀數(shù)量與信道占用率的起伏變化基本相同。
3.3.3 局部放大分析
從8日這天信道占用率的波形來看,下午五點到六點間的信道占用率達到最高,故選取此時段進行局部放大分析。正確幀數(shù)局部放大如圖9(a)所示,錯誤幀數(shù)局部放大如圖9(b)所示。此時段內(nèi),信道占用率在下午五點半后達到高峰,而這時無論是正確幀的數(shù)量還是錯誤幀的數(shù)量,都為最多,無明顯異常數(shù)量變化。
在各類波形中任意選取一個時間點和數(shù)據(jù)庫中的數(shù)據(jù)進行對比完全符合,可以正確地讀出此時間點中數(shù)據(jù)庫存儲的數(shù)據(jù)。經(jīng)過與文獻[5-7]中日本方面的研究結(jié)果相比較,驗證此軟件系統(tǒng)中顯示的全天信道占用率變化的趨勢基本無誤,且符合實際情況。另外,原始數(shù)據(jù)中有對飛機架數(shù)的統(tǒng)計結(jié)果,通過對高峰期某一時間點的數(shù)據(jù)統(tǒng)計觀察,發(fā)現(xiàn)飛機的數(shù)量也在全天最高數(shù)量區(qū)間內(nèi),故驗證系統(tǒng)可視化顯示出的結(jié)果基本正確,滿足設(shè)計要求。
圖8 信道占用率與各類幀數(shù)分析比較
本文針對當前1090 MHz信道使用越來越多且越來越擁堵的現(xiàn)狀,設(shè)計開發(fā)了一個1090 MHz信道分析軟件。本軟件實現(xiàn)了1090 MHz信道監(jiān)測和分析功能。一方面,可以實時監(jiān)測信道占用率的變化情況;另一方面,通過后臺數(shù)據(jù)庫的對數(shù)據(jù)的存儲與統(tǒng)計,可以在上位機軟件界面中可視化顯示全天信道占用率,并具體分析信道中各類信號的占用情況。此外,軟件界面操作起來簡潔高效,人機交互便利。測試結(jié)果表明,通過該方法設(shè)計實現(xiàn)的1090 MHz信道分析軟件使用效果良好,能夠監(jiān)測1090 MHz信道的使用情況并做具體分析,為進一步擴展使用多種手段的監(jiān)測分析提供基礎(chǔ)。
圖9 幀數(shù)局部放大分析