NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

2つの周波数カウンタの同時制御

 

>添付動画(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の順で実行してみる

 

②次のミリ秒倍数まで待機 (関数)は意味がない(削除)かと

 

0 件の賞賛
メッセージ11/15
2,326件の閲覧回数

アドバイスありがとうございます。

同時に測定するようになりました!

 

ただ、自分はこのアドバイスに気づかずにData\Read Measurement (Single).viの中の時間に関する箇所を削除したらできました。

お聞きしたいのですがLow Level\Wait For OPC.viというのは何のためにあるのでしょうか。個人的にはなくても動作する気がするので…

 

0 件の賞賛
メッセージ12/15
2,280件の閲覧回数

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含め フラットシーケンスストラクチャごと(添付ファイル赤枠部分)削除してませんか?

測定が完了するまで待つ処理は必要です。

0 件の賞賛
メッセージ13/15
2,266件の閲覧回数

plusnine様

 

私が勘違いしてたようなので再度レスします。

 

>個人的にはなくても動作する気がするので…

 

条件は多少異なりますが、マルチメータを使って動かしてみたら
Low Level\Wait For OPC.viが無い場合、Fetch Measurement (Single).viで測定完了するまで応答しませんでしたので
Low Level\Wait For OPC.viを実行しなくても良さそうです。

 

誠に申し訳ありませんでした。(ぺこり)

 

0 件の賞賛
メッセージ14/15
2,250件の閲覧回数

su-sann5073様

 

丁寧に説明していただき誠にありがとうございます。

勉強になりました。

0 件の賞賛
メッセージ15/15
2,208件の閲覧回数