基于X-Stream技术的力科示波器既是一个高速信号采集平台,也是一个功能强大的信号处理平台。示波器软件本身提供了丰富的测量和运算功能,能够满足常见的信号处理应用。此外,力科示波器还能借助MATLAB及其丰富的函数、工具箱做更复杂、更个性化的实时信号处理。使用MATLAB实时处理力科示波器采集的数据,可以采取以下三种方式:
1.遥控(Remote Control)方式
MATLAB在计算机上运行,通过计算机的GPIB、以太网Ethernet或者串口RS232来控制示波器、读取采集的数据,如图 1:
图 1 遥控方式
在这种联机方式下,MATLAB对力科示波器的控制方式又可分为
1.装有MATLAB的计算机作为控制器,通过SCPI程控命令(Standard Commands for Programmable Instruments,即IEEE488.2标准)来控制示波器。这和NI公司的Labview, LabWindows/CVI程控仪器的方式是类似的。
MathWorks公司提供了MATLAB工具箱Instrument Control Toolbox,可以方便地实现SCPI方式的程控。详情请参考该工具箱的帮助文件以及http://www.mathworks.com/LeCroy。力科示波器支持的SCPI程控指令请参考LeCroy X-Stream Oscilloscopes Remote Control Manual。
2.力科示波器软件提供了基于COM(Component Object Model)技术的自动化接口(Automation interface)。外部程序通过这种接口可以读取示波器属性、控制示波器和采集数据。这种方式下,力科示波器作为COM Automation server, MATLAB程序作为COM Client。
这种示波器软件与MATLAB程序分别在不同平台上运行的方式,导致两者交互数据的效率受限于GPIB/ENET/RS232接口的数据吞吐率。采集数据量如果比较大,实时性就会很差。如果实际应用必须采取这种联机方式,并且想要实现较高的数据吞吐率,可以选用力科提供的专用仪控总线接口LSIB (LeCroy Serial Interface Bus),数据传输率可达到325 MB/s。详情请参考http://www.lecroy.com/files/pdf/LeCroy_LSIB_Datasheet.pdf
2 .并行工作方式
前文提到MATLAB程序可以通过示波器软件提供的COM接口来控制示波器,那么MATLAB可以直接安装在示波器上运行(请根据示波器所装WINDOWS操作系统来确定安装32bit还是64bit版的MATLAB)。如图 2。这样两者的数据交换完全都是在示波器平台上完成,数据吞吐率不再受限于外设接口。
图 2 同一平台下并行工作方式
这种工作方式下,示波器软件是COM Automation server,MATLAB还是Client。两个软件在示波器硬件平台上并行工作。工程师可以在MATLAB命令行窗口输入代码,也可以导入m文件运行。运行的结果直接在MATLAB上输出,如图 3。
图 3并行工作方式下两个软件的界面示意
示波器作为COM Automation Server,其开放出的对象和接口可以通过示波器上安装的XStream Brower来查阅。
点击示波器桌面上的快捷方式: ,在打开的主界面上点击菜单项File > Connect to Local Instrument,出现如下界面:
图 4 XStream Browser界面
XStream Browser展现了力科示波器提供的COM对象与接口的层次图。左边树状结构最顶端的对象为LeCroy.XStreamDSO,它下面包含Acquisition, Math, Measure等多个子类,子类下面还包含子类。图 4中红框所示的app.Acquisition.Horizontal显示出当前选中对象的层次结构(app表示对象LeCroy.XStreamDSO的一个实例)。
右边窗口是各个子类所包含变量的名称(Name)、值(Value)、类型(Type)等信息。
1.这些变量有的表示示波器的属性、设置或状态,例如app.Acquisition.Horizontal.SamplingRate是示波器当前的采样率。
2)有些变量可以控制示波器执行某种操作,比如app.SetToDefaultSetup是让示波器恢复到缺省设置,这类变量在右边窗口的Type为Action或者Method
3)有的变量是采集的数据,或者测量的结果,一般在名称是.Result子类下,比如app.Acquisition.C1.Out.Result.DataArray就是示波器C1通道采集的数据阵列。
关于力科示波器COM Automation Interface更多细节,除了查阅XStream Browser,还可以参考力科文档Automation Command Reference Manual。
MATLAB就是通过读写上述各种变量来实现对示波器的操作。首先MATLAB程序需要例化COM Automation server,建立和示波器的连接,在MATLAB命令窗口或者m文件里输入以下语句:
app = actxserver('LeCroy.XStreamDSO.1');%调用MATLAB函数actxserver
对于MATLAB R13及以前的版本,引用多层结构对象的变量用类似下面的句法:
% MATLAB R13以前版本调用多层结构对象的语法
HorizontalPerStep = app.Acquisition.C1.Out.Result.HorizontalPerStep;
而R14及以后版本,需要用到Object.Item或.Item等关键字,为了引用方便,建议在MATLAB程序里预定义一些变量来表示各层对象:
% MATLAB R14以后版本调用多层结构对象的语法
% 创建第1层的对象变量
acq=app.Object.Item('Acquisition');%相当于MATLAB R13版的语句acq=app.Acquisition
math=app.Object.Item('Math');
meas=app.Object.Item('Measure');
%创建第2层的对象变量
c1 = acq.Object.Item('C1');
f1 = math.Object.Item('F1');
p1 = meas.Object.Item('P1');
p1Operator = p1.Object.Item('Operator');
% 创建采集、运算、测量结果的变量,对于.Result子类,无需Object.Item字段,可直接引用
c1_results = c1.Out.Result;
f1_results = f1.Out.Result;
p1_results = p1.Out.Result;
假设在示波器中打开测量功能,设置P1对信号周期进行测量:
对测量周期的电平和极性的设置可用下面语句:
%对变量进行赋值,用set命令
set(p1Operator, 'LevelType', 'Percent');
set(p1Operator, 'PercentLevel', 66);
set(p1Operator, 'Slope', 'Neg');
读取周期测量的均值、最小值和最大值
%读取.Result子类的变量可以直接引用
p1_mean=p1.Object.Item('mean').Result.Value; %P1参数的均值
p1_min=p1.Object.Item('min').Result.Value; %P1参数的最小值
%也可以用get命令
p1_max=get(p1.Object.Item('max').Result,'Value'); %P1参数的最大值
读取所有周期测量值:
%读取包含多个数据的变量用get命令
P1_array = get(p1_results, 'ValueArray', -1, 0, 1);%ValueArray为测量值的数据阵列
读取示波器采集的数据,可以用下面的语句:
%读取包含多个数据的变量用get命令
c1_data = get(c1_results, 'DataArray', -1, -1, 0, 1);
控制示波器执行某种操作(Action或者Method类型的变量)
%利用invoke函数来执行操作
app.invoke('ClearSweeps'); %清除测量结果
app.invoke('AutoSetup'); %自动设置操作
工程师可以按照上面的编程方法在MATLAB软件上编辑、调试、运行程序,实现对示波器采集数据做实时信号处理,结果在MATLAB上显示。
3.集成(Inline Processing)工作方式
力科示波器还可以将MATLAB程序集成到示波器软件自身的信号处理链路中,如图 6。
图 6 集成工作方式
这种集成工作方式与并行工作方式相比,具有以下优势:
1.MATLAB程序不仅能实时处理示波器采集的数据,处理后的结果还能返回给示波器进行实时显示,或者做进一步的测量和运算。
2.并行工作方式下,MATLAB程序驱动示波器软件。而集成工作方式是示波器软件驱动MATLAB程序,示波器每触发一次都会调用一次MATLAB程序,实时性更高。
3.借助力科流水线式的X-Stream软件处理技术,集成工作方式使示波器软件与MATLAB交换数据的效率更高。
4.并行工作方式下访问COM对象和接口的编程方法在集成工作方式下仍然适用,但读取示波器采集、测量、运算后的数据更简单,只需直接使用特定的变量名即可(详见后文例子)。
5.最多可以集成8+12个MATLAB程序(即8个运算F1~F8,12个测量P1~P12)。
该功能需要XDEV选件来实现,力科部分型号的示波器标配了这个选件。该选件不仅支持MATLAB,也支持集成EXCEL, VBScript, Excel, MathCAD, C++,JavaScript等程序。
将MATLAB程序集成在示波器软件中的一个例子:
通过菜单Math>Math Setup…打开运算功能设置界面,选取F1~F8其中一个,运算操作选择Custom>MATLAB math,步骤如下图:
图 7 设置运算为MATLAB程序
一个集成的MATLAB程序最多可以有两个数据输入源,如下图的Souce1,Souce2。数据输入源可以是示波器各通道采集的数据C1~C4,也可以是其他运算后的数据F1~F8、保存的波形数据M1~M4等等。
图 8 MATLAB运算的详细设置
然后选择图 8所示界面右边的MATLAB标签,点击Edit Code,会跳出一个MATLAB程序编辑窗口,如图 9。可以直接在这个窗口输入程序代码,也可以导入已有的MATLAB程序。并且在编辑窗口修改代码,程序结果会立即生效,波形实时变化。MATLAB程序编辑完后,可把该项运算的结果显示出来,即勾选Trace On(图 9中绿框所示)。如果MATLAB程序没有错误,示波器界面上就会出现MATLAB处理后的波形。也许第一次出现的波形没有完整地显示在栅格里,可以点击图 8中所示的Find Scale按钮,让示波器自动调整垂直刻度,使波形完整地显示出来。
图 9 MATLAB程序编辑窗口
图 9编辑窗口中的代码如下:
WformOut = WformIn1 + WformIn2;
verUnits='V';horUnits='S';
这是一个简单的例子,程序的作用是把C1通道和C2通道的波形叠加起来。变量名WformIn1和WformIn2分别表示Souce1和Source2输入的波形数据。需要输出的数据赋给变量WformOut即可。verUnits和horUnits变量分别用来给输出的波形设置垂直和水平量纲。工程师编辑自己的程序时也只需引用这些变量名即可,变量名对大小写敏感。
下面是一些利用MATLAB对采集的信号进行实时处理的应用案例 (请注意部分例子中引用多层结构对象是按MATLAB R13版本的句法):
利用MATLAB实现信号滤波 http://www.lecroy.com/tm/library/LABs/PDF/LAB_WM760.pdf
利用MATLAB实现非归零码(NRZ)的解码 http://www.lecroy.com/tm/Library/LABs/PDF/LAB766.pdf
利用Simulink建模实时处理示波器采集的信号http://www.lecroy.com/files/AppNotes/LAB_WM822.pdf
更多例子程序请参考以下网址:
http://www.lecroy.com/MATLAB/
文章评论(0条评论)
登录后参与讨论