APP下载

1090 MHz信道分析软件设计与实现

2022-03-22胡铁乔陈浩帆

计算机工程与设计 2022年3期
关键词:占用率信道均值

胡铁乔,陈浩帆

(中国民航大学 天津市智能信号与图像处理重点实验室,天津 300300)

0 引 言

现如今,随着飞行器的数量越来越多,无线电技术的应用趋于多样化发展。其中,1090 MHz信道被广泛使用[1]。然而,伴随着数量的增多,1090 MHz信道也越来越拥挤[2]。为探究1090 MHz信道的使用情况[3,4],为现有系统的工作提供保障,有必要对1090 MHz信道进行监测和分析,了解信道的占用状况。日本方面做过类似的研究,文献[5-7]使用机载雷达,对日本国内所有机场的1090 MHz信号分别进行采集,根据时间长度和信号幅度统计出信号的频谱占用率。但是这种方法太复杂,且成本过高,根本无法在日常进行监测。国内针对1090 MHz信道的研究相对较少,文献[8]采用一种软件无线电平台接收1090 MHz信道内的信号,根据不同种类信号的接收率计算出频谱占用率。由于实验条件的限制,得出的结果很片面,并不准确。

本文利用实验室的1090 MHz信号接收机[9-11],通过计算机编程将采集到的信道内主要信号(ADS-B信号、二次雷达信号以及干扰信号)的数据进行解析,解析出的数据使用上位机软件界面完成监测和分析。该方法简洁有效,操作便利,通过软件系统在日常就可以完成对1090 MHz信道的监测和分析,具有很强的开放性和扩展性,丰富了现有的1090 MHz信号接收机的功能,未来可以增加新的模块对1090 MHz信道进行全面评估和监测[12]。

1 软件设计

设计1090 MHz信道分析软件,需要考虑对数据的解析、数据的存放以及数据的监测分析这3个方面。基于此思路,设计了数据解析模块、数据库存储模块和显示模块。3个模块相互关联,完成各自功能的同时会对下一个模块起到承上启下的作用。接收的数据在数据解析模块中进行解析,解析完成后数据会存入存储模块,同时解析出的一部分数据可以用于显示模块里对信道占用率的实时显示。经过存储模块对数据的计算处理和保存,后台存储部分基本完成。上位机软件部分基于Visual Studio 2015开发平台,使用C++编程语言,通过显示模块的上位机软件界面调用存储模块的数据进行可视化显示,具体分析信道占用情况。1090 MHz信道分析软件系统框架如图1所示。

图1 1090 MHz信道分析软件框架

1.1 数据解析模块

为实现对1090 MHz信道占用情况的监测,首先需要对信道中的各类信号数据进行解析。本文使用实验室1090 MHz信号接收机,通过TCP协议(保证数据传输可靠)传输接口[13],每隔一秒钟采集一次包含各类信号的统计数据。在Visual Studio 2015开发平台中进行数据的解析处理和计算,得到信道分析所需的数据。处理结束后,数据解析模块的功能基本完成,接下来需要将数据送到存储模块执行存储。

1.2 数据库存储模块

存储模块执行后台存储部分。由于存储的数据量非常庞大且对数据的使用有更多的要求,故需要有数据存储和处理能力的软件来完成此模块的功能。基于与其它软件契合度和使用效果的考虑,本文选用的是本地数据库SQL Server 2014,具体特点请参见文献[14]。数据库的设计和数据的处理调用是存储模块的核心部分。一方面,数据解析后得到的参数,需要与数据库中设计的表相匹配,才能有序且高效地将数据存入其中。另一方面,后期对数据库中的数据进行调用分析时,可以编写SQL函数代码完成所需功能,对数据的检索和处理更加简洁高效,而不是只能在Visual Studio平台中编写代码处理数据。此外,ADO是连接Visual Studio平台和SQL Server数据库的重要一环,通过ADO接口连接可以将数据解析模块解析出的数据保存到数据库中,完成原始数据的存储执行功能。接下来需要在数据库中对原始数据进行再一次的数据处理,计算出所需要的数据,这样就可以在显示模块中调用各类数据进行显示分析。

1.3 显示模块

