文件交换

图像缩略图

捕获从安捷伦示波器的波形通过一个标准的VISA接口

版本1.3.0.1(3.44 KB)通过 维诺德
MATLAB例如捕获来自安捷伦示波器的波形和抓取截图。

43个下载

更新2016年9月1日

查看许可证

MATLAB是一种软件环境和编程语言,用户超过100万。MATLAB扩展了Agilent示波器的功能,使您能够分析和可视化的活的或获得的示波器信号,使应用特定的测量,创建和应用自己的滤波器和均衡方法,并自动化测试。
这个例子向你展示了你如何使用MATLAB来控制一个Agilent示波器,捕获一个波形并在仪器上抓取一个屏幕截图。用户可以自定义代码以允许不同的段数、点数、采样率等。有关用于控制仪器的SCPI命令的更多信息,请参阅您的仪器的程序员指南。

在MATLAB命令窗口中执行这个例子中,类型“SCPIScope”。注:更改SCPIScope.m文件到仪器的VISA地址VISA资源串,从安捷伦连接专家获得。

这个MATLAB例子已经在安捷伦MSO6104A InfiniiVision示波器上测试过,但是应该可以在大多数安捷伦InfiniiVision 5000、6000、7000系列示波器上使用。根据仪器编程人员手册中的SCPI命令进行少量修改后,就可以使用Infiniium 9000和90000系列示波器,或Agilent InfiniiVision 1000系列、2000-X系列、3000-X系列、4000-X系列等。

请参阅您的仪器的程序员手册为您特定的仪器型号的SCPI命令的完整列表。相应地修改这个例子,如果你的仪器屏幕显示错误,因为你通过代码。

要了解更多关于使用或与安捷伦示波器,参观采购MATLAB:
http://www.agilent.com/find/matlab_oscilloscopes

要请求MATLAB和/或仪器控制工具箱,访问免费试用//www.tianjin-qmedu.com/agilent/instrument/tryit.html

引用作为

