0

私は、子供たちがさまざまな種類の電源からのエネルギー生成を監視するための labview プログラムを作成しています。私は、彼らが過小生産している場合は警告が発生し、特定のしきい値で過剰生産している場合は別の警告が発生するという状態があります. アクティビティ全体で、各タイプの警告が発生する時間を計り、各グループが最後にスコアを取得できるようにしたいと思います。これは、最終的なプログラムがどのように動作するかをシミュレートするためのものです。現在、警告が真である時間を導出できるタイマーがありますが、警告がオフになったりオンになったりするたびに上書きされます。

したがって、基本的には、値が true と false の間を行き来したとしても、値が true であった合計時間を合計する必要があります。

ここに画像の説明を入力

4

2 に答える 2

1

「True」に費やされた合計時間を集計する 1 つの方法は、インデックス付きトンネルを使用して、While ループから警告インジケータをエクスポートすることです。インジケーターがトリガーされたときのミリ秒のカウンター値もループからエクスポートする場合、値が遷移した対応する時間で True/False 値の配列になるものを後処理できます。

後処理は、実際に費やされた合計時間を維持する for ループである可能性があります。

コードを VI スニペットとしてエクスポートすると、他のユーザーは、コードを最初から作り直す必要なく、コードを直接調べて変更することができます。この件については、NI の Web ページを参照してください: http://www.ni.com/white-paper/9330/en/

于 2013-10-24T19:36:04.633 に答える
1

別の方法で行くことをお勧めします。個人的には、シフト レジスタの値からティック カウントを減算するため、あなたが使用したコードがわかりにくいことがわかりました。これは機能する可能性がありますが、論理的な意味はありません。

代わりに、これを次のことを行うサブ VI に変更することをお勧めします。

  1. 現在のブール値、現在の合計、および最後のリセット時刻をシフト レジスタに保持します。
  2. 最初の呼び出しプリミティブとケース構造を使用して、最初の呼び出しでこれらの SR を初期化します。
  3. 値が F から T に変化した場合 (入力を SR と比較)、開始時刻を更新します。
  4. T から F に変化した場合は、現在時刻から開始時刻を引き、合計に加算します。

今は実際にこれをコーディングしていないので、そこに穴があるかもしれませんが、それは演習として残しています。また、VI を再入可能にすることをお勧めします。そうすれば、2 回目のタイマーで同じ機能を取得するために 2 回呼び出すことができます。

于 2013-10-27T07:10:24.397 に答える