显示模块是1090 MHz信道分析软件的主要部分。完成显示分析,需要考虑到软件界面的稳定性,操作的简洁高效性和与Visual Studio平台以及数据库的匹配等。基于此,本软件设计界面采用MFC来完成制作。MFC由微软开发,是一套面向对象、使用C++编写应用程序的框架和引擎,它将大部分的Window API封装到C++类中,以类成员函数的形式提供给开发人员调用[15,16]。上位机软件部分使用MFC(microsoft foundation classes)来制作界面,结合MFC的按钮、编辑框、组合框等控件类,根据不同的需求设置参数,实现各自的功能,将相关数据从数据库中回调出来,使用CDC类绘图函数,可视化处理后,在软件界面中显示,实现信道分析功能。

1.4 系统工作流程

1090 MHz信道分析软件系统流程如图2所示,该软件可以根据接收到的1090 MHz信号实时监视信道占用率的变化情况,并且能够读取数据库中存储的数据,在软件界面中对全天的1090 MHz信道占用情况做具体分析并显示。

图2 1090 MHz信道分析软件系统流程

2 关键模块实现办法

2.1 数据解析和占用率计算

根据设定,1090 MHz信号接收机每秒钟接收一次数据,所以需要在Visual Studio平台中建立与下位机的通信接口,使用send()函数来向TCP连接的另一端发送数据,并编写数据接收线程。完成编写后,首先对存入缓冲区的数据进行帧头检测,判断是否收到完整准确的一帧。如果不完整,则丢掉这一帧数据,更新缓冲区位置,重新接收;如果完整,则开始进行解析。

根据数据帧的解码标准,将对应字节的数据进行提取和计算,分别得到正确ES帧数RES、 正确S帧数RS、 正确AC帧数RAC、 错误ES帧数WES、 错误S帧数WS、 错误AC帧数WAC和干扰脉冲数ND。 ES帧信号的长度为120 μs,S帧信号的长度约为64 μs,AC帧信号的长度约为20 μs,干扰脉冲信号的长度约为0.5 μs。根据4种信号的长度,可以计算出单位时间内的信道占用率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种占用率的总和,干扰占用率由干扰脉冲数计算,有效占用率由各正确帧数计算,误帧率由各错误帧数计算。各占用率计算完成以后,将所有数据存入数据库中。

2.2 数据库处理

数据解析模块解析出的数据要实时地保存到数据库中进行统计。在此之前,根据数据的类型和软件性能的需求,需要在SQL Server 2014中创建本地数据库并新建表。首先,需要新建一个数据接收表用于接收原始数据。表设计完成后,通过ADO接口编程执行存储。由于软件界面大小有限,调用全天的占用率做分析时,不能将每一秒钟的数据全部都显示在界面中。基于软件系统的整体性能以及数据分析的考虑,需要对原始数据做均值处理,把每分钟的数据求和取平均得出一个均值,再在软件界面中做可视化显示。使用C++编程将数据累加求和处理成均值,需要把数据库中全天的数据全部回读后才能完成计算,这样就会造成可视化显示的时候等待时间过长,出现卡顿现象。而数据库的功能则较为全面,在数据库中把数据处理好以后,读取的数据量就会大幅度减少,可视化显示时很流畅,不会出现卡顿问题。因此,为了满足上位机软件界面中各类数据的可视化显示,需要对原始数据进行处理,在数据库中需另外新建两种表,分别为数据抽样表和数据均值表,对数据接收表中的原始数据进行固定截取间隔处理和均值处理,然后存入各自的表中,完成所需分析功能。数据处理结束后,数据库部分的操作基本完成,所需数据已经全部准备完毕。

2.2.1 ADO

ADO定义请参见文献[17]。该程序是一组优化的访问数据库专用对象集合,按程序作用主要分为连接对象(Connection)、命令对象(Command)、记录对象(RecondSet)三部分。使用C++访问数据库可以用_ConnectionPtr、_CommandPtr和_RecordsetPtr这3种指针来实现。通过ADO接口可以连接上位机软件和数据库,方便数据的存储和读取操作。

使用ADO接口前,需要先导入ADO库,即在stdafx.h中使用import语句导入,代码如下:

#import "C: Program FilesCommon FilesSystemadomsado15.dll"no_namespace rename("EOF","ADOEOF")rename("BOF","ADOBOF")

导入完成后,使用ADO接口连接数据库存储数据。连接数据库存储数据程序流程如图3所示。

图3 连接数据库存储数据程序流程

2.2.2 数据接收表、数据抽样表和数据均值表

