原创 自定义示波器系列之一—力科示波器Matlab使用指南

2011-12-19 10:55 4441 6 6 分类: MCU/ 嵌入式

基于X-Stream技术的力科示波器既是一个高速信号采集平台,也是一个功能强大的信号处理平台。示波器软件本身提供了丰富的测量和运算功能,能够满足常见的信号处理应用。此外,力科示波器还能借助MATLAB及其丰富的函数、工具箱做更复杂、更个性化的实时信号处理。使用MATLAB实时处理力科示波器采集的数据,可以采取以下三种方式:

1.遥控(Remote Control)方式

MATLAB在计算机上运行,通过计算机的GPIB、以太网Ethernet或者串口RS232来控制示波器、读取采集的数据,如图 1:

1.jpg

 

图 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.jpg

 

图 2 同一平台下并行工作方式

这种工作方式下,示波器软件是COM Automation server,MATLAB还是Client。两个软件在示波器硬件平台上并行工作。工程师可以在MATLAB命令行窗口输入代码,也可以导入m文件运行。运行的结果直接在MATLAB上输出,如图 3。

3.jpg

 

图 3并行工作方式下两个软件的界面示意

示波器作为COM Automation Server,其开放出的对象和接口可以通过示波器上安装的XStream Brower来查阅。

点击示波器桌面上的快捷方式:4.jpg ,在打开的主界面上点击菜单项File > Connect to Local Instrument,出现如下界面:

5.jpg

 

图 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

6.jpg
 

 

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对信号周期进行测量:

7.jpg
图 5 设置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。

8.jpg

 

图 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,步骤如下图:

9.jpg

 

图 7 设置运算为MATLAB程序

一个集成的MATLAB程序最多可以有两个数据输入源,如下图的Souce1,Souce2。数据输入源可以是示波器各通道采集的数据C1~C4,也可以是其他运算后的数据F1~F8、保存的波形数据M1~M4等等。

10.jpg

 

图 8 MATLAB运算的详细设置

然后选择图 8所示界面右边的MATLAB标签,点击Edit Code,会跳出一个MATLAB程序编辑窗口,如图 9。可以直接在这个窗口输入程序代码,也可以导入已有的MATLAB程序。并且在编辑窗口修改代码,程序结果会立即生效,波形实时变化。MATLAB程序编辑完后,可把该项运算的结果显示出来,即勾选Trace On(图 9中绿框所示)。如果MATLAB程序没有错误,示波器界面上就会出现MATLAB处理后的波形。也许第一次出现的波形没有完整地显示在栅格里,可以点击图 8中所示的Find Scale按钮,让示波器自动调整垂直刻度,使波形完整地显示出来。

11.jpg

 

图 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条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条