如何在高速率收集多通道数据时定期更新Labview图表

时间:2008-12-06 04:16:25

标签: labview daq-mx

寻找Labview数据收集计划的一些帮助。如果我可以在每个通道以8kHz(给出16个数据点)收集2ms的数据(我使用National Instruments数据采集板在4个模拟通道上收集数据)。 DAQ-MX采集任务提供4个波形的一维阵列。

如果我不显示数据我可以做的所有计算时间大约是2ms,如果处理循环落后于收集循环,则可以。在Labview的前面板中更新图表会引入不可接受的延迟。我们不需要非常快速地更新显示器,可能在5-10Hz就足够了。但我不知道如何设置它。

我目前的Labview VI有三个并行循环

  1. 数据收集的定时循环
  2. 用于分析和处理的循环
  3. 用于将数据缓存为磁盘的低优先级循环作为TDMS文件
  4. 使用队列将数据从集合循环传递到其他循环。 Labview示例给了我一些想法,但我被卡住了。

    任何建议,参考和想法都将不胜感激。

    由于

    阿齐姆

    跟进问题

    eaolson建议我重新对数据进行采样以用于显示目的。来自DAQ-MX读数的数据是一维波形阵列。所以我需要以某种方式构建或连接每个通道的波形数据。然后在更新前面板图表之前重新采样数据。我想最好的方法是对数据进行排队,并在显示循环中使堆栈构建出列,并根据屏幕分辨率重新采样数据,然后更新图表。会不会有任何其他方法。我会看 (NI Labview论坛)[http://forums.ni.com/ni/board?board.id=170]了解eaolson提供的更多信息。

    更新

    1. 将图表的可接受更新率更改为5-10Hz(感谢Underflow和eaolson)
    2. 磁盘缓存循环是低优先级的(感谢eaolson)
    3. 感谢所有回复。

2 个答案:

答案 0 :(得分:5)

您的整体架构描述听起来很稳固,但是......对于任何非平凡的图表来说,达到30Hz都是具有挑战性的。在尝试实现之前,请确保确实需要该费率。优化到该级别可能需要一些时间。

有用的参考资料:

你可以defer panel updates。这使得前面板不会刷新,直到您准备好它为止,允许您在后台缓冲数据,并且只是偶尔绘制它。

您应该了解(a)synchronous display。此选项允许对显示速率进行一些控制。

有一些general advice可用于加速执行。

在LAVA论坛上有一个(有点过时)report执行速度。如果你需要优化速度,那么在LAVA论坛上搜索是一个好主意。

答案 1 :(得分:2)

电视更新频率约为30赫兹。任何比这更快的速度比人眼可以看到的更快。 30 Hz应该是您应该考虑的最大更新速率,而不是起点。考虑更新速率为5-10 Hz。

LabVIEW charts将最新数据附加到它们存储的历史数据中,并一次显示所有数据。在8 kHz时,您每秒每通道至少获取8000个数据点。这意味着支持该图表的阵列必须不断调整大小以保存新数据。此外,即使您的图表是1000像素,这意味着您每个屏幕像素显示8个数据点。通常没有理由每个像素显示任何多个数据点。如果您确实需要快速更新速率,请绘制更少的数据。创建一个数组来保存历史数据并仅绘制每个第N个数据点,其中选择了N,因此您只绘制了几百个点。

请记住,您的循环可以以不同的速率运行。以低于数据收集速率的频率运行写入磁盘循环可能是令人满意的,可能每隔几秒钟。

如果可以,请避免使用property nodes。它们在UI线程中运行,这比大多数其他执行速度慢。

除此之外,如果没有看到代码或更多细节,很难提供大量实质性建议。考虑在NI LabVIEW forums询问您的问题。那里有很多乐于助人的人。