基于WebSocket技术无线频谱大数据实时监测系统设计与实现
2022-02-14闫光辉严天峰
高 锐,闫光辉,罗 浩,严天峰
(1.兰州交通大学 电子与信息工程学院,兰州 730070;2.兰州交通大学 甘肃省无线电监测及定位行业技术中心,兰州 730070;3.兰州交通大学 甘肃省高精度北斗定位技术工程实验室,兰州 730070;4.甘肃中医药大学 信息工程学院,兰州 730000)
无线电频谱作为无线电信息传播的载体,对国家政治、军事、经济和文化发展都扮演着不可替代的重要作用,已成为国与国之间重要的战略资源[1-2].目前,针对特定频段的无线电频谱资源十分有限且日趋紧张,各类违规、非法无线电台站、黑广播和伪基站日益猖獗,如何有效地对电磁环境进行监测、管理与分析成为一项极为重要和紧迫的任务.
目前,我国对于海量监测数据的实时处理、分析与感知能力还处于较低水平.而同相正交(in-phase and quadrature,IQ)信号包含无线电信号中的各种信息,结合多种频谱处理方法对其进行处理与分析对无线电监测、管理起到了至关重要的作用[3].为了更好利用IQ信号数据进行分析,文献[4]提出了信号的瀑布分析技术实现方法,说明了瀑布图在信号分析领域的重要意义;文献[5]在对遥测信号进行侦测时,采用信号瀑布图方法实现了对猝发信号的快速发现和分析;文献[6-8]基于频谱瀑布图,结合深度学习技术进行电磁信号智能监测与识别.另一方面,WebSocket已成为Web实时通信的最佳实践,其具备高并发、实时、稳定和安全等诸多优点,已在许多领域中取得了良好应用.文献[9]表明WebSocket在工业互联网(IIOT)应用中,能够有效解决依赖于网络层通信的远程数据传输问题,减轻网络负担;文献[10]应用WebSocket技术实现车联网实时报警系统,有效提高了推送吞吐量,降低网络流量,大大提升了系统性能;文献[11]基于WebSocket协议及MSE技术,有效实现了一种基于Web页面无插件、出流快、低时延播放的视频监控方法.
综上,本文提出了一种IQ信号-功率谱密度转化算法并利用Python语言编程实现,将无线电监测接收机中获取的IQ信号数据转化为离散功率谱密度数组;其次,为了将功率谱密度数组以信号瀑布图方式可视化呈现,提出了一种基于HTML5 Canvas和Vue2.js技术的功率谱密度信号瀑布图可视化方法,为无线电监测分析、干扰排查提供技术支撑;最后,采用WebSocket技术设计开发了基于B/S架构无线频谱数据实时监测系统,实现了时域、频域和功率谱密度信号瀑布图的实时可视化呈现及全域数据的实时存储.
1 功率谱密度算法实现
1.1 IQ调制原理
IQ信号数据可在未经处理的情况下有效识别信号的瞬时幅度、相位和频率三大特征,从而为信号的识别与分析提供关键性的数据支撑[12].如式(1)所示,信号调制通过改变正弦波的特征来编码信息.通过式(2)数学变换,信号S(t)可以(I+jQ)复数形式进行表示.图1(a)为信号S(t)的一个瞬时状态在复数矢量坐标系下的映射,横轴I(t)为其实部,纵轴Q(t)为其虚部;图1(b)为IQ信号调制原理电路设计图,同频率正弦波与余弦波相位相差90°,I路信号与载波信号相乘,Q路信号与正交载波信号相乘,再将混频后的两路信号求和输出,完成了矢量信号的调制.由于硬件电气特性,实际信号在调制过程中会带来信号误差,为获取高质量矢量信号,需要在硬件电路和软件上进行误差补偿[13].
图1 IQ信号调制原理
S(t)=Accos(2πfct+φ),
(1)
S(t)=I(t)cos(2πfct)+jQ(t).
(2)
其中:S(t)表示信号;Ac为信号S(t)的幅度;fc为信号S(t)的频率;φ为信号S(t)的相位;
I(t)=Accos(φ);
(3)
Q(t)=Acsin(φ).
(4)
1.2 IQ-功率谱密度转化算法
利用快速傅里叶变换(fast Fourier transform,FFT)算法将IQ信号转换到频域,其结果称为功率谱密度(power spectral density,PSD).PSD表征单位频率上的能量分布,是信号分析与处理中使用最广泛的分析方法之一.如图2所示,本文实现了基于离散IQ信号的功率谱密度转化算法,步骤如下:
图2 基于Python语言离散功率谱密度计算方法
1)初始化.设置采样信号中心频点、频段范围.
2)获取IQ两路正交数据(复数形式存储).由于快速傅里叶变换中样点数量通常是2的幂次方,因此算法中通常创建1 024、2 048、4 096大小的采样样本.
3)加窗.实际工程应用中无法实现对无限长的信号进行测量和运算,而是取其有限时间片段进行采样,即加窗处理,直接对信号加矩形窗会产生频率泄露.为改善频率泄露,本文算法采用汉明窗(Hanmming),如式(5)所示,从而有效减少旁瓣,消去高频干扰和漏能.
(5)
式中:0≤n≤N-1;a0=0.538 36.
4)快速傅里叶变换.对加窗后的IQ两路正交数据进行快速傅里叶变换,得到以连续帧为单位的频谱数据.离散傅里叶变换(discrete Fourier transform,DFT)如式(6)所示,将时域上采样IQ两路正交复数信号变换为离散时间傅里叶变换(discrete-time Fourier transform,DTFT)的频域采样.快速傅里叶变换是对离散傅里叶变换及其逆变换序列的一种快速计算方法,结果与离散傅里叶变换计算结果相同.
(6)
(7)
其中:
(8)
(9)
根据式(9)中G[k]、H[k]的周期性和对称性,得到式(10),即一个N点离散傅里叶变换被分解成两个N/2点傅里叶变换,依次类推.本文采用Cooley-Tukey FFT算法[14],以分治法为策略将离散傅里叶变换分解为两个N/2子序列,将时域采样的IQ信号转换为频域.Cooley-Tukey FFT算法同时处理由I和Q组成的样点集合,每个集合称为一个FFT帧,样点数量通常是2的幂次方,为FFT的长度.Cooley-Tukey FFT算法有效地将DFT计算复杂度由O(n2)降低到O(nlogn),大大提升了运算效率.
(10)
5)归一化处理.FFT变换后的样本值除以FFT窗口大小,以实现对采样数据的归一化处理.
6)转化为功率.对幅度进行10 log10()数学变换,转化为功率,功率单位为dB.取对数运算使振幅较低的成分相对高振幅成分得以拉高,以便观察淹没在噪声之中的信号.
7)FFT移位调整.将负频率至零频点的FFT分量移位至采样中心频点左侧,得到离散功率谱密度数组.
1.3 功率谱密度可视化方法
本文提出了一种基于HTML5 Canvas和Vue2.js技术的功率谱密度可视化方法,建立了人与数据之间的图像交互,从而将计算智能与人类智能深度融合.功率谱密度瀑布图绘制原理图如图3所示,纵轴顶部为当前时刻功率谱密度数据,依次更新向下延伸,展示一段连续时间内的信号强度变化.t时刻功率谱密度数组为Datapsd,数组长度为N(即FFT计算样点数),通常为2的幂次方.
图3 功率谱密度瀑布图绘制原理图
算法伪代码如算法1所示,其中:本文采用JavaScript语言编程实现了文献[15]中的离散数据平滑过渡算法,命名为GenerateColor方法,该方法能够很好的通过单元色和累积步长将离散功率谱密度数组进行平滑过渡渲染;addWaterfallRow方法利用了HTML5 Canvas本地存储、图形绘制的强大功能,扩展Canvas API的drawImage和putImageData方法进行编程实现,该方法能够很好地实现对离散功率谱密度数组进行动态累加和实时无刷新渲染.与传统SVG,Flash相比,对于Web的动画、实时视频处理、动态渲染和大数据绘制,具有更高实时性、稳定性、跨平台性和更好的用户体验.
算法1:功率谱密度信号瀑布图可视化算法
Input:Datapsd:离散功率谱密度数组
RGBstart:数组最大值对应颜色
RGBend:数组最小值对应颜色
Canvasheight:Canvas画布长度
Canvaswidth:Canvas画布宽度
Initialize:createCanvasDocument(Canvaswidth,Canvasheight)
WhileWebSocket.readyStateis CONNECTINGdo
Datapsd←WebSocket.onmessage()
ifDatapsd.length!= 0 then
ifDatapsd.length!=Canvaswidththen
Step←changeCanvasSize(Datapsd.length,Canvaswidth)
end
MIN←Datapsd,MAX←Datapsd,Step←|MAX-MIN|/3
end
ColorGradient←GenerateColor(RGBstart,RGBend,Step)
forj=0←Datapsd.length-1do
colorIndex[j]←getTargetRGB(Datapsd[j],ColorGradient)
end
addWaterfallRow(colorIndex,Step)
resizeCanvas(Canvasheight,Δh)
end
2 基于WebSocket可视化系统设计与实现
2.1 系统结构图
图4为本系统设计架构图,由射频接收端、服务器端和浏览器端组成.射频接收端采用中国思仪3900A系列无线监测接收机,该接收机频率覆盖范围为20 MHz~6 GHz,分析带宽20 MHz,扫频速度最高达4 GHz/s,支持IQ数据流输出,能够胜任复杂多样的信号监测;服务器端由PC工作站和存储设备组成,主要负责接收无线监测接收机实时传递的IQ数据,并通过IQ信号-功率谱密度转化算法和WebSocket技术,为服务端、浏览器端实时推送数据;浏览器端以HTML5 Canvas形式,通过功率谱密度可视化方法对频谱数据进行实时渲染.
图4 基于WebSocket可视化系统架构图
2.2 WebSocket协议
WebSocket是一种计算机通信协议,可通过单个TCP连接提供全双工通信通道,并在2011年WebSocket通信协议被IETF定为标准RFC6455,该协议支持Web浏览器与Web服务器之间数据交互,通过较低的性能开销,实现服务器端与浏览器端的实时数据传输.WebSocket协议可以在客户端和服务器端之间进行双向持续对话.WebSocket协议与HTTP协议不同,但其被设计为在443和80端口工作,从而支持HTTP代理和中介.在此技术之前,想要实现此类双向通信的Web应用,需要借助Comet之类非标准化技术,但是其性能和实现复杂度都与WebSocket协议有较大差距.如图5所示,采用WebSocket协议进行浏览器端与服务器端之间交互,比HTTP Ajax和Comet方法具有更低的时间和数据开销,从而促进B/S架构服务器端的实时数据传输,使服务器可以在不首先请求客户端的情况下,将IQ频谱数据发送到客户端,并允许消息在保持连接打开的情况下,使用非安全的WS(80端口)或安全的WSS(443端口)协议进行双向通信传递.
图5 HTTP Ajax、Comet协议与WebSocket通信协议对比
本文使用基于Python3.6版本上的WebSocket库构建浏览器和服务器端Websocket双向通信.Python WebSockts库具有简单易实现性、程序健壮性、代码高质量性、高性能等诸多优点,能够实现IQ数据通过IQ信号-功率谱密度转化算法后,实时、稳定地推动到浏览器前端.
3 系统验证与分析
3.1 用户交互界面设计与验证
本文采用C++ 语言实现对无线监测接收机的IQ数据实时获取,利用Python语言编程实现IQ信号-功率谱密度转化算法,得到功率谱密度数组,并通过Python Flask框架和Python WebSockets库实现了功率谱密度数组到Web前端页面实时推送.如图6所示,本文利用HTML5 Canvas和JavaScript ES6技术,以Node.js+Vue2.js构建Web前端无线频谱数据实时监测系统.
图6(a)为Web前端可视化系统设计原理图,图形界面主要由参数面板、信号频域图和功率谱密度信号瀑布图组成,参数面板可以根据用户需求设定监测的信号中心频点、带宽和频谱分辨率.根据无线监测接收机的硬件性能,频谱覆盖范围为20 MHz~6 GHz,实时带宽达到20 MHz,能够胜任多种复杂信号监测任务需求.图6(a)中,右上部为信号频域图,横轴指示了频段范围,纵轴指示了对应的信号强度值,该信号频域图主要用于呈现被监测频段内的信号强度的实时变化情况;右下部为功率谱密度信号瀑布图,信号的瞬时频率和强度通过1.3节功率谱密度可视化方法在该图中进行绘制呈现,纵轴表示在预设的监测频段内信号从当前时刻至过去一段连续时间段内的强度变化情况.图6(b)为系统可视化用户交互页面,在动态信号监测中,系统能够很好地将时域IQ信号转换到频域上进行分析.利用功率谱密度信号瀑布图这一新思想,从频域角度来分析和展示信号内部规律,能够更清晰地分析振动信号的频率、幅值的变化情况,完整展示信号在时域、频域及信号强度三个特征维度的有用信息,表述直观,实时性好.
图6 功率谱密度瀑布图软件设计与实现
3.2 场景和模式验证
目前,无线电管理部门已经意识到了传统无线电监测的局限性,提出了整合网络数据资源和共享为基础的新一代网格化技术,这将成为未来无线电监测的主要发展趋势[16].通过网格化监测技术,能够对不明信号辐射源进行精确定位和实时监测,有效提升电磁环境监测能力[17];同时,还能对监测频段范围内不同频点业务的频谱占用度进行统计分析,有效提升监测范围内频谱资源利用率[18-19].传统监测设备包括矢量信号分析仪、扫频式频谱仪等,价格昂贵,且通常情况下数据不易被外部接口读取.与传统监测设备相比,网格化资源要求具备资源分布零散性、资源处理异构性、自治性和多态性等特点.针对以上几点,对设备应用场景进行设计和模式验证.图7(a1)和(a2)为本文搭建的固定模式下的无线监测系统,图7(a1)中接收天线选用超宽频全向接收天线,架设于兰州交通大学图书馆右侧辅楼楼顶,通过馈线与室内3900A监测接收机相连,实现无线监测系统的硬件环境搭建;如图7(a2)所示,通过笔记本终端访问无线监测系统后处理模块,实现对信号的实时、有效监测.此外,本文针对GSM频段搭建移动模式下的无线监测系统,如图7(b1)所示,接收天线选用玻璃钢全向天线,并与GPS模块一同置于车顶,通过馈线与车内3900A监测接收机相连(见图7(b2)),完成无线监测系统的硬件环境搭建,以实现机动灵活、快速有效地对GSM业务进行监测;与此同时,利用Internet互联网技术和WebSocket技术将数据进行有效回传,实现异地远程实时监测.综上,本文构建无线频谱大数据实时监测系统具有机动性强、部署快捷、资源处理异构性、实时性高、监测覆盖范围广、成本低等诸多优点.
图7 固定和移动场景下无线频谱监测可视化系统实现
3.3 系统不同种类监测信号验证
为验证系统使用有效性,本文针对不同业务频段和信号特征进行验证.图8(a)为对88~108 MHz频段进行监测的信号瀑布图,该频段是以FM调制方式为主的持续信号,随着时间推移,信号一直存在且信号强度稳定.图8(b)为对420~426 MHz频段进行监测的信号瀑布图,该频段包括持续信号和短时突发信号,图中矩形框所示的短时突发信号通过频谱图往往较难识别,而通过信号瀑布图可以比较清晰观察到该类信号相关特征.图8(c)为对430~436 MHz频段进行监测的信号瀑布图,该频段存在LoRa等制式短时突发数传电台信号,通过信号瀑布图能够快速判别该频段内信号的调制类别.图8(d)为对2 450~2 480 MHz频段进行监测的信号瀑布图,该频段主要涵盖4G、蓝牙等宽带业务,通过信号瀑布图能够清晰获取信号时频特征和变化规律,对特定宽带信号源的检测提供技术支撑.综上,通过信号瀑布图可视化分析,能够直观地对信号类型进行快速判断和识别;专业人员能够借助于信号瀑布图直观有效地对干扰信号进行监测和排查,有助于提升无线电频谱资源管理效率.
图8 不同频段特征信号表现形式
4 结论
电磁环境监测是频谱管理的基础.为了进一步提高电磁环境监测水平,及时、准确地获取频谱监测数据,提出了一种IQ信号-功率谱密度转化算法,充分利用无线监测接收机频段覆盖范围广、分析带宽大、扫频速度快的优点,将IQ信号数据转化为离散功率谱密度数组;然后,为了建立人与数据之间的图像交互,将计算智能与人类智能深度融合,提出了一种功率谱密度信号瀑布图可视化方法,将无线监测接收机中IQ信号数据以信号瀑布图方式实时可视化地呈现;最后,分析了传统无线监测的局限性和不足,针对网格化监测中资源分布零散性、资源处理异构性、自治性和多态性重要特征,采用HTML5 Canvas、WebSockets和Python Flask技术设计开发了一套无线频谱数据实时监测系统.系统运行结果表明:该系统具有前后端双工实时通信、大并发量、大吞吐量、服务器端负载低、跨平台、可移植性强、支持远程异构网络等诸多优点,有效提升了频谱管理人员的工作效率和分析手段,为频谱管理和决策提供科学依据.同时,该系统也实现了对全息数据的实时存储,有效支撑了基于深度学习的信号识别分析算法的相关研究.