基于Labview平台的网络化频谱仪实现

时间:2022-08-22 03:16:18

基于Labview平台的网络化频谱仪实现

摘要:采用网络频谱模块,基于Labview平台,采用顺序结构、循环结构、事件结构编程,实现频谱数据捕获。利用Labview丰富的数据处理功能,分析所获取的数据,实现频谱显示、频谱监测、干扰感知等功能。

关键词:Labview平台;网络频谱仪;事件结构;频谱监测

DOIDOI:10.11907/rjdk.161756

中图分类号:TP319

文献标识码:A文章编号:16727800(2016)010012602

0引言

网络化仪表常常采用RS-232接口或GPIB接口编程,然后通过Labview的Web成Web Server供网络浏览器客户端用户使用,存在仪表与计算机之间的接口速度限制,同时Web访问仪表数据和控制仪表操作存在HTTP格式限制,冗余多且效率低,导致访问速度慢,限制了仪表网络化使用范围[1]。

目前,网络频谱模块提供SCPI编程命令,同时提供USB接口和LAN接口,数据传输速率有了极大提升,同时采用高级编程语言的TCP/IP编程,并采用具有ASCII字符串特性的SCPI命令,可以方便实现网络频谱仪功能,网络数据格式规范、效率高[23]。

在SCPI高级语言编程中,Visual C++、C#、Java等存在频谱显示部分处理编程困难、时间效率低下、频谱显示不够灵活等缺陷,而采用Labview编程,可以很方便地处理频谱数据,并显示频谱图形,能较为显著地提高编程效率[4]。

1Labview编程

Labview程序采用TCP连接和操作,具有三级结构:第一级是顺序结构,在顺序结构开始位置打开TCP连接,在顺序结构中间循环读取并显示数据,在顺序结构末尾关闭TCP连接;第二级采用循环结构,不断更新频谱显示,在循环结构内部嵌套事件结构,超时条件作为默认处理分支,其它分支均为事件触发;第三级采用事件结构,在有参数设置或按钮动作的情况下立刻处理,在没有事件触发的情况下,进入默认的超时处理分支,在默认的超时分支不断更新显示频谱图形。事件结构为节约处理器资源,按钮触发即时反应与动作,硬件资源合理使用等方面提供了较好的解决方法[5]。

2SCPI命令

SCPI是现代仪器仪表通用编程命令,实现ASCII字符串的发送与接收,字符串之间采用空格或逗号分隔,命令字符串末尾以回车换行结束,查询命令返回的结果字符串也是以回车换行结束。SCPI采用分类分级结构,主要有以下几类:IEEE488.2标准命令、:CALibration命令、:CALCulate、:CONFigure、:DISPlay、:FETCh、:HCOPy、:INITiate、:MMEMory、[:SENSe]、:SYSTem、:TRACe、:OUTPut、:SOURce、:UNIT。每类采用分级结构,频谱仪编程中最常用的命令在[:SENSe]、:TRACe这两类中,其它仪表比如功率计、示波器等仪器仪表编程使用其它类命令,比如读取中心频率命令“[:SENSe]:FREQuency:CENTer?” 中[:SENSe]可以省略,注意语句末尾有回车换行,返回数据是ASCII字符串,也以回车换行结束。设置频谱仪中心频率命令:FREQ:CENT 200000000(注意:其后有回车和换行两个不可显示字符),将频谱仪中心频率设置为200MHz,没有返回值;读取频谱仪中心频率值命令:FREQ:CENT?(注意:其后也有回车和换行两个不可显示字符),返回200000000,表示频谱仪中心频率为200MHz。具体参考相应设备SCPI说明书。

频谱模块将复杂计算封装起来,提供标准SCPI命令接口供编程使用,极大简化了编程量,提高了编程效率,考虑到数据处理编程的简易性和图形界面编程的复杂性,采用Labview作为开发工具,充分利用Labview强大的图形界面处理能力,简化频谱图形显示问题。

3程序总体结构

