07-02-2024 08:53 PM
cDAQ9174を1個とNI9472モジュール2個使用して
各NI9174からステップモーター1個にカウンタ出力して
順番にモーターを動かしたいのですが
2個同時に動いてしまします。
改善策を教えてもらえると助かります。
モータードライバにパルス出力することで駆動させる方式です。
解決済! 解決策の投稿を見る。
07-03-2024 04:01 AM
ダイアグラムを見る限り、4000msのウェイトが要らないだけで、他は問題無いように見えます。
cDAQの手持ちが無いので確認できないのですが、DAQmxタスク完了確認VIが、タスクが完了していないのに完了したと返してくるのでしょうか?
07-03-2024 07:35 PM
コメントありがとうございます。
現象は
最初のシーケンス(モジュール3)が実行されると
モジュール4のモーターも動いてしまいます。
次のシーケンスの時もモーター2個同時に動いてしまします。
モジュール3の動作が完了した後モジュール4を動かしたいです。
調べてみたらNI9472よりNI9401が適しているような情報を得ています。
07-03-2024 09:10 PM
実機が無いため、机上で考えたデバッグ手順を書きます。的外れかもしれませんが・・・
4000msのウェイトを削除してから、2つのWhileループ中にある「DAQmxタスク完了確認」VIの「タスク完了?」出力にプローブを当てて実行し、それぞれの時刻を見てください。それはパルスの出力時間離れていますか?
ほぼ同時刻ならばタスク完了が正しく検出できておらず、モジュール3の実行完了を待たずにモジュール4が実行されていることになります。ただその場合モジュール4のほうで「リソースが使用中」というエラーになりそうです。
適切な時間離れているならば、出力モジュールへの割り当ての問題かもしれません。
cDAQのカウンタはシャーシに搭載されていて、モジュールはその入出力端子です。カウンタが両方ctr0で、出力も両方PFI0に割り当てられているので(特に2回目以降の実行で)モジュール3の実行時にモジュール4からも信号が出ているかもしれません。その場合2倍の数のパルスが出ているかもしれません。
モジュール3と4でctrやPFIの番号を違えてみたら状況は変わりませんか?
07-03-2024 09:15 PM
ご指摘ありがとうございます。
プローブでの確認とPFIの変更を試してみます。
07-08-2024 11:23 PM
モジュール3 ctr0 PFI0
モジュール4 ctr1 PFI4
異なる設定にしたら解決しました。
ご指摘ありがとうございました。