LabVIEW 2009在我不想要时保留数据

时间:2012-11-21 12:06:46

标签: file vi labview

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

另外,如果有人在每次迭代后知道更好的RMS数据处理方式,那么我会很高兴看到它。

frequency analyser (fixed).vi

3 个答案:

答案 0 :(得分:4)

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

vi

还有几点说明/建议:

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

答案 1 :(得分:1)

由于您询问了有关您使用的RMS功能的建议,因此我对您的代码进行了更详细的介绍。而且我可能很讨厌,但它没有意义(逐点):

  • For loop counter

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

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

  • 以下代码完全错误:

Do not shift the frequency

您只需移动数据,而无需实际更改数据。通过递增起始频率,您可以移动FFT。因此,以55 Hz检测到的信号为no,以56 Hz为单位绘制。对您的最终用户来说,这会产生误导。

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

Reuse task

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

Continuous samples

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

Close task

答案 2 :(得分:0)

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