技术文章和通讯

自动化通信测量

迈克·伍德沃德(Mike Woodward), MathWorks出版社


自动化通信测量涉及的不仅仅是创建控制仪器的按钮界面。理想的自动化系统结合了数据分析、仪器控制和报告。例如,这样的系统可能使模型适合测量数据,将模型预测与新测量数据进行比较,并在文档中总结结果。目前大多数可用的自动化系统擅长其中一项任务,但其他任务则不行。例如,解决方案可能提供出色的仪器控制,但数据分析能力较差。

这篇文章展示了如何在MATLAB中自动化整个测量过程®.我们将通过两个示例演示自动化。第一个展示了在MATLAB GUI中仪器控制和数据分析的结合。第二部分展示了自动的数据分析和报告编写,并演示了如何创建一个独立的可执行文件,该文件可以与最终用户共享,而无需公开底层代码。

本文中讨论的代码示例可用于下载

仪器控制与数据分析相结合

这个例子展示了如何在一个gui驱动的MATLAB应用程序中结合测量、数据分析和可视化。我们的目标是模拟未知电路对安捷伦已知输入的响应®33220A任意波形发生器。我们的测试设置包括一个未知电路、一个捕获未知电路输出的外部声卡、波形发生器,当然还有MATLAB(图1)。

图1。MATLAB应用程序控制波形发生器并对未知电路的响应进行建模。

第一步是使用仪器控制工具箱从MATLAB控制测试设备.工具箱使我们能够通过各种接口控制设备,包括USB、LXI和GPIB。它还为安捷伦、Tektronix、Rohde & Schwarz和其他供应商的许多仪器提供特定于仪器的驱动程序。

控制仪器包括使用协议对象创建和打开会话、向会话写入命令以及读取仪器的响应。我们可以连接和控制Agilent 33220A任意波形发生器通过VISA接口使用以下代码:

interfaceObj=visa(“安捷伦”,VISAaddress)
%创建一个设备对象。
fgen=icdevice('agilent_33220a.mdd',interfaceObj)
连接设备对象到硬件。
连接(fgen)
%将电压幅值设置为0.2 V
集(fgen,振幅,0.2)

如您所见,代码很简单。

接下来,使用MATLAB中的GUIDE工具,我们构建了一个基于GUI的应用程序,用于实时仪器控制、数据分析和可视化。通过GUI,用户控制仪器设置并启动测量过程(图2)。

图2。测量、数据分析和可视化GUI。

应用程序同时接收来自声卡和波形发生器的数据,并将其显示在图形上。当用户单击开发模型,底层代码分析波形数据和来自未知电路的数据,对数据拟合一个多项式模型,并将拟合结果显示为信号频率的函数。当模型建立后恢复测量时,应用程序显示测量数据和建模数据之间的差异。

数据分析和GUI构建

我们的第二个应用程序继续GUI控制的主题,但这一次,我们希望自动化数据分析和报告编写。我们的目标是研究长期演进(LTE)参数是如何随时间变化的。放大器和发射机的特性因设备而异,但随着时间推移的趋势可能表明我们需要研究一个问题。我们想展示这些变化和模型变化。

我们的源数据是在不同时间采集的不同设备的LTE测量参数文件,如最大输出功率、EVM、接收器灵敏度和杂散发射。

桂楼

我们希望显示测量参数随时间的变化,并将这些变化绘制成直方图(显示分布和扩散的类型)。我们还想要得到最小值,最大值,平均值加上标准差。我们的GUI将自动执行这些任务。使用GUIDE工具,我们构建了接口(图3)。

图3。左:使用GUIDE构建的界面。右:运行应用程序的同一接口。

指南使用拖放方法,使您能够通过GUI项菜单(如按钮、文本框和图形)构建GUI。我们通过回调函数将GUI控件链接到底层MATLAB代码。例如,当用户单击更新为了更新图,应用程序调用以下回调函数。请注意,这些图表包括随时间的变化和直方图。

%---在更新图中按下按钮时执行。
函数UpdateGraphs\u回调(hObject、eventdata、handles)
轴(handles.axes1);
cla;
popup_sel_index=get(handles.popupmenu1,'Value');
开关弹出选择索引
案例1
绘图(处理最大输出);
案例2
嘘(handles.max_output);
案例3
绘图(句柄.最小输出);
例4
嘘(handles.min_output);
例5
情节(handles.evm);
案例6
hist(handles.evm);
例7
情节(handles.receive_sens);
案例8
历史(手柄、接收传感器);
例9
情节(handles.acs);
案例10
嘘(handles.acs);
案例11
绘图(手柄、杂散电磁干扰);
案例12
嘘(handles.spurious_emi);
结束

底层代码可以是任何MATLAB代码;例如,它可以是控制仪器、分析数据或绘制图形的代码。

选择GUI上的按钮将激活底层代码。例如,当用户单击浏览时,将打开一个对话框以定位数据文件。当用户选择运行分析,底层代码计算每个测量参数的统计信息,并在对话框中显示结果。

自动报告生成

分析和编写组件和系统随时间变化的报告是一项必要但繁琐的任务。MATLAB报表生成器自动化大部分的数据分析和报告写作过程。

在Report Generator工具中,我们定义了报告的结构:包含摘要结果的概述,以及每个单独参数的部分。我们编写MATLAB代码来计算测量统计数据(最小和最大,平均值,标准偏差),曲线拟合数据(看看是否有随时间的变化),并生成图表,绘制参数值与时间和参数直方图。我们将此代码包含在Report Generator项目中,并将MATLAB输出添加到生成的报告中(图4)。

图4。报表生成器接口。

只要按下一个按钮,我们就能生产出微软®®包含所有这些信息的文档(图5)。

图5。LTE报告生成与MATLAB报表生成器。

该报告包括结果摘要概述和每个参数的部分,包括随时间变化的分析(包括对变化是否重要的自动简短评估)、图表、曲线拟合结果和参数直方图。Word文档是可编辑的,可以将数据解释添加到基本报告中。

为了进一步自动化该过程,我们将报告生成添加到GUI中。报告生成器可以从MATLAB命令行调用,而无需通过接口,因此我们可以添加生成报告按钮连接到GUI,并将其连接到生成报告的MATLAB代码。

构建独立的应用程序

MATLAB编译器允许您在保护底层源代码的同时共享应用程序。编译器将应用程序编译成独立的可执行文件,用户无需访问源代码或MATLAB许可证即可运行。

这个过程很简单(图6)。第一步是创建一个项目文件,其中包含MATLAB文件和应用程序所需的所有其他文件(例如图像文件)。这个过程类似于在其他C编译器中构建项目。第二步是编译项目,这只是一个简单的问题编译按钮。最后一步是分发独立的可执行文件。

图6。用于生成独立可执行文件的MATLAB编译器GUI。

独立的应用程序可以包括几乎所有的MATLAB功能,包括数据分析、图形、仪器控制、统计分析和信号处理。

我们构建了一个可以控制仪器、分析和显示数据、生成书面报告的应用程序,并将该应用程序编译为独立应用程序分发。简而言之,我们已经使用MATLAB实现了整个通信测量过程的自动化。

2012年出版-9206V00

查看相关功能的文章

查看相关行业的文章