LOTO示波器的变长存储深度和分段存储
LOTO示波器的变长存储深度和分段存储
经常有客户咨询和不理解LOTO示波器的存储深度为什么是变长的,也表示对LOTO示波器的分段存储功能不理解,本文对LOTO示波器的存储机制做一次完整的梳理,帮助我们的客户更好的使用示波器。
数字示波器都是有死区时间(Dead-time)的,如下图所示,在两次采集时间段 (Acquisition-time)之间,一定会存在一个没有采集到的死区时间,在死区时间内的信号波形是采集和显示不到的。
所以示波器厂家都在尽力缩短死区时间段,加长采集时间段(上图灰色部分)。但是死区时间段不可能无限制缩小,采集时间段也不能无限制增大,这两种做法都需要在产品的实际使用中做出权衡。
降低采样率或者加大存储深度,是加长采集时间段的两种常用方法。大的存储深度可以保障示波器用尽可能高的采样率一次采集尽可能长时间段的波形,但是并不能消除死区时间段,较大存储会降低处理和波形捕获率。这会降低示波器的响应速率,并增加每次采集间隔的停滞时间。降低采样率的方法,使得存储数据点数减少,有利于提高波形的捕获速率和波形刷新率,缺点是采样率降低到一定程度会造成每个波形周期的采样点数不足,引起失真。
高端示波器还有第三种方法:分段存储功能。分段存储功能将存储划分为较小分段。用户可以指定存储应被划分为几个分段,每个分段均具备同等长度。
当示波器观察到第一个触发事件时,会开始在采集存储的第一个分段中存储采样点,直至第一个分段存储满。之后示波器会重新做好触发准备,开始寻找下一个出现的触发事件。当触发事件发生时,示波器会在下一个存储分段中存储采样点。示波器会不断重复这一过程,直至所有存储分段均存储满。 在捕获停滞时间较长的突发信号时,分段存储模式尤其有用。许多串行总线和通信信号均属于此类信号。通过分段存储,示波器可以维持高采样率,同时捕获长达数分钟数小时或数天。
LOTO示波器为OSCA02及更高型号的产品提供了多种灵活的存储方式,对产品的性能做出了权衡和兼顾,既可以小存储深度快速刷新,保持高的波形更新速率,又可以设置成长时间采集模式连续采集,还可以进行分段存储。
我们来逐个功能介绍:
1 示波器模式:
大部分客户的大部分应用场景下,应选择LOTO示波器的示波器模式,这也是我们软件的默认模式。这种模式优先使用固定的128K的存储深度,从而保障波形的快速更新和显示及运算。
这种模式下,客户可以自行调整波形刷新的帧率。也可以自由设置触发方式和位置,并得到快速的波形响应。
在示波器模式下,客户不需要考虑采样率和存储深度,只需要考虑当前屏幕显示的时间跨度,也就是时间档位就可以。示波器会根据当前的时间档位自动调整采样率和存储深度达到最合适的效果,兼顾效率和准确。所以LOTO示波器的存储深度是变长的。
在这个模式下,LOTO示波器还提供了500帧的PC缓存功能,还提供了余晖功能。这两个功能记录多帧的数据和波形,分别横向排开显示以及垂直叠加显示。相当于500个当前存储深度的存储,比如当前是128K的存储深度的话,打开PC缓存功能相当于60M的深度了。并且这些数据可以导出到电脑文件,也可以导入到LOTO示波器的软件中重现出波形进行分析,也可以逐帧导出成文本文件或者电子表格文件。
这500个存储深度之间仍然是有死区时间的,采用高的波形刷新速率时,这个功能可以极大提高异常波形的发现概率。这就有点像下一个模式分段存储模式了,我们后面介绍。
2 采集卡模式(传统长存储模式):
LOTO示波器可以选择将示波器模式切换为采集卡模式,如下图所示:
,
这个模式下,客户手动选择采样率,以及选择适合的缓冲区(相当于存储深度)大小进行采集。选择好之后点击采集,就开始持续长时间采集,直到填满整个选定的缓冲区。缓冲区最长可以设定为250兆字节,如果是双通道采集,那么整个采集过程所需要的时间为缓冲区大小除以2再除以采样率。比如,使用2.4M采样率,缓冲区为250M,采集1KHZ的正弦波,那么会持续采集60秒,大约1分钟的波形数据并绘制在屏幕上,采集过程中会显得很卡顿,设置长时间不更新波形,会有进行中的指示标识:
需要耐心等待采集结束,结束后如下图所示。
这样1分钟的数据放在屏幕上,多数情况下会显得非常密集,比如图上就有6万多个周期的波形,我们可以放大了逐个观察分析一般凭借肉眼和工程师耐心,人最多看不超过1000个周期就崩溃,也就是说你可查看的最大波形周期是1000个,也就是千分之一的概率,对于1ppm的异常,肯定无法看到。现在可以按照条件搜索,但是条件呢?是脉冲,还是边沿缺陷,还是过冲?你无法预知,也就无法搜索,按照各种条件搜索,需要花费不少时间,也会出差错。有些情况下,使用模式1的示波器模式快速刷新波形,一旦看到波形异常闪过,可以立刻停下采集,在过去的500帧缓存里面找到它。
长存储会带来计算处理要求的提高,如果同样的处理器,数据多了处理时间会变长,波形捕获率就会变得非常慢。为了方便这种长时间大数据量的采集后期分析,我们可以把采集到的数据导出成数据文件,如下图所示:
然后在1示波器模式下导入进来,变成500帧的分段波形,总数据量是250M字节,可以方便的逐一查看分析,如下图所示:
如上图所示,LOTO示波器这样的设计兼顾了长时间采集的优点,又尽量弥补了后续分析查看的不便。LOTO示波器不但可以将采集卡模式使用在2通道示波器模拟信号输入情况下,也可以使用在双通道合并采集的情况下,也可以使用在逻辑分析仪数字通道输入的情况下,并且都可以导出文件并导入到PC缓存里分段分析。一旦导入到PC缓存里,就可以重现出波形进行分析,也可以逐帧导出成文本文件或者电子表格文件。
3 分段存储模式:
在前面提到过,在示波器模式下,开启PC缓存功能,基本上就相当于有了500段的分段存储能力了。这种分段存储模式有一个特别典型的应用场景:低占空比脉冲或猝发信号。信号与信号之间有较长的空闲时间,很多情况下,即使有较大的存储,或者通过降低采样率的方式也很难达到想要的采集时长,想象一下,一天之内可能出现100次,每次出现的信号很尖锐很短促需要很高的采样率去抓取,示波器有再大的存储也不可能存储一天数据,采样率降的再低也不可能抓到所有的100次信号,而分段存储却可以很好的完成。
如上图所示,分段存储在高采样率采集过程中进行多次触发,对每次触发采样得到的数据存放到将存储空间分成的一段一段小的存储中。示波器触发一次填充一个段,段与段之间的空闲信号或信号不感兴趣的部分没有被采集和存储。
还有一种常见的场景特别适合分段存储功能发挥独特作用的是串行总线分析——串行总线以数据包的方式进行传输,包与包之间空闲时间会占用示波器宝贵的存储资源,采用分段存储,示波器可以只采集数据包,空闲时间不采样。在保持较高采样率下,还可以采集较多的数椐包,方便解码分析。接下来我么看一个LOTO示波器使用分段存储采集和解码这样的串行总线的案例。
如上图所示,串口RS232每隔200ms(如果要效果更明显可以设置更长,比如1分钟间隔)会发送一串数字,0000000一直到999999999并且循环发送。我们开始触发和500帧的PC缓存功能作为分段存储。
我们看到上图所示,分段存储的第6帧,数据是0000000,并且解码出来了。下图第7帧,数据是1111111,并且解码出来了。
下图分段存储的第8帧,数据是2222222,并且解码出来了…
这样一直到最后,每帧被捕获一个数据包,并且解码出来,一直可以捕获500帧不遗漏,不论整个发送过程如何漫长。
LOTO示波器的变长存储深度和分段存储的更多相关文章
- C99中的变长数组(VLA)
处理二维数组的函数有一处可能不太容易理解,数组的行可以在函数调用的时候传递,但是数组的列却只能被预置在函数内部.例如下面这样的定义: #define COLS 4 int sum3d(int ar[] ...
- C99新增内容之变长数组(VLA)
我们在使用多维数组是有一点,任何情况下只能省略第一维的长度.比如在函数中要传一个数组时,数组的行可以在函数调用时传递,当属数组的列却只能在能被预置在函数内部.看下面一个例子: #define COLS ...
- 变长数组(variable-length array,VLA)(C99)
处理二维数组的函数有一处可能不太容易理解,数组的行可以在函数调用的时候传递,但是数组的列却只能被预置在函数内部.例如下面这样的定义: #define COLS 4 int sum3d(int ar[] ...
- SQL Server如何在变长列上存储索引
这篇文章我想谈下SQL Server如何在变长列上存储索引.首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: -- Create a new t ...
- mysql变成类型字段varchar值更新变长或变短底层文件存储原理
为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制.之前一直模糊不清,网上也搜不到现成的答案.经过多方资料搜集整理.写出此文供大家一起参阅.由于涉及众多非常底层的知识,我假设读者 ...
- [转帖]深度: NVMe SSD存储性能有哪些影响因素?
深度: NVMe SSD存储性能有哪些影响因素? http://www.itpub.net/2019/07/17/2434/ 之前有一个误解 不明白NVME 到底如何在队列深度大的情况下来提高性能, ...
- C++中的变长参数
新参与的项目中,为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的 ...
- 报文格式:xml 、定长报文、变长报文
目前接触到的报文格式有三种:xml .定长报文.变长报文 . 此处只做简单介绍,日后应该会深入学习到三者之间如何解析,再继续更新.——2016.9.23 XML XML 被设计用来传输和存储数据. H ...
- C++内存分配及变长数组的动态分配
//------------------------------------------------------------------------------------------------ 第 ...
- C99新特性:变长数组(VLA)
C99标准引入了变长数组,它允许使用变量定义数组各维.例如您可以使用下面的声明: ; ; double sales[rows][cols]; // 一个变长数组(VLA) 变长数组有一些限制,它必须是 ...
随机推荐
- Ubuntu20.04下的ESP8266环境
硬件说明 ESP8266使用的是3.3V供电, 和Arduino不一样, ESP8266的I/O脚是不能防5V的, 连上就烧. 其输出只有12mA, 而Arduino是20-40mA. ESP8266 ...
- CentOS7 开机网卡加载失败
服务器CentOS7一开,发现web服务无法访问.最终用ifconfig发现,网卡没有加载,连个IP地址都没有. 这时使用命令 service network restart 试图重启服务器网络.不料 ...
- [Revit二次开发] 使用过滤器时,可能存在的坑:FilteredElementCollector.MoveNext()报错
1.问题描述 在使用FilteredElementCollector时,如果涉及到需要对collector进行多次过滤处理,可能会出现MoveNext的报错. 问题代码如下: 1 var collec ...
- python字典操作的大O效率
- zookeeper运行时dos窗口一闪而过
错误:从官网下载zookeeper解压到本地之后,鼠标双击运行zkServer.cmd文件,dos窗口一闪而过,看不到错误原因: 解决方法:通过dos窗口执行zkServer.cmd文件,对应的错误信 ...
- 详细的BoltDB学习记录文档
最近项目中用到了boltdb这个go开发的key/value 数据库,但是之前并有接触过,所以特意去看了官方,也找了些资料,网上找的资料要不就是官方文档的翻译,要不就是简单的介绍一点,都不是很全,所以 ...
- 【Azure 环境】标准版 Logic App 如何查看 Workflow的执行成功数和失败数的指标呢?
问题描述 在Azure中创建逻辑应用(Logic App),有两种计划类型.一是消费型,另一种是标准型. 在消费型的Logic App Metrics页面中,我们可以看见Workflow的执行成功数指 ...
- C++异常的基本概念与用法
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try{}内写可能会抛出异常的代码.catch(类型){处理} 写异常类型和异常处理 抛出 ...
- Java 对属性赋值的位置 执行的先后顺序
1 package com.bytezreo.block; 2 3 /** 4 * 5 * @Description 对属性赋值的位置: 6 * @author Bytezero·zhenglei! ...
- hadoop集群环境搭建--双NameNode
hadoop配置文件修改 个人配置文件压缩包地址: hadoop配置文件压缩包地址点此下载 tar -zxvf 你的压缩包路径/hadoop.tar.gz -C /usr/hadoop(你的hadoo ...