12-20-2023 02:03 AM
既出のトピック「ループ毎にトリガをかける方法について」に関連した質問をさせて頂きます。
添付ファイルのように、ループごとに外部トリガに応じてデジタル出力を生成したいのですが、タイムアウト設定時間内にトリガが入らない場合にはエラーコード200560が発生し、プログラムが強制的に停止されます。
タイムアウトまでにトリガが入らない場合にはそのまま次のループまで待機し、改めてトリガ待機状態にするためにはどのような修正が必要でしょうか。アドバイスをよろしくお願い致します。
12-25-2023 04:00 AM
実機がないためすぐに試せないのですが、エラークリア関数でエラークリアしてしまえば何事もなくトリガ待機状態に戻らないでしょうか。
それが無理だとしたらタイムアウトエラーが起きたらエラー処理でタスクを再初期化する、などを組む必要があると考えています。再初期化のタイミングでトリガが入った場合取りこぼす可能性があるかもしれません。そうなると連続収録でソフトウェアトリガをかける、などに切り替えたほうが楽かもしれません。
DAQでのアナログ入力にソフトウェアトリガを使う - NI Community
取り急ぎアイデアの共有まで。
12-29-2023 02:36 AM
TAKASUさん、アドバイスありがとうございます。
添付図のようにエラークリア関数を追加したところ、エラーは出なくなりました。
しかしながら、デジタル出力がトリガ駆動されるのは最初のループのみで、2回目以降は出力が生成されません。「DAQmxタスクを開始」と「DAQmxタスクを停止」をループの中に入れるとこの問題は回避できるようなのですが、これが唯一の解決策でしょうか?
01-08-2024 06:45 AM
ステートマシンなどでエラーが起きたら再初期化することになるかと思います。ラフに作ってしまったので不完全ですが、ひとまずVIを添付しますのでご参考にしていただけると幸いです。
01-16-2024 02:02 AM
時間が空いてしまい、いまさらで申し訳ありません。
エラーをクリアしただけではうまく動かないと思います。エラーを発生させない再トリガはタスクの停止とスタートを組み合わせてできるはずです(添付VI)。
デジタル波形の出せるDAQが手元に無くテストできていないので、動かなかったらゴメン(どなたか機材をお持ちの方が修正していただけると助かります(他力本願でスマン))。