NI製品ディスカッション

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

ループ毎にトリガをかける方法について-2

既出のトピック「ループ毎にトリガをかける方法について」に関連した質問をさせて頂きます。

 

添付ファイルのように、ループごとに外部トリガに応じてデジタル出力を生成したいのですが、タイムアウト設定時間内にトリガが入らない場合にはエラーコード200560が発生し、プログラムが強制的に停止されます。

 

タイムアウトまでにトリガが入らない場合にはそのまま次のループまで待機し、改めてトリガ待機状態にするためにはどのような修正が必要でしょうか。アドバイスをよろしくお願い致します。

 

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

実機がないためすぐに試せないのですが、エラークリア関数でエラークリアしてしまえば何事もなくトリガ待機状態に戻らないでしょうか。

 

それが無理だとしたらタイムアウトエラーが起きたらエラー処理でタスクを再初期化する、などを組む必要があると考えています。再初期化のタイミングでトリガが入った場合取りこぼす可能性があるかもしれません。そうなると連続収録でソフトウェアトリガをかける、などに切り替えたほうが楽かもしれません。

 

DAQでのアナログ入力にソフトウェアトリガを使う - NI Community

https://forums.ni.com/t5/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A8%E3...

 

取り急ぎアイデアの共有まで。

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

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

添付図のようにエラークリア関数を追加したところ、エラーは出なくなりました。

 

しかしながら、デジタル出力がトリガ駆動されるのは最初のループのみで、2回目以降は出力が生成されません。「DAQmxタスクを開始」と「DAQmxタスクを停止」をループの中に入れるとこの問題は回避できるようなのですが、これが唯一の解決策でしょうか?

 

 

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

ステートマシンなどでエラーが起きたら再初期化することになるかと思います。ラフに作ってしまったので不完全ですが、ひとまずVIを添付しますのでご参考にしていただけると幸いです。

すべてをダウンロード
0 件の賞賛
メッセージ4/5
955件の閲覧回数

時間が空いてしまい、いまさらで申し訳ありません。
エラーをクリアしただけではうまく動かないと思います。エラーを発生させない再トリガはタスクの停止とスタートを組み合わせてできるはずです(添付VI)。

 

デジタル波形の出せるDAQが手元に無くテストできていないので、動かなかったらゴメン(どなたか機材をお持ちの方が修正していただけると助かります(他力本願でスマン))。

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