04-16-2015 02:38 AM
>添付動画(gifファイル)はLabVIEWで制御中の周波数カウンタのパネルです。ご覧の通り、交互に測定されてることがお分かりになると思
>います。個人的には添付画像2に書いたことが起こってる気が致します。
Data\Read Measurement (Single).viを2個並列に配置されていますが、
再入実行しないサブVIの場合、同時に実行されないはずです。
Data\Read Measurement (Single).viは1回の測定が終了(又はタイムアウト)しないと戻ってこないと思います。
結果、トリガーの立ち上がりで片方の測定を行う→次のトリガの立ち上がりでもう一方の測定を行う→ファイルに保存する(=1ループ)
の繰り返しになっていると思います。
①Data\Read Measurement (Single).viを使わずに、各々Low Level\Initiate.vi→Low Level\Wait For OPC.vi→Fetch Measurement (Single).viの順で実行してみる
②次のミリ秒倍数まで待機 (関数)は意味がない(削除)かと
04-21-2015 06:07 AM
アドバイスありがとうございます。
同時に測定するようになりました!
ただ、自分はこのアドバイスに気づかずにData\Read Measurement (Single).viの中の時間に関する箇所を削除したらできました。
お聞きしたいのですがLow Level\Wait For OPC.viというのは何のためにあるのでしょうか。個人的にはなくても動作する気がするので…
04-21-2015 08:20 PM
plusnine様
>お聞きしたいのですがLow Level\Wait For OPC.viというのは何のためにあるのでしょうか。個人的にはなくても動作する気がするので…
Data\Read Measurement (Single).viでやっている処理は以下の通りです。
①測定待ち状態にする(Low Level\Initiate.vi=INITコマンド送信)
②測定が完了するまで待つ(Low Level\Wait For OPC.vi=*OPC?コマンド送信して応答を受信)
③現在の測定値を取得する。(Fetch Measurement (Single).vi:FETC?コマンド送信して応答を受信)
Low Level\Wait For OPC.viは測定が完了するまで待つためにあります。
測定待ち状態の時に*OPC?コマンドを送信すると測定が完了すると1を応答します(逆に言うと測定が完了するまで応答しない)
その後、Fetch Measurement (Single).viで測定値を取得することにより、外部信号のタイミングで測定した値を取得できるようになります。
Low Level\Wait For OPC.viが無いと、(測定が完了するまで待たず)その前に測定した値を取得してしまいます。
>ただ、自分はこのアドバイスに気づかずにData\Read Measurement (Single).viの中の時間に関する箇所を削除したらできました。
ティックカウント(ms) (関数) だけ削除しても並列で動くようになるとは考えにくいので
もしかしたら Low Level\Wait For OPC.vi含め フラットシーケンスストラクチャごと(添付ファイル赤枠部分)削除してませんか?
測定が完了するまで待つ処理は必要です。
04-21-2015 09:41 PM
plusnine様
私が勘違いしてたようなので再度レスします。
>個人的にはなくても動作する気がするので…
条件は多少異なりますが、マルチメータを使って動かしてみたら
Low Level\Wait For OPC.viが無い場合、Fetch Measurement (Single).viで測定完了するまで応答しませんでしたので
Low Level\Wait For OPC.viを実行しなくても良さそうです。
誠に申し訳ありませんでした。(ぺこり)
04-28-2015 04:50 AM
su-sann5073様
丁寧に説明していただき誠にありがとうございます。
勉強になりました。