1.概要
シグマ光機(OptoSigma)の3軸ステージHSC-103を自動で駆動させたい気持ちが沸々と湧き起こってきました。
Pythonが第一言語の私はシリアル通信ライブラリのpyserialと組み合わせたいと思いました。
まずは説明書を読んでみましょう。
https://jp.optosigma.com/ja_jp/hsc-103.html
取り扱い説明書にコマンド集があるので参照します。
環境:
OS: Windows10
Python 3.6.8
2.コマンド一覧
色々とありますが、うまくコマンドが打てていればOK\r\n
、間違っていればNG\r\n
が返ってきます。
2-1.Qコマンド
Q:\r\n
現在の座標をパルス数で返してくれます。
1パルスは0.01μmに該当します。
2-2.Mコマンド
M:x,y,z\r\n
相対位置をパルス数で指定して駆動します。
x, y, zは各軸の移動量で、1パルスあたり0.01μm進みます。
2-3.Aコマンド
A:x,y,z\r\n
絶対位置をパルス数で指定して駆動します。
x, y, zは各軸の移動量で、1パルスあたり0.01μm進みます。
2-4.Kコマンド
K:1,2,3,x,y,z\r\n
直線補完駆動です。相対位置で指定をします。
Mコマンドと何が違うのかというと、全軸で同時に到着するということだと思います(未確認)。
x, y, zは各軸の移動量で、1パルスあたり0.01μm進みます。
2-5.Jコマンド
J:±,±,±\r\n
各軸で+
または-
または虚無を指定します。
+
なら止まれと言われるまで正方向に、-
なら止まれと言われるまで負方向にバカみたいに進み続けます。
虚無を指定すれば特に動きません。
2-6.Lコマンド
L:1,1,1\r\n
1
を指定すると止まります。0
を指定すると止まりません。
0
は省略可能です。
L:E
とすると緊急停止できます。便利ですね。
2-7.Dコマンド
D:axis,start,final,rate\r\n
速度指定のコマンドです。
軸、初速度、最大速度、最大速度に到達するまでの時間を指定します。
初速度・最大速度は、1パルスあたり0.01μmで、パルス毎秒で指定します。最大4,000,000です。
時間はms単位です。
3.シリアル通信
3-1.pyserialのインストール
pip install pyserial
3-2.ポートを開く
import serial
ser = serial.Serial('COM6', 38400)
ser.close()
COMポートはデバイスマネージャーから確認しておきましょう。
BaudRateはHSC-103なら38400です。
ser.close()
はした方が良いでしょう。
closeしないとどんな問題が起こるのかは私もよくわかっていません・・・。
3-3.コマンドの送受信
import serial
ser = serial.Serial('COM6', 38400)
command = 'Q:\r\n'
ser.write(command.encode())
msg = ser.readline()
print(msg.decode())
ser.close()
Qコマンドで座標を聞いています。
コマンドが間違っているとNG\r\n
が返ってきます。
ser.readline()
を使った方がいいです。
ser.read()
やser.read_all()
などのメソッドもありますが、返信が返ってきていないタイミングでreadしても何も読めません。
readline()
で\r\n
が返ってくるまで待つのが良いです。
ただ、通信に不具合があるような時に永遠に待ち続けるハチ公になってしまう恐れはあるので、タイムアウトの措置は必要でしょう。
4.おわりに
githubのリンクはこちら。
不備があるかもしれませんが、詳しくは取り扱い説明書をお読みください。