完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我有一个DSA91304A示波器,我正在使用matlab通过其USB2.0端口来控制这个范围。
在Matlab中我在“:WAV:DATA?”之后使用“binblockread”。 然而,从它获取数据,数据传输速率似乎太慢。 我有2000点(插值关闭)和16位资源,传输这些数据需要12毫秒。 使用这些数字,计算出的传输速率约为0.3MB / s,远低于USB2.0预期的50MB / s。 PC端口也是USB2.0。 这个问题让我抓狂,因为这个数据传输是在一个非常大的循环中。 如果这是这个范围的正确数据传输速度,或者我能做些什么来加快速度,那么有没有人有任何想法? 谢谢。 以上来自于谷歌翻译 以下为原文 Hi, I have a DSA91304A scope and am using Matlab to control this scope throught its USB2.0 port. In Matlab I use "binblockread" after ":WAV:DATA?" to fetch data from it, however, the data transfer rate seems too slow. I have 2000 points (interpolation turned off) with 16 bit resoution, it takes 12ms to transfer this data. Using these number the calculated transfer rate is around 0.3MB/s, much slower than expected 50MB/s for USB2.0. The PC port is also USB2.0. This problem is driving me crazy as this data transfer is inside a very large loop. Does anybody have any idears if this is the right data transfer speed for this scope or there is anything I can do to make it faster? Thanks. |
|
相关推荐
4个回答
|
|
首先,在我谈到你的问题之前,我会指出你对USB传输速度的期望有点不切实际。
理论上,USB2.0可以以大约50MB /秒的速度传输数据。 基于大量测试,很多设备,实际最大值约为20MB /秒,持续。 这适用于大型传输,硬盘驱动器或其他针对速度优化的设备。 至于范围,我已经使用Infiniium范围进行了大量的基准测试,主要是在MATLAB中,但有些是C和Python。 我使用过USB和各种局域网配置。 我测试了一堆不同的块大小(10K到2M)和捕获大小(500K到50M)。 我从未测试过小到2K的数据,因为大多数人都希望传输大量数据。 不过,你所看到的是正确的。 我已经看到USB上的最大吞吐量为9Mpoints /秒(18MBytes / sec)。 在最近尝试的最小块大小,10K,大约2M点/秒(4MBytes / sec)并且下降。 从我的早期测试中,我有一个旧的结果,以291KBytes /秒显示2K,这非常接近你所看到的。 我确切地知道这些条件,因为它来自几年前,但它确实符合你的结果。 局域网有点快。 使用TCPIP连接(不是VISA),MATLAB的最大吞吐量约为12M点/秒(24 MBytes /秒)。 使用VISA比较慢。 在VISA下,您可以使用一种新协议与范围进行通信,称为HISLIP。 在MATLAB中达到20M点/秒,在C中达到40MPoints /秒。所有最佳传输速率都使用大捕获(10M或更高)和大块大小(100K到2M)。 对于每次转移,在范围和转移介质中都存在一定量的开销,这几乎是不变的。 这使得大型传输更加高效,而小型传输看起来很慢。 有一些工作正在改进所有这些数字。 几乎每个版本的SW(目前在Win7上为4.60,在WinXP上为4.20)都比前一版本更快。 如果您使用的是XP,则需要为Win7升级付费。 如果您的范围对于Win7来说太旧了,那么您应该进行硬件升级。 除了更好的性能外,新版本还有许多新功能。 免责声明:为了获得更可靠的响应,您应该考虑致电当地的安捷伦技术呼叫中心。 安捷伦论坛在“可用”的基础上进行监控,并不一定是解决技术问题的最快方式。 以上来自于谷歌翻译 以下为原文 First, before I talk about your issue, I'll point out that your expectations of USB transfer speed are somewhat unrealistic. USB2.0 could, theoretically, transfer data at around 50MB/sec. Based on a lot of testing, of a lot of devices, the real maximum is about 20MB/sec, sustained. That's for large transfers, to and from hard drives, or other devices that are optimized for speed. As to the scope, I've done a lot of benchmarking with Infiniium scopes, mostly in MATLAB, but some C and Python. I've used USB, and a variety of LAN configurations. I've tested a bunch of different block sizes (10K to 2M) and capture sizes (500K to 50M). I have never tested anything as small as 2K of data, since most people want to transfer large amounts of data. What you're seeing is about right, though. I've seen a maximum throughput, on USB, of 9Mpoints/second (18MBytes/sec). At the smallest blocksize I tried recently, 10K, it was about 2Mpoints/second (4MBytes/sec) and dropping. I have one old result, from my early testing, that shows 2K at 291KBytes/sec, which is pretty close to what you saw. I don't know the conditions, exactly, since it's from a few years ago, but it does match your results. LAN is somewhat faster. Using a TCPIP connection (not VISA), the max throughput, with MATLAB, is about 12Mpoints/second (24 MBytes/second). Using VISA it's slower. There's a new protocol you can use to talk to the scope with, under VISA, called HISLIP. That gets up to 20Mpoints/second in MATLAB, and 40MPoints/second in C. All of the best transfer rates were using large captures (10M or greater), and large block sizes (100K to 2M). There's a certain amount of overhead, in the scope, and in the transfer medium, for every transfer, which is almost constant. That makes large transfers more efficient, and small transfers look slow. There is some work going on to improve all of these numbers. Almost every release of the scope SW (currently at 4.60 on Win7, and 4.20 on WinXP) is faster than the previous one. If you are running with XP, you should pay for the Win7 upgrade. If your scope is too old for Win7, then you should get the HW upgrade. There are lots of new features in the newer versions, besides the better performance. Al Disclaimer: For more reliable response, you should consider calling your local Agilent Technical Call Center. The Agilent Forums are monitored on an "as available" basis, and aren't necessarily the fastest way to get technical questions answered. |
|
|
|
nvywyerwer 发表于 2019-1-24 16:34 嗨,阿尔戈斯。 谢谢你的回复,我理解这个问题的原因。 我认为在我的情况下,最好的解决方案是将我的4KB数据临时存储在作用域内存中,并在循环完成后检索大数据中继。 你能建议一些我应该寻找的命令,或者一些示例代码来做这个吗? 我认为这也应该帮助许多其他高速范围用户解决数据传输问题。 最好的祝福 以上来自于谷歌翻译 以下为原文 Hi, Algoss. Thanks for the reply, I understand the reason of this problem. I think the best solution in my case is to temporarily store my 4KB data in the scope memory, and retrieve the large trunk of data after the loops are finished. Can you please suggest some commands I should look for, or some sample codes to do this? I think this should also help many other high speed scope users with data transfer overhead problems. Best regards |
|
|
|
没有办法在范围内“临时存储”数据,而不会产生相同的开销。
示波器存储器与PC存储器分开。 示波器存储器的体系结构最好描述为“FISO”,快速输入/慢速输出。 数据以A / D的80 GB /秒存储。 获取该数据以供在作用域中使用或转移,是开销导致问题的地方。 唯一可能对您有用的是使用分段存储,如果您有一种方法可以为您想要的每2000个样本生成一个触发器。 然后,所有触发器的所有数据立即被卸载,从而减少了开销。 免责声明:为了获得更可靠的响应,您应该考虑致电当地的安捷伦技术呼叫中心。 安捷伦论坛在“可用”的基础上进行监控,并不一定是解决技术问题的最快方式。 以上来自于谷歌翻译 以下为原文 There is no way to "temporarily store" data in the scope, without incurring the same overhead. The scope memory is separate from PC memory. The architecture of scope memory is best described as "FISO", Fast In/Slow Out. Data gets stored at 80 GBytes/second from the A/D. Getting that data back out for use either in the scope, or to transfer, is where the overhead causes problems. The only thing that might work for you is to use Segmented Storage, if you have a way of generating one trigger for every 2000 samples that you want to take. Then all the data from all of the triggers gets unloaded at once, reducing the overhead. Al Disclaimer: For more reliable response, you should consider calling your local Agilent Technical Call Center. The Agilent Forums are monitored on an "as available" basis, and aren't necessarily the fastest way to get technical questions answered. |
|
|
|
nvywyerwer 发表于 2019-1-24 16:59 根据用户的行为,也许分段存储器采集是一种选择? 这是一个带有分段内存捕获的MATLAB示例:http://www.mathworks.com/matlabcentral/fileexchange/24728 -Vinod 以上来自于谷歌翻译 以下为原文 Depending on what the user is doing, perhaps the segmented memory acquisitions are an option? Here's a MATLAB Example with segmented memory capture: http://www.mathworks.com/matlabcentral/fileexchange/24728 -Vinod |
|
|
|
只有小组成员才能发言,加入小组>>
1231 浏览 0 评论
2351 浏览 1 评论
2161 浏览 1 评论
2026 浏览 5 评论
2910 浏览 3 评论
974浏览 1评论
关于Keysight x1149 Boundary Scan Analyzer
707浏览 0评论
N5230C用“CALC:MARK:BWID?”获取Bwid,Cent,Q,Loss失败,请问大佬们怎么解决呀
808浏览 0评论
1231浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 00:26 , Processed in 1.970319 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号