2013-10-24 20 views
0

我一直在为孩子们制作一个labview程序,用于从各种类型的电源中监测能源。我有一个条件,如果他们生产不足警告将触发,并且如果他们超过了certian门槛,另一个警告将会触发。 我想花时间在整个活动中多久,每种类型的警告都会被解雇,因此每个小组在最后都会有一个分数。这只是为了模拟最终的程序将如何表现。 目前我有一个计时器可以消除警告的真实时间量,但每次警告消失后又会重新覆盖自己。在Labview中的值为真的时机

所以基本上我需要总结一下这个值是否真实的总时间,即使它在真假之间闪过。

制表的总时间的

enter image description here

回答

1

一种方法花费“真”将使用索引隧道出口从while循环的警告指示器。如果您还从循环中导出触发指标时的毫秒计数器值,则可以过程处理真值/假值阵列以及相应的转换时间。

后处理可能是一个for循环,保持运行时间总计为真。

P.s.如果将代码导出为VI片段,其他人将能够直接检查和修改代码,而无需从头开始重新编写代码。关于这个主题的NI网页: http://www.ni.com/white-paper/9330/en/

1

我会建议去另一种方式。就我个人而言,我发现您使用的代码令人困惑,因为您从移位寄存器中的值中减去了滴答计数,这可能起作用,但没有任何逻辑意义。

相反,我建议把这个变成一个子VI,其执行以下操作:

  1. 保留当前布尔值,在移位寄存器的运行总量和最后复位时间。
  2. 使用第一个调用原语和一个case结构在第一次调用时初始化这些SR。
  3. 如果值从F更改为T(将输入与SR进行比较),请更新开始时间。
  4. 如果它从T变到F,从当前时间减去开始时间并将其加到总和中。

我现在实际上没有编码,所以可能会有漏洞,但我将其作为练习。另外,我会建议让VI可重入。这样,您可以简单地再次调用它以获得第二个计时器的相同功能。