如何计算myRIO上LabVIEW中两个位置之间的循环次数

时间:2018-04-16 03:07:26

标签: labview

我是labview的新手,最近我一直试图让这个序列循环。 例如。 myRio的起始位置是((x <0.05)&amp;&amp;(y <= 0.05)&amp;&amp;(z&gt; 0.9)) 接下来,当检测到myRio的位置变为((x <0.2)&amp;(y <= -0.9)&amp;&amp;(z <= 0.3))然后再次返回到起始位置时,将把它验证为一个正确的循环并将计数器从0更改为1.并再次循环整个序列。

如果你能突出我怎样才能做这些序列循环,真的很感激。非常感谢你。

1 个答案:

答案 0 :(得分:0)

听起来好像你要做的是计算状态之间的转换。对于涉及状态之间转换的任何事物而言,一个伟大的设计模式 - 涵盖了人们通常使用LabVIEW的大部分内容 - 是state machine

链接给出了解释,但基本上你需要的是:

  • 带有移位寄存器的while循环
  • 环路内部的外壳结构,其外壳选择器连接到左移位寄存器端子
  • 每种情况下的一些逻辑,决定输出到右移位寄存器终端的值,即下一步要进入的状态。

在您的情况下,您只需两种状态即可实现此目的:

状态1:检查位置,看看我们是否已达到目标位置。

  • 如果是,请转到State 2
  • 如果没有再次进入州1

状态2:检查位置,看看我们是否已回到起始位置。

  • 如果是,请递增计数并转到State 1
  • 如果没有,请再次转到州2

然而,使用三种状态会稍微优雅一些​​:

状态2:检查位置,看看我们是否已回到起始位置。

  • 如果是,请转到State 3
  • 如果没有,请再次转到州2

状态3:递增计数并转到状态1.

您可以为计数器使用第二个移位寄存器:将其初始化为0,将左端子连接到状态1和2中的右端子(保持计数不变)并在状态3中将其递增。

您可以对案例选择器使用整数值或字符串,但最佳做法是使用枚举,并将其另存为 typedef 。这允许您稍后重新排序,重命名,添加或删除状态,而不会破坏现有代码。