1

我是 LabVIEW 新手,但一直在构建一个信号分析器代码,该代码获取所需数据并在获取数据后将其打印到文本文件中。我遇到的问题是,当它创建一个新文件时,它会保留上一次运行的数据并打印出我不想要的数据。我已附上 LabVIEW vi (ver.2009),任何对此的帮助将不胜感激。

此外,如果有人知道在每次迭代后对数据进行 RMS 处理的方法比我乱七八糟的移位寄存器更好,我会很高兴看到它。

频率分析仪(固定).vi

4

3 回答 3

4

要回答您的主要问题:每次重新运行 vi 时,构建字符串的代码部分(带有移位寄存器的 for 循环)都会存储先前的数据。您需要的是用空字符串初始化移位寄存器:

六

还有一些注意事项/建议:

  • 在这种情况下,您可以避免使用移位寄存器。将代码的 DAQ 部分分为 3 个部分:在第一个 for 循环中获取数据(存储到数组中),修改数组(然后您可以使用内置的 RMS vi),在 UI 上可视化
  • 以较小的块构建代码,使用 subVi
  • 保持代码小、漂亮和整洁(检查编码标准),添加注释——这对你以后真的有帮助
于 2012-11-21T22:28:25.340 回答
1

由于您询问了有关您使用的 RMS 功能的建议,因此我更详细地查看了您的代码。而且我可能很粗鲁,但这没有意义(逐点):

  • For循环计数器

您要求最终用户进行多次运行,然后减去一次。为什么?我猜这是因为在 for 循环之前读取了数据。(删除那个)。

  • 您使用的频率 RMS 函数支持平均,并且没有平均次数限制。指定以下配置: 使用标准平均

这将为您的输出数据添加 RMS 平均,并且您可以使用移位寄存器放弃所有自己的计算。

  • 以下代码完全是错误的:

不要改变频率

您只移动数据,而不实际更改数据。通过增加起始频率,您可以移动 FFT。因此,在 55 Hz 处检测到的信号在 56 Hz 处绘制为 no。对于您的最终用户来说,这是一种误导。

您需要在代码中注意的一件事是您没有连续采样。你的每次循环你的数据采集都会开始和停止。您可以通过绘制捕获的波形的 t0 来验证这一点。您会注意到它们不是以恒定的间隔开始的。更好的方法是使用 Express VI 在第一次迭代中创建的任务:

重用任务.

但是,您应该将采集模式更改为“连续样本”:

连续样本

不要忘记在最后一次迭代中关闭任务:

关闭任务

于 2012-11-24T19:37:54.867 回答
0

您应该使用在每次运行之前清空的数组,而不是移位寄存器。

于 2012-11-21T14:28:38.683 回答