Rigol DS1074 示波器显示非常错误的时序

电器工程 示波器 定时
2022-01-16 23:33:33

我有一个 5 波特(每位 200 毫秒)的反相 RS232 信号,它发送字节 0x33。(第一个“低”是起始位)

当我将示波器配置为每单位 200 毫秒时,它显示该信号绝对完美。我使用单触发模式(右上角的“单”按钮)

Rigol示波器正确时序

如您所见,时间是精确的。

现在出现了奇怪的情况:我以每单位 500 毫秒的设置捕获相同的信号。它看起来像这样。

Rigol 示波器时序错误

为了更好地查看时间,我将 SAME 捕获的时间切换为每单位 200 毫秒并得到以下信息:

Rigol 示波器时序错误

如您所见,信号现在似乎低于每比特 200 毫秒。这在数字示波器上怎么可能?

第一步,示波器将捕获的数据存储在内存中。在第二步中,它显示数据。所有时序均基于精确的晶体振荡器。

我看到的唯一区别是在屏幕截图的顶部,上面写着:

正确捕获:10.0 MSa/s 和 24.0M pts

错误捕获:4.0 MSa/s 和 24.0M pts

对我来说唯一的解释似乎是一个胖软件错误。Rigol 工程师是否无法正确转换以显示 4.0M 样本信号?这个示波器系列是如何通过质量控制的?

是的:我确保我的信号是准确的。我可以重复一百次:每单位 200 毫秒的捕获是完美的。以每单位 500 毫秒捕获会出错。

PD: 现在我测试了更多的时基。这些是结果:

5 seconds per unit --> OK
2 seconds per unit --> OK
1 second per unit --> OK
500 ms per unit --> wrong (constantly 4% timing error)
200 ms per unit --> OK
100 ms per unit --> OK
50 ms or less --> a period does not fit anymore

但这只是多个错误之一。示波器还有几个错误。

当您启用 RS232 解码器并且水平分辨率太小时,它不显示十六进制字节是可以理解的。但这实现起来非常错误,以至于它显示完全错误的数据!此屏幕截图显示了一个具有 10400 波特的 RS232 信号和数据包之间的长时间停顿。所有显示的“FF”都是错误的。

Rigol Bug 错误的 RS232 解码器数据


最丑陋的错误之一是旋钮“水平位置”。这完全是废话。它应该在屏幕上水平移动信号。但它的效果非常糟糕,以至于快速移动旋钮会导致信号突然跳到一个完全不同的位置。当你慢慢移动它时,它几乎完全不动。使用 Rigol 示波器进行长捕获导航这样的基本功能是一种痛苦!

而且,当您将旋钮移动得太快时,您会突然在信号中出现伪影。我在上面捕获的相同信号突然看起来像这样:

Rogol DS1074 错误工件

放大这个错误,你会看到一个 2 ms 周期的方波信号。该信号在示波器的输入端从未存在过。它是由示波器中的软件错误产生的,只需在屏幕上水平移动内存中捕获的信号!在这里,您可以看到左侧工件的放大图:

Rigol bug 2ms方波信号

这是正确工件的放大图:

Rigol bug 神器


好像这一切还不够,还有更多的错误。所有这些错误都是不可重现的。例如:

  1. 有信号但示波器不触发。它主要触发,但并非总是如此。
  2. “单次”触发模式已启用,但屏幕满屏后示波器不会停止。
  3. 碰巧我插入 U 盘,示波器完全冻结。所有的按钮都死了。
4个回答

对我来说似乎是一个错误。我使用带有 LED 闪烁程序的 Arduino 在我的 1054z 上复制了它。

这是在 500ms 时间尺度上获取的 12M 存储深度的信号,然后在 200ms 尺度上扩展。“节拍”的长度为 1000 毫秒。(好吧,从技术上讲,它是 900 毫秒长加上开销,但如果我添加下一列火车的第一部分,我会得到一个很好的 1000 毫秒序列,这会使数字更好。)

12M 500ms 扩展为 200ms 1000ms

上面的结果也是我使用 AUTO 内存设置得到的结果。但是如果我将内存深度设置为 24M,我会在 500 毫秒的范围内遇到问题。如上所述,这是在 500ms 时间尺度上获取的信号,然后扩展到 200ms 时间尺度:

24M 500ms 扩展为 200ms 1040ms

脉冲长度似乎延长了 40 毫秒,这与 OP 显示的每 100 毫秒相同的 4 毫秒(他从 600 毫秒变为 624 毫秒)。200ms 时间刻度的采集显示正确的脉冲长度为 1000ms

24M 200ms 1000ms

但是如果我以 500 毫秒的时间尺度获取,我得到 1040 毫秒

24M 500ms 1040ms

这是 Arduino Sketch,如果有人想复制它。

/*
  doubleBlink
  Turns on and off an LED in a predetermined sequence, repeatedly.

  Most Arduinos have an on-board LED you can control. On the Uno and
  Leonardo, it is attached to digital pin 13. If you're unsure what
  pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc

  This example code is in the public domain.

  modified 8 May 2014
  by Scott Fitzgerald
  modified 15 February 2016
  by Sredni Vashtar
 */


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);              // wait for 0.1 second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(100);              // wait for 0.1 second
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);              // wait for 0.5 second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(200);              // wait for 0.2 second
}

(我不得不说自从我上次更新示波器固件以来已经有一段时间了 - 我在 00.04.04.01.01 - 但该错误已被确认为迄今为止的最新版本)

