1

寻求有关 Labview 数据收集程序的帮助。如果我可以在每个通道以 8kHz(提供 16 个数据点)收集 2ms 的数据(我正在使用 National Instruments 数据采集板在 4 个模拟通道上收集数据)。DAQ-MX 采集任务提供 4 个波形的一维数组。

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

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

  1. 用于数据收集的定时循环
  2. 用于分析和处理的循环
  3. 用于将数据作为 TDMS 文件缓存到磁盘的低优先级循环

使用队列将数据从收集循环传递到其他循环。Labview 的例子给了我一些想法,但我被卡住了。

任何建议、参考、想法将不胜感激。

谢谢

阿齐姆

跟进问题

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

更新

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

2 回答 2

5

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

应该有帮助的参考资料:

您可以推迟面板更新。这可以防止前面板刷新,直到您准备好这样做,允许您在后台缓冲数据,并且只偶尔绘制它。

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

有一些关于加快执行速度的一般建议。

LAVA 论坛上有一份(有些过时的)关于执行速度的报告。如果您需要优化速度,在 LAVA 论坛上进行谷歌搜索是一个好主意。

于 2008-12-06T05:25:41.453 回答
2

电视以大约 30 Hz 的频率更新。任何超过这个速度的速度都超过了人眼所能看到的速度。30 Hz 应该是您应该为显示器考虑的最大更新速率,而不是起点。考虑 5-10 Hz 的更新率。

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

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

如果可以,请避免使用属性节点。它们在 UI 线程中运行,这比大多数其他执行要慢。

除此之外,如果没有看到代码或更多细节,很难提供很多实质性的建议。还可以考虑在NI LabVIEW 论坛上提问。那里有很多乐于助人的人。

于 2008-12-06T16:17:35.863 回答