程序最外层为顺序结构,中间主体部分为循环结构,循环结构内部处理事件结构,Labview 2013版提供了事件结构,可以节约大量处理时间,程序总体结构如图1所示。

该程序最外层采用顺序结构,首先处理TCP连接,中间循环处理图形及按键,最后处理TCP断开,中间的循环结构是程序的主体部分,承担程序主要处理任务。循环结构中包括一个事件结构,事件结构中包括一系列按键动作触发的值改变事件和一个默认的超时事件。

在循环结构中主要处理频谱数据,从频谱模块读取的一组数据如下:

-84.530,-86.161,-85.074,-87.819,-85.661,……,-82.143,-84.403,-86.269,-87.895,-80.974,-79.619,-81.091,-84.003,-82.255,-85.203,-86.018,-82.311,-85.853,-83.630,-84.024,-79.017,-81.669,-82.744,-82.071,-80.558,-86.961,-85.053

该数据组包括501个浮点数据,中间以逗号隔开,每个数据占8字节,因此共有8×501=4 008字节,但是最后一个数据没有逗号,故有4 008-1=4 007个字节,在这组数据末尾,还有回车和换行两个字节,因此有4 007+2=4 009个字节,所以读取字节数为4 009个。

数据读取完成后,进行拆分和转换处理,形成数组,在图形控件中显示出来。在没有按键的条件下,程序执行默认分支即超时分支,超时分支的主要任务就是频谱数据读取及显示。

频谱图形处理中,没有使用SCPI命令的WINDOW命令,而是使用Labview中的WaveGraph控件的参数、变量,尤其是直接使用WaveGraph的游标,方便使用者直接准确读取频谱数据中的频率和电平值。本程序仅设置两个游标,一个主游标,一个辅助游标,如有需要,可以设置更多游标进行更加复杂的数据读取处理操作。

频谱模块厂家和型号不同,读取的数据长度也不同,本文采用MSA820频谱模块,该模块频率范围窄(9KHz~1.9GHz),频谱数据较少且精度较低,属于低端频谱模块,对于部分频谱范围宽(9KHz~20GHz)或更高频段高端模块,数据量可以达到数万字节,精度可以更高,根据频谱模块参数具体情况具体处理。

4程序界面布局及运行效果

Labview编程中,界面设计尤为重要。合理的控件选择和布局,可以美化程序,方便使用者操作。本文所设计界面较为简洁,选取频谱仪操作中最为常用的操作,以较为直观的方式提供给使用者,将复杂的处理隐藏起来。程序运行后功能界面如图2所示(频谱侦测部分与本文内容无关)。

5结语

Labview作为一种G语言,将复杂的运算处理功能通过封装成控件或函数的形式提供给用户,在界面设计部分采用友好GUI部件,提高了软件开发者的工作效率,同时也提供复杂数组矩阵处理函数,将复杂数学处理问题简单化、模块化,将编程工作积木化,极大提高了编程效率[6]。此程序在Labview 2013环境下完成,操作界面直观、运行良好且性能稳定。

参考文献参考文献:

[1]张振权,伍文平,毕立群,等.基于Labview的远程网络化虚拟频谱仪[J].仪器仪表用户,2007(2):3132.

[2]吕继宇,张华春,阴和俊.基于LabVIEW的频谱仪控制系统设计[J].测试技术学报,2005(4):426431.

[3]刘文红,窦玉江,邹鹏良.基于LabVIEW的接收机通道自动测试研究[J].现代雷达,2013(4):7476.

[4]李国清,杨井胜,王勇.基于LabVIEW的雷达自动测试系统[J].国外电子测量技术,2009(2):3134.

[5]杨九临,张标,张永继.基于LabVIEW的频谱仪遥控遥测系统的设计与实现[J].软件,2012(11):3840.

[6]孙源源,马忠松.基于LabVIEW的地面站监控及自动测试系统[J].国外电子测量技术,2013(2):6062.

上一篇:化学氧化/兼氧/好氧/A/O处理制药生产废水 下一篇:关于机械电子工程档案管理存在的问题及对策