编辑:按照 mkeith 的建议,这里是 1kHz 范围测试信号,在 500ms 时间尺度上采集,然后在 200us 时扩展,此时内存深度设置为 24M。

24M 1kHz 信号 500ms 扩展至 200us

周期变为 1.040 ms。相同的 4% 错误。直接以 200us 采集将给出 1.000 ms 的正确值。

它变得更好!如果我以5s的时基获取测试信号,然后将其扩展为200us,则周期变为800us!
这是 20% 的错误。

24M 1kHz信号5s扩展至200us

在其他时基(相同的停止采集)我得到正确的值。我很想看看他们如何在 Rigol 中进行四舍五入。

无论如何,这个错误正在影响最新的固件版本 - 正如 OP 所指出的那样 - 由于问题已经关闭,有兴趣的人可能想在 EEVBlog 论坛上关注这个帖子

自己也有DS1054Z,安装了最新的软件(00.04.04.04.03),这个bug也出现了。与 Rigol 打过电话,他们说这引用了他们在 2020 年 8 月打开的错误 #297,并且他们已经在内部复制了它,但他们的系统中没有关于下一个固件版本的具体计划。支持工程师无法为此提供任何时间表(并提到“很难预测新软件版本发布的旧硬件”),因此,我认为更多的 Rigol DS1xxxZ 所有者应该咨询 Rigol 支持并要求他们解决问题: 可能这样的压力会让他们生产出新的软件版本。

有问题的工程师是 Chris Armstrong ( https://www.youtube.com/watch?v=u3ZbcRb6AeM , chris_armstrong@rigol.com),所以人们可以在他们的错误报告中让他抄袭:他似乎是个理智的人和好人。

希望这对我们所有人都有帮助。

我没有解决方案,但我可以确认这会影响其他模型。

我刚刚在我的 MSO1104Z 上测量了 1kHz 示波器探头测试信号,当我让它以 4MSa/s 采样时,我还看到了 1.040ms 的周期读数。如果我以 2MSa/s 或 10MSa/s 采样,它会在 1.000ms 时正确读取。

1kHz at 4MSa/s 500ms per div zoomed

我的 MSO1104Z 系统信息页面也显示它正在运行版本 00.04.04.SP4,但根据我的记录,我加载的最后一个固件是 00.04.04.04.02。所以我从 Rigol 网站下载并安装了 00.04.04.04.03。现在系统信息页面仍然显示 00.04.04.SP4,正如预期的那样,4MSa/s 采集的时序问题仍然存在。

两个固件版本显示的信息相同

我已经在我的示波器上将采集内存深度设置恢复为自动,希望在我使用示波器时避免再次看到这种情况并忘记我将其更改为 24Mpts。

编辑添加:我尝试使用逻辑分析仪输入进行重现,但启用这些输入时我无法获得 4MSa/s 的数据速率。我也无法使用我尝试过的任何其他采集设置进行复制。

感谢您重新打开此线程。所以我可以发布我的答案。

我从 Rigol 支持部门得到的第一反应是这样的:

我认为这是 DS1000Z 系列的一个已知问题!请将固件升级到 04.04.04.03 版本,应该可以解决捕获问题。

按照此链接下载 DS1074Z 示波器的实际固件:

https://eu.rigol.com/products/oscillosopes/ds1000z.html

(需要一个简短的注册,但它会在一分钟内完成)希望我能帮助你一点!

有趣的是措辞:“我认为......”和“应该”。这已经给我的印象是这是对他们所有错误的标准答案:安装最新的固件并且它“应该”被修复。

这是在 Rigol 主页上:

Rigol 固件下载

我的范围显示:

Rigol固件版本

所以我现在有 3 个不同的版本:

Support email:  04.04.04.03
Rigol Homepage: 00.04.04.04.03
Oscilloscope:   00.04.04.SP4

如您所见:Rigol 的固件版本不统一。

我写了另一封电子邮件,询问这 3 个版本是否相同。支持者回应说他们都是一样的。

然后我写了第三封电子邮件:“所以我有最新的固件。但是严重的错误仍然存​​在。这些错误什么时候修复?”

我再也没有得到答案。一周后,我给同一个支持人员写了第四封电子邮件。他不再回答我了。

他们主页上的固件现在已经一年了。“支持”不再回答。所以很明显,Rigol 修复错误的动机为零。

请注意,这是整个 DS1000Z 系列的固件。所以有多个示波器型号受到这些错误的影响。


Rigol 固件是一个只有 1.9 MB 的 RAR 文件。我觉得这很奇怪。我期待更多。

升级说明说:

  • MSO/DS1000Z 系列数字示波器不支持降级操作。

这是另一个问题。即使有新固件可用:如果新固件有一个比现有错误更严重的新错误怎么办?在这种情况下,我没有机会回到以前的固件版本。Rigol 固件更新是一条单向之路。你永远不会知道它会把你引向何方。


Rigol 主页一团糟。如果您转到“支持”->“软件-固件下载”并输入类别:“示波器”并搜索“DS1074Z”,则根本没有结果。

如果您在产品线下选择:“DS1000Z-E”并将“关键字”留空,您将找不到与 DS1000Z 页面上相同的固件。

https://eu.rigol.com/En/Index/listView/catid/28/tp/6/cat/7/xl/40

Rigol 固件下载

看来 DS1000Z 和 DS1000Z-E 是不同的系列。发行说明说:

[Model Supported] DS1202Z-E.
[Latest Revision Date] 2019-09-20
[Updated Contents]
v00.06.01.00.00 2019-09-20
     - The first version is released.
[Previous Versions and Updated Contents]
     - none

所以这不适合我的范围。