设计数据接收表时,首先将统计时间写入第一个字段。统计时间统计的是各类数据存入数据库时的系统时间。由于数据每秒解析一次,故字段的数据类型设置为datetime型,调用getdate()函数,即可得到当前系统时间。其余字段按照各类占用率和各类帧数的名称分别设置。由于计算出的占用率为float型浮点数,故表中各类占用率的数据类型设置为对应的real型;而帧数为int型整数,故各类帧数的数据类型设置为对应的smallint型,合理规划内存占用空间。对照数据接收表,分别对数据抽样表和数据均值表建立字段和选取数据类型。

3种表设计完成后,编写SQL代码,先读取数据接收表,截取需要分析的原始数据保存到数据抽样表,再利用各类函数求出所需数据的均值,分组排序后将结果保存到数据均值表中。一般情况下截取的数据从第一天零时开始,到最后一天二十四时前结束。

2.3 占用率显示分析和各帧数比较

显示分析部分制作了实时信道占用率显示界面、全天信道占用率显示分析界面和信道占用率与帧数分析比较界面,分别实现不同的功能。数据解析完成后,打开MFC制作的软件界面,根据不同的按钮类型,读取各类数据,可视化显示出来。

3 系统测试及分析

数据采集的时间为2020年7月份,界面中显示的均为时采数据时间。本次测试共接收了从7月7日到18日共12天的数据,取8日到17日的完整数据,并选取7月8日这天的数据用来显示分析,根据真实数据对整个软件系统进行检验。

3.1 数据库存储测试

数据库中存储的数据如图4所示。图4(a)为数据接收表的数据,占用内存大小约为57 MB;图4(b)为数据均值表的数据,内存大小约为0.8 MB;图4(c)为数据抽样表的数据,内存大小约为46 MB。数据库数据接收状况良好,每条数据都完整地存储下来,无异常数据出现。据此推算,存储全年的数据大约占用2 G左右,故数据库中只需建立这3个数据表,无需设计新表存储统计数据。另外,在数据接收表中随机选取某一时间点的原始数据60条,通过人工计算和数据均值表中这一时间点的数据进行比较,结果相同,验证数据计算正确,系统处理无误。

3.2 实时显示信道占用率测试

实时显示信道占用率界面如图5所示,测试时间为7月8日早上。上位机软件连接1090 MHz信号接收机,点击实时显示占用率按钮,函数中设置的定时器开始启动,当前显示时间则会调用系统时间。使用CDC类作图函数可以将计算处理后的每秒钟信道占用率的数值以波形显示出来,达到实时监测的目的。由于界面大小有限,20 min后,波形从起始位置开始更新,即逐个替换原来的点,循环显示。

在侧边按钮栏中,点击回放全天占用率按钮和占用率与帧数比较按钮,分别显示出全天信道占用率显示分析界面和信道占用率与帧数分析比较界面。各界面均为非模态对话框,可以同时显示出来,方便分析比较。

3.3 信道占用率分析测试

全天信道占用率显示分析界面的功能是具体分析信道中各类占用率。信道占用率按每分钟均值显示如图6(a)所示。侧边栏中,第一框为标识牌,是对本界面会出现的4种颜色波形的标识说明。起始时间设定框是根据数据库中截取时间段的起始时间来设定,横坐标轴会根据设定好的时间显示时间间隔。起始时间默认零时零分。时间设定好以后,选择截取时间段内的任一天,点击均值显示按钮,就会读取数据均值表中的数据,将全天占用率以波形显示出来。点击固定值显示按钮,会读取数据抽样表中每分钟的第一个数据进行抽样显示,如图6(b)所示,抽取的数据量和均值显示的数据量相同,二者的波形可以作比较。从图中可以看出,两种显示方式的波形总趋势基本相同,而均值显示与抽样显示相比则更为平滑,更能反映客观真实的信道占用情况。点击占用率分析显示按钮,会读取各类占用率的均值,在同一个坐标轴中显示出4种不同颜色的波形,分别代表4种占用率,根据标识牌中的提示,一一对应出各自的类型,分析各类占用率的变化情况。进入界面时,会从数据库回读截取的时间段,将日期显示在循环显示框中,点击循环显示按钮,将截取时间段内每日的信道占用率波形每隔一秒钟循环播放,这样可以对整个时间段内信道占用率的波形变化有直观的了解。

从整体上看,信道占用率从凌晨开始下降,到早上六七点左右基本处于最低;七八点开始航班流量逐渐增多,呈上升趋势;白天基本为高峰期,晚上十点以后再逐渐下降,符合实际情况。

3.3.1 各类占用率分析

