Python向けファインモーション操作ライブラリ「pyfinemotion」のリリース
テクノの大澤です。
久しぶりの技術コラムは私からご紹介します。
この度、Pythonからファインモーションを操作できるPythonライブラリ「pyfinemotion」をリリースいたしました。
◆pyfinemotionの特徴
- Pythonから高精度のモーション制御、サーボ制御、IO制御を行うことができます。
- オプション購入が必要な一部の動作を除く全ての動作をAPIとして実装しています。
- PythonicなAPIとして設計しており学習コストがほとんどかかりません。
- 軌跡やアラームのリアルタイムモニタリングを間単に設定できます。
- コンパイル不要なため、実験や研究目的に最適です。
- 画像処理、機械学習など様々なPythonライブラリと組み合わせることで、お客様独自のアプリケーションを容易に作成できます。
◆pyfinemotionの動作環境
- 動作OS: Windows7 以降のWindos OS(32bit, 64bit対応)
- Pythonバージョン Python 3.0以降
- 依存ライブラリ: numpy、pandas
- 対応機種: SLM8000、PLMC-M3EX、RTMC64-EC/M3
◆pyfinemotion入手方法
ファインモーション購入時に付属するCDから無料で入手可能です。
既にファインモーションを購入済みの方はお問い合わせ下さい。
◆APIリファレンス
APIリファレンスとサンプルプログラムを提供しています。
よろしければご確認下さい。
◆サンプルプログラム例
from pyfinemotion import Slm8000
#操作クラスインスタンス化
pyslm = Slm8000(inifilepath="./slm8000drv.ini")
#通信開始
pyslm.init_comm()
#ステータス確認
status = pyslm.read_status()
#タスク0の状態を確認
print(status.get_taskinfo(0))
#位置決め実行
pyslm.exec_positioning(task=0, X=1000)
#直線補間実行
pyslm.exec_linear_interpolation(task=0, feed=10000, X=10000, Y=-1000)
#プログラム書込み
pyslm.write_program_from_file("./Gcode.txt", task=0, programblock=1, code="Gcode")
#プログラム選択
pyslm.select_program(task=0, program=1)
#プログラム実行
pyslm.start_program(task=0)
#オーバーライドの変更
pyslm.change_override(task=0, override=50)
#マクロ変数の書込み
pyslm.write_macrovariable(task=0, num=6500, value=2000)
#ポイントテーブルの読込
print(pyslm.read_pointtables(task=0, startnum=1, size=100))
#軸のインタロック
pyslm.set_interlock (task=0, X=True, Y=True)
#インタロックの解除
pyslm.set_interlock(0, ALL=False)
#通信終了
pyslm.quit_comm()
ご興味、ご不明点がありましたらお気軽にお問い合わせください。
MECHATROLINK、EtherCATサーボアンプ、I/O接続実績リストの公開
野崎です。
多くのお客様や協力企業様からご要望いただいておりました、接続実績リストを公開しました。
MECHATROLINK-Ⅱ、MECHATROLINK-Ⅲ、EtherCAT対応のサーボアンプやI/O類を記載しております。
弊社製品をご検討のお客様は、ご参考にしていただければと思います。
【ファインモーション機能のご紹介⑧】回転速度指令(SPIN命令)
野崎です。
ファインモーションの特徴的な機能シリーズの第8回目は「回転速度指令(SPIN命令)」についてご紹介します。
■回転速度指令(SPIN命令)の役わり
ツール/ワーク/砥石などを主軸として目的の速度で回転させる軸があります。
主軸の回転速度を指令・制御するのが回転速度指令(SPIN命令)です。
また、位置制御を行う事で割り出しやC軸制御などの補間動作も可能です。
■回転速度指令(SPIN命令)とは
通常のサーボ軸を主軸のように使えます。もちろん位置制御も可能です。
回転速度指令(SPIN命令)は加減速付きの速度制御(回転数指令)です。
回転動作の開始/停止時にはPTP時定数による直線加減速を行います。
また、他の軸とは独立して制御します。
そのため、回転速度指令(SPIN命令)は、回転動作の開始/停止指令時は指令回転数への到達を待たずに、次ステップの運転プログラムが実行されます。
※加速完了や停止完了の待ちが必要な場合はタイマー命令で調整してください。
また、同一軸に対して移動命令(位置決めや補間)と回転速度指令(SPIN命令)を同時に使用することはできません。
■回転速度指令(SPIN命令)の命令形式
SPIN/G120 軸名 回転数 (OVR1)
定速回転を0.1rpm単位で指令します。無限回転軸に対して有効です。
命令コード"SPIN"/"G120"の後に軸名と回転速度を指定します。
"OVR1"をつけることで回転動作にオーバーライドが有効となります。
例
【テクノコード】
SPIN Z1000; 100rpmでの定速回転(オーバーライド無効)
SPIN Z1000 OVR1; 100rpmでの定速回転(オーバーライド有効)
SPIN Z0; 回転停止
【Gコード】
G120 Z1000;
■ファインモーション機能にご興味のある方
マニュアルダウンロードページの各種製品「機能編:TB00-XXXXE」や「運転プログラム:TB00-XXXXF」をご確認ください。
※マニュアルダウンロードページへは会員登録が必要です。
ご質問などはお問合せもしくはお電話ください。
【ファインモーション機能のご紹介⑦】形状補正(高精度輪郭制御)
野崎です。
ファインモーションの特徴的な機能シリーズの第7回目は「形状補正(高精度輪郭制御)」についてご紹介します。
■形状補正(高精度輪郭制御)の役わり
各軸の応答性(サーボ系)には、必ず遅れ要素があります。
そのため、多軸補間の軌跡は指令通りとはならず、内回りしてしまいます。
円弧の縮小については過去の記事に載せています。
形状補正(高精度輪郭制御)は内回りとなってしまう実軌跡を指令軌跡に近づけさせる補正機能です。
■形状補正(高精度輪郭制御)の仕組み
各軸の指令にその軸の遅れ要素をキャンセルするように"進み要素"を加えます。
ただし、単純に進み要素を加えるとオーバーシュートなどの副作用も発生する可能性があります。
そのため、「補間前加減速」機能を実行しながら、形状補正を行うのがベストです。
■形状補正(高精度輪郭制御)のメリット
軌跡の内回りを軽減し、軌跡形状の精度を向上させます。
円弧の場合は真円度が向上します。
※補間前加減速によって、軌跡の曲率が大きい部分では減速するため、移動時間が延びます。
■形状補正(高精度輪郭制御)の応用例
▼カッティングマシン
▼マーキングマシン
▼刺繍機や工業用マシン
▼小径穴あけ機
など
■ファインモーション機能にご興味のある方
マニュアルダウンロードページの各種製品「機能編:TB00-XXXXE」や「運転プログラム:TB00-XXXXF」をご確認ください。
※マニュアルダウンロードページへは会員登録が必要です。
ご質問などはお問合せもしくはお電話ください。
【ファインモーション機能のご紹介⑥】同一指令2軸(平行軸/ガントリ制御)※マスタ/スレーブ方式との比較
野崎です。
「同一指令2軸」機能をご紹介してきましたが、今回で3記事目になりました。
「同一指令2軸」機能は平行軸を制御する際の機能ですが、今回はマスタ/スレーブ方式との比較をご紹介します。
■マスタ/スレーブ方式
平行軸の1つのサーボをマスタ軸とし、もう1つをスレーブとする方式です。
マスタ側サーボのトルクモニタ信号をスレーブ側サーボのトルク指令に入力します。
モーションコントローラからはマスタ軸のみ認識しており、平行軸制御の認識はありません。
一見、便利のように思われますが、以下のような問題点があります。
■マスタ/スレーブ方式の問題点
①追従誤差
スレーブ側はマスタに追従して動作することになります。
つまり、マスタ側サーボからスレーブ側サーボへ指令を送るための時間が必要となります。
この時間=遅れになります。
仮に速度ループの制御周期を100μsecと仮定すると、その数倍の2~300μsecの遅れが考えられます。
正確な同期が行えないことがご理解いただけると思います。
②使い勝手の不備
モーションコントローラはマスタ軸のみ認識しているため、
例えばスレーブ側でアラームが発生した際に認識することができません。
つまり異常時の対応ができないといえます。
また、機構の組立途中での試運転や平行軸の精度補正の調整などでは
各軸を独立的に動作させたい場合がありますが、マスタ/スレーブ方式ではその対応ができません。
柔軟な対応ができないといえます。
③上下軸には使用困難
上下軸では静止摩擦や重力加重の関係で、マスタ側、スレーブ側の各モータの発生トルク値が不安定となります。
このような場合、マスタ側から指令するトルク値がスレーブ側にとって最適な値とならないことが考えられます。
そのため、上下軸では使えない可能性が高まります。
以上のようなことからマスタ/スレーブ方式よりも弊社の同一指令2軸による平行軸制御が良いと言えます。
■ファインモーション機能にご興味のある方
マニュアルダウンロードページの各種製品「機能編:TB00-XXXXE」や「運転プログラム:TB00-XXXXF」をご確認ください。
※マニュアルダウンロードページへは会員登録が必要です。
ご質問などはお問合せもしくはお電話ください。