06-14-2023 08:42 PM
DAQmxを使用して
スライダー(オリエンタルモーターAZDのドライバーにパルス入力する)に
ロードセル(アナログ電圧をモジュールから入力)付けて
アナログ電圧を常時監視しながらスライダーの動作制御をしたいと考えています。
viの構成をご教授いただけると助かります。
自動昇降の圧力測定機を自作しようとしています。
使用機器
シャーシ:cDAQ9174
モジュール:9402,9222,9472
構築したい内容
1.電圧入力をエッジトリガで開始し入力待機させる
2.スライダーに動作指令のパルス出力する(有限)
3.電圧入力開始(有限) main.viに電圧をリアルタイム表示させたい
4.電圧が指定値を超えたらスライダー停止させる(ドライバーのスイッチ切替)
リアルタイム表示はできないが、緊急停止ボタンをmain.viに作成しスライダーを停止させるところまでは
なんとか構築できています。知識が浅い分ブロックダイアグラムはぐちゃぐちゃになっていますが。
参考になる情報が得られればと思い投稿しました。
情報をお持ちの方よろしくお願いしいます。
解決済! 解決策の投稿を見る。
06-16-2023 04:57 AM
制御ループをリアルタイムにやりたい場合、「トリガ」収録や「有限」入出力は使わないと思うので、とりあえずVIを見せてもらえませんか?
06-16-2023 05:32 AM
ご返信ありがとうございます。vi添付します。
このviをmain.viに組み込んでます。
06-16-2023 09:00 PM
やりたいことはだいたいわかりました。やはりVIを見るのが手っ取り早いです;-)
「60パルス出して圧力を取得」するのですね。トリガ収録も納得です。ただサブVIとして繰り返し呼び出すには構造が適切ではありません。
とりあえず圧力が目標レベルになるまでパルスを出し続けるように修正してみたので、添付VIを単体で実行して希望の動作になるかどうか見てください。OKならサブVI化を検討します。
緑色の枠で囲った箇所が主な修正点です。考え方は以下の通り。
1) 制御ループのレートは20Hz。20Hzはアナログ入力のサンプリングレートと一回毎のサンプル数で規定。
2) モータ駆動パルスは連続で出力。
3) パルス出力開始をトリガにしてアナログ入力を開始。
4) 圧力を読み取って目標圧力レベルと比較し、到達していたら終了する。
06-18-2023 11:12 PM
viの送付ありがとうございます。動作確認できました。とても参考になっております。
修正したいところがあります。
パルス出力とアナログ入力を有限にしたいです。
動作中だけアナログ入力できる構成でも良いです。
目標値で動作を止めるのは圧力の過負荷時です。
決まった動作を繰り返します。
説明が足りなくてすみません。
試しにアナログ収録のサンプル数を1データ毎にしてみたのですが
グラフへの表示に遅延が出ているようにみえました。
最適なサンプル数とかあるのでしょうか。
修正したvi添付します。
06-21-2023 02:33 AM
1ポイントずつ読み取るループが200Hzで回らないため、データを遅れて読み取ることになり遅延しているように見えると思います。ただしデータはバッファに入っている(トリガから2秒間の)データなので値は合っているはずです。10~20ポイントずつ読み込めば遅延なく読めると思います。
「決まった動作」とは「パルスを指定した個数出力」で、繰り返し条件判断のために「圧力値」をパルス出力中もmain.viで把握していたい、ということで合っていますか?
アナログ入力の開始トリガは、パルス出力開始と同期するためですか(スライダ位置に対する圧力の変化データが必要)?
06-21-2023 03:18 AM
ご返信ありがとうございます。助かります。
動作は圧縮や引っ張り試験機が近いイメージなのですが
「決まった動作」とは「パルスを指定した個数出力」です。
繰り返し条件判断のために「圧力値」を把握していたいわけではなく
動作中の変化をモニタリングしていたいだけです。
アナログ入力の開始トリガは、パルス出力開始と同期するためです。
スライダ位置に対する圧力の変化データがざっくりと必要です。
エンコーダー情報を拾って正確に結び付けるまでは必要としていません。
06-21-2023 10:12 AM
おっしゃる内容であれば最初のVIである程度できていたと思います。とりあえずサブVI化してみましたので、添付のVI(2個)を同じ場所に置いてmain_3.viを実行してください。完了するとファイルパスを聞いてくるので適当な名前を付けてください。
繰り返し呼び出される度にチャンネル作成をし直さずに済むよう、作成とクリアのスイッチを付けました。テスト用なので細かい使い勝手まで考慮していません。
アナログ入力の「サンプル数÷サンプルレート」とパルス出力の「パルス数÷周波数」は一致させてください。
これらはそれぞれのタスクが完了するための時間であり、サブVI一回当たりの実行時間になります。添付VIは3秒になっています。
3秒間のアナログ波形を逐次mainに表示するために、波形チャートのリファレンスを用いています。毎秒の更新回数は「グラフ更新レート」によって決まります。(コネクタに割り当てていないのでmainから変えたい場合は適当なクラスタ制御器に含ませてください)。
06-22-2023 08:37 PM
アナログ入力とパルス出力の時間を完全に合わせなくても良いようにループを分けました。
そしたら最初のVIとほぼ同じになったので、少々遠回りをしてしまったようです。
06-22-2023 08:41 PM
ありがとうございます。
動作確認しておりますのでまた結果を報告させていただきます。
細かいところとても参考になっております。