各类占用率分析如图7所示。图中共有4条波形,根据标识从上到下依次为信道占用率、干扰占用率、有效占用率和误帧率。干扰占用率在信道使用逐渐进入高峰期后才会发生变化,而且,随着有效占用率的升高,干扰占用率也会随之下降。有效占用率的总体趋势和信道占用率基本相同。误帧率也会随着信道占用率的升高而逐渐上升,高峰期间略高,其余时间起伏变化不大。

3.3.2 信道占用率与各帧数分析比较

信道占用率与帧数分析比较界面的功能是具体分析各类帧数对信道占用率的影响。信道占用率与正确帧数分析比较如图8(a)所示,与错误帧数分析比较如图8(b)所示。侧边栏第一框为标识牌,是对本界面会出现的4种颜色波形的标识说明。由于各帧数量相差很大,为便于观察分析,需要对波形进行放缩处理。例如,正确AC帧数量需要将纵轴的数值乘以20倍,才是真实数量值;而错误AC帧数量则需要乘以10倍,其它各帧数量按照标识以此类推。根据比例,在同一个坐标轴中有层次地从上到下显示出所有的波形。起始时间设定框和全天信道占用率显示分析界面中的功能相同。设定好时间后,根据选择的日期,点击正确帧显示按钮,会读取数据均值表中当日各正确帧和信道占用率的数据显示;点击错误帧显示按钮,会读取当日各错误帧和信道占用率的数据显示。局部放大时间框中可以设定以1 h为基准的横轴时间,调用数据抽样表中的数据,在Visual Studio 2015中把每3 s的数据求和取一次平均值,计算1 h的数据量并显示到界面中。将每60 s放大成每3 s做均值处理,可以更清晰地分析各时段信道占用率和各帧数量的变化情况。左边的纵坐标轴是帧数量,右边的纵坐标轴是信道占用率数值,根据颜色标识从上到下依次为信道占用率波形、AC帧数波形、ES帧数波形和S帧数波形。

图4 数据库中创建的表

图5 实时显示信道占用率界面

图6 信道占用率显示方式

图7 信道中各类占用率分析

从图中可以看出,AC帧数量所占比例最大,S帧数量最少,错误帧数也会随着正确帧数的增加而增加,各帧数量与信道占用率的起伏变化基本相同。

3.3.3 局部放大分析

从8日这天信道占用率的波形来看,下午五点到六点间的信道占用率达到最高,故选取此时段进行局部放大分析。正确帧数局部放大如图9(a)所示,错误帧数局部放大如图9(b)所示。此时段内,信道占用率在下午五点半后达到高峰,而这时无论是正确帧的数量还是错误帧的数量,都为最多,无明显异常数量变化。

3.4 测试结果验证

在各类波形中任意选取一个时间点和数据库中的数据进行对比完全符合,可以正确地读出此时间点中数据库存储的数据。经过与文献[5-7]中日本方面的研究结果相比较,验证此软件系统中显示的全天信道占用率变化的趋势基本无误,且符合实际情况。另外,原始数据中有对飞机架数的统计结果,通过对高峰期某一时间点的数据统计观察,发现飞机的数量也在全天最高数量区间内,故验证系统可视化显示出的结果基本正确,满足设计要求。

图8 信道占用率与各类帧数分析比较

4 结束语

本文针对当前1090 MHz信道使用越来越多且越来越拥堵的现状,设计开发了一个1090 MHz信道分析软件。本软件实现了1090 MHz信道监测和分析功能。一方面,可以实时监测信道占用率的变化情况;另一方面,通过后台数据库的对数据的存储与统计,可以在上位机软件界面中可视化显示全天信道占用率,并具体分析信道中各类信号的占用情况。此外,软件界面操作起来简洁高效,人机交互便利。测试结果表明,通过该方法设计实现的1090 MHz信道分析软件使用效果良好,能够监测1090 MHz信道的使用情况并做具体分析,为进一步扩展使用多种手段的监测分析提供基础。

图9 帧数局部放大分析

猜你喜欢

占用率信道均值
信号/数据处理数字信道接收机中同时双信道选择与处理方法
适当提高“两金”占用率助人助己
降低CE设备子接口占用率的研究与应用
均值—方差分析及CAPM模型的运用
均值—方差分析及CAPM模型的运用
浅谈均值不等式的应用
一种无人机数据链信道选择和功率控制方法
均值不等式的小应用
基于导频的OFDM信道估计技术
基于云计算的虚拟机在线迁移算法