NI製品ディスカッション

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

DAQ 測定について

解決済み
解決策を見る

質問させて頂きます。

現在、DAQボードPCI 6280を使い電圧測定システムを構成しています。フラットシーケンスストラクチャでDAQアシスタントによる電圧測定を 2つ起きたいのですが、エラー50103が出てしまいます。

電圧測定を行った後にステージ移動し、再度電圧測定を行いたいのですが、その場合はどのようにしたら良いのでしょうか?

よろしくお願いします。

0 件の賞賛
メッセージ1/5
1,173件の閲覧回数

おそらく最初のDAQタスクを終了せずにまた同じタスクを構成しようとしていると思います。DAQアシスタントの「終了」入力をTRUEにしてみてください。

 

やりたいことは電圧測定→ステージ移動→電圧測定、1回で終わりですか?

ステージ移動→電圧測定を何度も繰り返したいなら、フラットシーケンスストラクチャだけでは組めないのでループを使う必要があります。また頻繁にDAQタスクの構成と終了を繰り返すのはお勧めしません。

0 件の賞賛
メッセージ2/5
1,143件の閲覧回数

返信ありがとうございます。

「終了」をTureにして動作してみようと思います。

 

電圧測定→ステージ移動→電圧測定を

フラットシーケンスストラクチャの中にループを作成し、指定回数分繰り返す予定にしております(100回など)。

タスクの構成と終了を繰り返す際のお勧め出来ない理由と致しましては、測定時間が長くなる、通信の問題が生じてしまうなどでしょうか?

よろしくお願いします。

0 件の賞賛
メッセージ3/5
1,141件の閲覧回数
解決策
トピック作成者Shuyaが受理

目に見えて何か起こるわけではないのですが・・・

DAQタスクに限らず、リソースの確保と開放は比較的コストが高い(かかる時間が大きめ)のと頻繁に繰り返すことによるタイミングずれやメモリの虫食い状態など、システムが不安定になる傾向があります。通信のオープンとクローズにも当てはまります。

通常はリソースを確保したらそれを使って作業を行い、最後に不要になった時点で開放するように組みます。

 

DAQアシスタントは1つのインスタンスをループ中で繰り返しコールするのに向いた構造になっています。初回コール時に内部でリソースを確保するので、「終了」をFALSEのまま繰り返しコールして、ループを抜ける際に「終了」をTRUEにしてリソースを開放させるように使います。

ステージ移動後に電圧測定を行うコードをループ中に入れ、初回はステージ移動量をゼロにしてやれば、DAQアシスタントは1つで済むと思います。

0 件の賞賛
メッセージ4/5
1,137件の閲覧回数

返信ありがとうございます。

 

たしかにリスクがありそうですね。

アドバイス頂いた様に最初の移動量を0にしてプログラムを作成しようと思います。

ありがとうございました。

0 件の賞賛
メッセージ5/5
1,108件の閲覧回数