维诺德(2020年)。捕获从安捷伦示波器的波形通过一个标准的VISA接口(//www.tianjin-qmedu.com/matlabcentral/fileexchange/28887-capturing-a-waveform-from-an- agiling-oscilloscope-overa-standardvisa-interface), MATLAB中央文件交换。检索

意见及评级(22

博华章

杰弗里

此代码CN在运行MATLAB r2013a ???我真的需要一个答案我的最后一年project..if来给我任何其他代码或视频PLIZ回应!

是否与安捷伦Infiniium示波器这项工作?

ANKIT德赛

伟大的工作!谢谢。

请帮帮我!我写类似的程序代码,我想使信号的实现捕获,期间的时间段。我该怎么办呢?

我尝试通过USB运行从DSO-X-2014A捕获数据的代码。但它出现了一些后续错误。虽然从图1中得到了准确的图,但是在图2中什么也没有。我是第一次使用数据采集工具箱,代码对我来说也是新的。请帮我找出我做错了什么。

使用imbmpinfo误差> getSignature(线55)
签名不能为空。

误差在imbmpinfo(线20)
metadata.FormatSignature = getSignature(FID);

误差在readbmp(第14行)
信息= imbmpinfo(文件名);

误差在imread(线415)
[X,地图] = feval(fmt_s.read,文件名,extraArgs {:});

SCPIScope错误(第140行)
imageMatrix = imread( 'test1.bmp', 'BMP');

大卫

非常有帮助。然后我就可以在此基础上脚本开始我的工作。谢谢。

嗨每个人,我有一个MSO9254A这个testetd和一些修改后,工作正常。
现在…
我建立一个完整的MATLAB GUI套件快速测试,但我无法从数字分析仪捕获数据。
我已经看在互联网上,但我没有找到这个任务MATLAB脚本或其他语言。

没有任何一个知道逻辑分析仪捕获的示例代码?

谢谢,
吉列尔莫

我已经解决了我的problem.The读取失败是由于数据采集。是在该DSO1012A小心:运行和:STOP命令用于采集,而在这个例子中:数字化CHAN1命令是数据采集。

任何人都尝试安捷伦DSO1012A示波器这个M档?

在我的示波器和Matlab成功连接后,我运行了m文件,但是失败了。
我走到编程,发现在binblockread功能出现问题。
误差估计是
警告:读取失败:一个binblock不可被读取。

Accoridng的评论
我也试着更改线76:
waveform.RawData = binblockread(visaObj, 'UINT16');的fread(visaObj,1);

waveform.RawData = binblockread(visaObj, 'INT16');的fread(visaObj,1);
并且还
waveform.RawData = binblockread(visaObj);的fread(visaObj,1);
但是错误也会发生。

我不konw如果这个M档是compatiable我DSO1012A示波器?任何人都可以给我一些建议,以解决这个问题呢?提前致谢。

维诺德

乡亲2000/3000系列示波器尝试这一点 - 如果你得到错误,如“未定义头”那可能是因为范围不支持SCPI命令。万博1manbetx请参考程序员手册范围为示波器的确切SCPI命令,并用它来替换脚本违规的命令。

“数据超出范围”通常是因为你想设置的值,如时基,其范围是不能够的。再次 - 修改参数通过范围支持的值。万博1manbetx

一种简单的方法找出哪些命令导致错误是把一个断点fprintf中后“(visaObj,‘* RST;:AUTOSCALE’);
“然后通过代码单步,当你发送一个不正确/不兼容的命令的范围将在它的屏幕上。经过示波器的程序员手册显示错误,并找到相应的命令(或参数范围)和修改这个代码的您的版本因此。

保罗

One final note for anyone reading this--in order to pull data off from multiple channels, you need to read each channel sequentially (so call WAVEFORM CHAN1 and read out the data, then WAVEFORMCHAN2, u.s.w.)--there's no routines to pull off multiple channels at the same time.

保罗

我只是回答我的问题:

对于3000系列示波器,集获取:COUNT为(不支持1)2和65536之间。万博1manbetx该数据也需要UINT16。

对于屏幕捕获才能正常工作,您需要更改线路
fprintf中(visaObj, ':显示:DATA BMP,灰度?');

保罗

大家好,

I \米试图运行该代码与3014A系统,并且我得到各种仪器误差的(typicaly 113未定义头,222个数据超出范围,224参数值非法,410查询中断时,420查询未端接)。它最终不会输出方波图1(我使用的演示2系统与示波器),但输出符号错误的(我希望在0和2.5 V的平方,它会从-2.7到0)。

有什么建议?
谢谢,
保罗

@Graham

你在哪里把这个代码或你什么时候要执行它?

代替的(在代码的结束):
%删除对象并清除它们。
删除(visaObj);清楚visaObj;

格雷厄姆

我有相同的问题与安捷伦2014A示波器。我联系了客户支持,他说该对象可能仍然是锁定万博1manbetx的,并给了我一些代码来修复它。

以下运行固定的问题的代码,但是我还是不能让示波器工作与MATLAB。

%找到所有先前创建的对象的仪器
newobjs = instrfind;

%如果有任何现有对象
如果(〜的isEmpty(newobjs))
%关闭连接到仪器
文件关闭(newobjs);
%并释放对象资源
删除(newobjs);
结束

%删除从工作区中的对象列表。
清楚newobjs;

祝好运。

嘿,

有没有人用InfiniiVision DSO- x - 3034a(3000系列DSO)尝试过这个例子?
我有点困惑,因为没有这里提到的3000系列,并为“MATLAB数据分析软件安捷伦InfiniiVision和Infiniium示波器”安捷伦页面上(http://www.home.agilent.com/agilent/product.jspx?cc=DE&lc=ger&ckey=1559383&nid=-35491.868946.00&id=1559383&cmpid=21300)。但是,有一个名为“2000和3000 InfiniiVision X系列示波器IVI和MATLAB仪器驱动程序”(驱动程序http://www.home.agilent.com/agilent/editorial.jspx?cc=DE&lc=ger&ckey=2019021&nid=-11143.0.00&id=2019021&pselect=SR.GENERAL)。

当我运行此M-文件,我得到与在Matlab中的测量值的曲线图中,但在没有figure2 BMP-文件(截图)被加载。总的来说,我得到的消息:
----------------------------
仪器错误:-222,“数据超出范围”

警告:binblock不可被读取。
警告:VISA:超时
???使用==> imbmpinfo在27错误
文件C:\用户\ Florian.Jungbold \下载\ SCPIScope \ test1.bmp是空的。

误差在==> readbmp在15
信息= imbmpinfo(文件名);

错误==> imread 443
[X,地图] = feval(fmt_s.read,文件名,extraArgs {:});

误差在==> SCPIScope在140
imageMatrix = imread( 'test1.bmp', 'BMP');
----------------------------

写这么长的评论后,我问自己,如果它会更好张贴此版块?
问候

注意:某些安捷伦固件(诸如在54831D)可以具有从6000系列的SCPI命令的区别。您可能需要更改线路从MATLAB的文件:

流(visaObj WAV: 5000分);

fprintf中(visaObj, ':ACQ:POINTS 5000');

注:此,已经在Agilent 6000系列示波器测试。安捷伦6000系列示波器在无符号整数格式返回字数据。其它系列示波器(如8000系列为例)在符号整数格式返回字数据。

如果波形不MATLAB看起来是正确的,请尝试更改线76:

waveform.RawData = binblockread(visaObj, 'UINT16');的fread(visaObj,1);

waveform.RawData = binblockread(visaObj, 'INT16');的fread(visaObj,1);

下列代码是否也适用于安捷伦infiniium 54831D MSO?

是否也可以绘制电流而不是电压?
fprintf中(oszi, ':通道:单位安培');

出色的工作和帮助!

更新

1.3.0.1

更新许可证

1.3.0.0

次要更新

1.2.0.0

小的修改。使用安捷伦MSO6104A测试。

1.1.0.0

次要更新评论

MATLAB版本兼容性
创建了R2009a
与任何版本兼容
平台兼容性
窗户 苹果系统 Linux的