06-21-2015 01:27 AM
私は今大学の研究室でLabViewを学んでいるものです。質問があります。
初心者なので説明に不慣れなのはご了承ください
今1つのWhileループの間で表示されている数値をもう一方のWhileループの表示器にローカル変数を使って表示させようと思っています。
その2つのWhileループですがそれぞれループを繰り返すタイミングをタイマによって定めています。それぞれのタイマ値は異なっています。
その異なるタイミングを持つループで数値を読み込もうとすると表示させたい表示器には現在のループの値ではなく過去のループの値が表示されてしまいます。
現在のループの値を一方のwhileループの表示器に表示させるためにはどのようなプログラミングを組めばいいのでしょう?現在作っているVIを載せておきます。教えてくださいよろしくお願いします。
06-21-2015 04:09 AM
ご懸念の問題については、「どのタイミングでローカル変数が値を読み取るか」が重要になるかと思います。
ローカル変数は値を保持するバッファ機能を持っていないため、読み取りに行ったときの値のみを表示します。
今回は、2回目の値のみを読み取っているためこのような状態になっていると思います。
いわゆる「競合状態」というものです。
下記を参考にしてください。
ローカル変数とグローバル変数を慎重に使用する - LabVIEW 2014ヘルプ - National Instruments
どうしてもすべての値を表示させたければ、ループの実行タイミングを調整する、
キューを使うなどが考えられます。
06-21-2015 05:47 AM
返答ありがとうございました。丁寧なアドバイスでとても参考になりましたありがとうございます。
Tepig さんは書きました:
ご懸念の問題については、「どのタイミングでローカル変数が値を読み取るか」が重要になるかと思います。
ローカル変数は値を保持するバッファ機能を持っていないため、読み取りに行ったときの値のみを表示します。
今回は、2回目の値のみを読み取っているためこのような状態になっていると思います。
いわゆる「競合状態」というものです。
下記を参考にしてください。
ローカル変数とグローバル変数を慎重に使用する - LabVIEW 2014ヘルプ - National Instruments
どうしてもすべての値を表示させたければ、ループの実行タイミングを調整する、
キューを使うなどが考えられます。
06-27-2015 10:58 PM