MATLAB是一种软件环境和编程语言,拥有超过100万用户。MATLAB扩展了安捷伦示波器的功能,使您能够分析和可视化实时或采集的示波器信号,进行特定应用程序的测量,创建和应用您自己的滤波器和均衡方法,并进行自动化测试。
这个例子向您展示了如何使用MATLAB来控制安捷伦示波器,捕获波形并在仪器上抓取屏幕截图。用户可以自定义代码,以允许不同的分段点数,抽样率等。有关用于控制仪器的SCPI命令的更多信息,请参阅仪器的程序员指南。
要执行此示例,请在MATLAB命令窗口中输入' SCPIScope '。注意:在scopcope中更改VISA资源字符串。m文件到仪器的签证地址,如从安捷伦连接专家获得。
这个MATLAB示例已经在Agilent MSO6104A InfiniiVision示波器上进行了测试,但应该在大多数Agilent InfiniiVision 5000, 6000和7000系列示波器上工作。根据您仪器的程序员手册中提供的SCPI命令进行少量修改,它应该可以与Infiniium 9000和90000系列示波器,或安捷伦InfiniiVision 1000系列、2000-X系列、3000-X系列、4000-X系列等一起工作。
请参阅您的仪器的程序员手册,以获得特定型号仪器的SCPI命令的完整列表。如果您在逐步执行代码时仪表屏幕显示错误,请相应地修改此示例。
要了解更多使用或购买MATLAB与安捷伦示波器,请访问:
http://www.agilent.com/find/matlab_oscilloscopes
想要免费试用MATLAB和/或仪器控制工具箱,请访问//www.tatmou.com/agilent/instrument/tryit.html
维诺德(2021)。通过标准VISA接口从安捷伦示波器捕获波形(//www.tatmou.com/matlabcentral/fileexchange/28887-capturing-a-waveform-from-an-agilent-oscilloscope-over-a-standard-visa-interface), MATLAB中央文件交换。检索.
嗨,这个代码允许我最终与我的Keysight infiniiVision 3000x系列示波器通信。
然而,我如何设置自己的参数[preambleBlock]。这是我认为我必须改变的东西,以便以我想要的形式捕捉信号。默认情况下,它只捕获第一个周期,但我需要前20个周期,并且时间基数从0开始。还有,有没有一种方法可以从视野中捕捉FFT。
谢谢。
这个代码可以在matlab r2013a运行吗??我真的需要一个答案,我的最后一年项目..如果有任何其他代码或视频奖励回复我!!
这与安捷伦Infiniium示波器工作吗?
工作好了!谢谢。
请帮助我!我正在写类似的程序的代码,我想捕捉信号的实现,在一段时间。我该怎么做呢?
我尝试通过USB运行从DSO-X-2014A捕获数据的代码。但它出现了以下一些错误。虽然从图1中得到了确切的图,但在图2中什么都没有。我是第一次使用数据采集工具箱,代码对我来说也是新的。请帮我弄清楚我做错了什么。
使用imbmpinfo>getSignature时出错(第55行)
签名不能为空。
imbmpinfo错误(第20行)
元数据。FormatSignature = getSignature (fid);
读取bmp错误(第14行)
信息= imbmpinfo(文件名);
imread错误(第415行)
[X, map] = feval(fmt_s。读、文件名extraArgs {:});
SCPIScope错误(第140行)
imageMatrix = imread (test1.bmp, bmp);
很有帮助。然后我可以开始我的工作基于这个脚本。谢谢。
大家好,我在MSO9254A上测试了这个,经过一些修改后工作正常。
现在…
我正在构建一个完整的matlab GUI套件用于快速测试,但我无法从数字分析仪捕捉数据。
我在网上找过了,但是我没有找到matlab脚本或其他语言来完成这个任务。
有谁知道逻辑分析器捕获的示例代码吗?
谢谢,
吉尔勒莫
我解决了我的问题。不成功的读取是由于数据采集。注意,在DSO1012A中:RUN和:STOP命令用于采集,而在本例中:数字化CHAN1命令用于数据采集。
有人在安捷伦DSO1012A示波器上试过这个m文件吗?
在我的示波器和Matlab连接成功后,我运行了m文件,但是失败了。
我逐步进行了编程,发现问题出现在binblockread函数上。
错误消息是
警告:读不成功:binblock不可读。
根据这些评论
我还试着把第76行改成:
波形。RawData = binblockread (visaObj uint16);从文件中读(visaObj, 1);
来
波形。RawData = binblockread (visaObj int16);从文件中读(visaObj, 1);
同时也
波形。RawData = binblockread (visaObj);从文件中读(visaObj, 1);
但是错误也会发生。
我不知道这个m文件是否与我的DSO1012A示波器兼容?有人能给我一些解决这个问题的建议吗?提前谢谢。
如果您在2000/3000系列范围中尝试这种方法,可能是因为该范围不支持SCPI命令而出现“未定义header”之类的错误。金宝app请参考程序员手册中的示波器的精确SCPI命令,并使用它来替换脚本中的违规命令。
“超出范围的数据”通常是因为您试图设置一个范围无法设置的值,例如timebase。再次—将参数修改为范围支持的值。金宝app
找出哪个命令导致错误的一个简单方法是在“fprintf(visaObj,'*RST;:自动定量的);
然后单步通过代码。当你发送一个不正确/不兼容的命令时,作用域将在它的屏幕上显示一个错误。仔细阅读scope的程序员手册,找到合适的命令(或参数范围),并相应地修改您的代码版本。
最后要注意的是——为了从多个通道提取数据,您需要依次读取每个通道(因此调用波形CHAN1并读取数据,然后是WAVEFORMCHAN2, u.s.w)——没有同时提取多个通道的例程。
我刚刚回答了自己的问题
对于3000系列示波器,设置ACQUIRE:COUNT在2到65536之间(不支持1)。金宝app数据也需要是uint16。
要使屏幕截图正常工作,您需要将该行更改为
流(visaObj”:显示:数据?BMP、灰度的);
你好所有的,
我尝试用3014A系统运行这段代码,我得到了各种仪器错误(典型的113未定义头,222数据超出范围,224非法参数值,410查询中断,420查询未终止)。它最终输出一个方波到图1(我使用示波器演示2系统),但输出是错误的符号(我期望0和2.5 V之间的平方,它从-2.7到0)。
任何建议吗?
谢谢你!
保罗
@Graham
您将代码放置在何处,或者必须在何时执行它?
而不是(在代码的结尾):
%删除并清除对象。
删除(visaObj);清楚visaObj;
?
我在使用安捷伦2014A示波器时也遇到了同样的问题。我联系了客户支持,他说对象可能仍然是锁定的金宝app,并给了我一些代码来修复它。
运行下面的代码修复了这个问题,但我仍然不能让示波器与MATLAB一起工作。
找到所有先前创建的工具对象
newobjs = instrfind;
%如果存在任何已存在的对象
如果(~ isempty (newobjs))
关闭与仪器的连接
文件关闭(newobjs);
%,释放对象资源
删除(newobjs);
结束
从工作区中删除对象列表。
清楚newobjs;
祝你好运。
嘿,
有人用InfiniiVision DSO- x - 3034a(3000系列DSO)试过这个例子吗?
我有点困惑,因为这里没有提到3000系列,在agilent页面的“MATLAB数据分析软件用于agilent 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-File时,我在Matlab中得到测量值的图,但在图2中没有加载bmp-File(截图)。总的来说,我得到了这些信息:
----------------------------
仪器误差:-222,“数据超出量程”
警告:binblock不可读。
警告:VISA:发生超时
???错误使用==> imbmpinfo 27
文件C:\Users\Florian.Jungbold\下载\SCPIScope\test1.bmp为空。
错误在==>读取bmp在15
信息= imbmpinfo(文件名);
在==>错误读在443
[X, map] = feval(fmt_s。读、文件名extraArgs {:});
错误在==> SCPIScope在140
imageMatrix = imread (test1.bmp, bmp);
----------------------------
在写了这么长一段评论后,我问自己把这篇文章发到论坛上是不是更好?
问候
注意:某些Agilent固件(例如在54831D上)可能与6000系列的SCPI命令不同。你可能需要改变matlab文件中的行:
流(visaObj WAV: 5000分);
来
流(visaObj: ACQ:点5000);
注意:这已经在安捷伦6000系列示波器上进行了测试。安捷伦6000系列示波器以无符号整数格式返回字数据。其他系列示波器(例如8000系列)以有符号整数格式返回字数据。
如果波形在MATLAB中看起来不正确,请尝试从以下更改第76行:
波形。RawData = binblockread (visaObj uint16);从文件中读(visaObj, 1);
来
波形。RawData = binblockread (visaObj int16);从文件中读(visaObj, 1);
下面的代码也适用于安捷伦无限54831D MSO吗?
也有可能用电流来代替电压吗?
fprintf (oszi, ':CHANnel1:UNITs amere ');
出色的工作和帮助!