11-16-2023 03:05 AM
シグマ光機社製の電動ステージを
同社製のコントローラとRS232Cによるシリアル通信して制御することを試みています。
しかし以下のようなトラブルが起きています。
まず1つ目は、
添付図1のように2つのコマンドを組み合わせて操作する場合、
VIの実行ボタンを1回押すと、コマンド通りに動きます。
しかし続けてもう一度実行ボタンを押すと動きません。
そこでさらにもう一度押すと、動きます。
このように実行ボタンを連打した場合、1回おきにしか動きません。
1つのコマンドだけで行う操作の場合(図2)はこのようなことは起こらず、
実行ボタンを押す毎に動きます。
次のトラブルは
ループを使用した場合です。
図3のように1コマンドだけのものをForループで連続駆動しようとすると、
指定した繰り返し回数の半分(奇数の場合は商)の回数しか実行しません。
Whileループの場合は、正常に動いているように見えます。
停止ボタンを押した瞬間に停止します。
1つ目も2つ目も症状の原因は無関係ではないのではないかと思います。
他にもトラブルは起きているのですが、
この2つの問題を解決できれば、それらも解決するのではないかと思います。
RS232Cの設定はメーカー指定値です。
PCのUSBとコントローラのRS232CコネクタはNI社製の変換ケーブルで接続しています。
また、ここで使用しているコントローラは電動ステージと適合する製品ですが、
メーカーから借りた別の型式のコントローラ(これも同じ電動ステージに適合)で
同様のことを試したことがありますが、その時はこのようなことは起こりませんでした。
もしご助言をいただければ
大変助かります。
どうぞよろしくお願いいたします。
11-16-2023 10:03 PM
質問者です。
解決しました。
コマンド毎にVISA読み取り.viを連結すること、
ループ毎に長めの待機時間を設けることが必要でした。
11-18-2023 12:08 AM
解決済みとのことですが、少々アドバイスさせてください。
現象だけから判断せず、コントローラの癖を見つけるようにするとより良いプログラムが書けます。まずはシリアル通信の仕様を探ってください。
・コマンド送信一回ごとに必ず返答を読み込む必要があるか。たとえばコマンドが正常に処理されたらOK、エラーだったらNGなど、それによって処理を分ける必要があります。
・コマンドを矢継ぎ早に送信しても大丈夫か、たとえばコマンドによるステージ動作が完了しないうちに次のコマンドを送信した場合にどうなるか確認してください。
もしかしたら動作が完了または次のコマンドを受け付けられるようになるまで返答が保留されるかもしれません。あるいはコントローラの状態(動作中、待機中、エラー内容など)を確認するためのコマンドがあるかもしれません。
・待機時間を設けるならループ全体のウェイトではなく、WriteとReadの間、Readと次のWriteの間、などタイミングを明確に規定しましょう。
11-19-2023 07:54 PM
Watson様
アドバイスありがとうございます。
ご指摘の各項目の管理が必要でした。
機器からの返信を逐一確認してから
コマンドを送信しなくてはなりませんでした。