LabView简单计数器

LabView simple counter

我在 LabView 中完成一项看似简单的任务时遇到了真正的麻烦。所以任务是,你有某种从 0 到 60 的计数器和一个按钮。如果你按下按钮,计数器应该加一,这应该一直持续到 60,然后按下一个按钮,计数器重置为 0 重新开始。

我已经有了某种解决方案,但我的问题是,它一直在快速计数。如果我按下按钮,计数器会跳 10-12 次,而不是一次一次。

我的解决方案: https://www.pic-upload.de/view-32620107/Counter.png.html

切勿在 LabVIEW 中使用局部变量。

好吧,这是夸大其词了,但它是一种高级工具,只能作为最后的手段使用。如果您发现自己在使用局部变量,那么您做事的效率和风险可能与您在数据流语言中所能做的一样低。局部变量会破坏数据流并引入数据副本和竞争条件的风险。所以让我们放弃它。

您的工具箱中似乎缺少两个工具:事件结构和移位寄存器。这是您的解决方法: (您可能需要将该帧更改为 61 而不是 60……根据您的指示,我不清楚您是指按下 60 次按钮还是显示的值“60”。我选择了按下 60 次按钮。)

顺便说一句...下图是一个VI片段。如果你有 LV 2016 或更高版本,你可以直接将 PNG 拖到你的框图上,嵌入的元数据会将它变成工作代码。

以下是 2001 年之前使用轮询而不是事件编写代码的方式。现在很少有轮询有用的情况,但一般来说,优秀的 LabVIEW 程序员会避免这种解决方案,因为它浪费了太多 CPU 带宽。

I already have some kind of solution, but my problem is, that it keeps counting way to fast. If I press the button the counter jumps up 10-12 times and not one-by-one.

您只需将 "Mechanical Action" 从此按钮(右键单击它)更改为 "Latch When Pressed" 或 "Latch when Released" 并将控件直接(无需变量)绑定到解决此快速计数问题的案例结构。

你还应该考虑srm提到的事情,我会至少在数字的增量周围放置一个序列结构(将数字的重置然后放在这个序列的另一个帧中)来定义先执行什么, 数字的增加或重置。

或者你可以像 this

那样做一个只有案例的解决方案

点击确定按钮 60 次,它会从 1 数到 60。在第 60 次点击时,它将回到 0。