InkscapeのExtensionである「Laser Tool Plug-in」は、レーザー加工するときには便利なのですが毎回最後のGコードでエラーがでます。工程の最後にエラーがでるようなので、作業自体には問題ないのですが、作業終了後毎回ロックがかかってしまいます。
「Laser Tool Plug-in」で簡単なGコード(画像上:20mmの円を描くGコード)を生成すると、以下のような感じ。
M05 S0
G90
G21
G1 F600
G1 X27.6603 Y17.0556
G4 P0
M03 S500
G4 P0
G1 F400.000000
G2 X24.7314 Y9.9845 I-10. J0.
G2 X17.6603 Y7.0556 I-7.0711 J7.0711
G2 X10.5892 Y9.9845 I-0. J10.
G2 X7.6603 Y17.0556 I7.0711 J7.0711
G2 X10.5892 Y24.1266 I10. J-0.
G2 X17.6603 Y27.0556 I7.0711 J-7.0711
G2 X24.7314 Y24.1266 I-0. J-10.
G2 X27.6603 Y17.0556 I-7.0711 J-7.0711
G1 X27.6603 Y17.0556
G4 P0
M05 S0
G1 F600
G1 X0 Y0
M18
この最後のM18がたぶんエラーの原因になっているのだと思います。
M18を調べてみると、RepRapのGコードでは、「全てのモーター停止」となっているので、このことなのかもしれません。しかしgrblでは、M18は対応してないようなのでエラーがでるのだと思います。
「プログラム終了」というMコードであれば、M30が一般的のようです。grblでもM0、M2、M30がポーズと終了になっています(このページのNice featuresの欄に書いてあります)。しかしRepRapだとM30は「SDカード上のファイルを削除する」のようです。
おそらくLaser Tool Plug-inはRepRapよりの設定なのかもしれません。
ということで、M18をM30に書き換えてから実行してみたらエラーはでませんでした。
生成されたGコードファイルをTextEditで開いて訂正してもいいし、bCNCなら以下のようにEditorで編集してもいいと思います。
それなら、Laser Tool Plug-inのファイルを開いてプログラムを書き換えればいいのかもしれないと思ってApplication/Inkscape.app/Contents/Resources/share/inkscape/extensions/laser.pyをTextEdit(行数が表示されないのでSublime Text)で開いてみました(Inkscape.appを右クリックでパッケージの内容を表示、もしくはcontrol+クリックでパッケージの内容を表示でContentsフォルダ内を見ることができます)。
そうすると、
laser.pyの91行目にM18がありますね。どうやらfooterとして挿入しているようです。おそらくこのM18をM30に書き換えればgrblでもエラーがでなくなるのではないでしょうか。
さっそくM18を上画像のようにM30に書き換えました。これでlaser.pyを保存し直して、Inkscapeで試してみます。Inkscapeを開いてLaser Tool Plug-inで簡単なGコードを生成してみます。以下。
M05 S0
G90
G21
G1 F600
G1 X58.0571 Y43.5429
G4 P0
M03 S500
G4 P0
G1 F400.000000
G2 X52.6251 Y30.4288 I-18.546 J0.
G2 X39.5111 Y24.9968 I-13.114 J13.114
G2 X26.3971 Y30.4288 I-0. J18.546
G2 X20.9651 Y43.5429 I13.114 J13.114
G2 X22.3768 Y50.6401 I18.546 J0.
G2 X26.3971 Y56.6569 I17.1343 J-7.0973
G2 X32.4139 Y60.6772 I13.114 J-13.114
G2 X39.5111 Y62.0889 I7.0973 J-17.1343
G2 X46.6084 Y60.6772 I0. J-18.546
G2 X52.6251 Y56.6569 I-7.0973 J-17.1343
G2 X56.6454 Y50.6401 I-13.114 J-13.114
G2 X58.0571 Y43.5429 I-17.1343 J-7.0973
G1 X58.0571 Y43.5429
G4 P0
M05 S0
G1 F600
G1 X0 Y0
M30
最後がM30になってますね。これでgrblを使っている場合はエラーがでないはずです。これでひとつ問題解決しました。よかった。
それから前にも書きましたが、Laser Tool Plug-inの上から5個目のLaser Power S#は0-256 or 0-10000となっていますが、grblだとデフォルトが0-1000なので、ここも違います。数値入力するので、ここはプログラム自体を書き換える必要はないかと思いますが。
grbl0.9のconfig.hの254行目を見ると、
#define SPINDLE_MAX_RPM 1000.0 // Max spindle RPM. This value is equal to 100% duty cycle on the PWM.
#define SPINDLE_MIN_RPM 0.0 // Min spindle RPM. This value is equal to (1/256) duty cycle on the PWM.
となっているので、スピンドル最高1000(100%)、最低0がデフォルトのようです。
grblの今後の開発予定(Development Path and Future Needs)では、リアルタイムに調整可能なフィードレート、クーラントやスピンドルのオーバーライドなどが挙げられているので、bCNC上にあるオーバーライド機能はまだ使えないということなのかもしれません。
追記:Grbl1.1からはオーバーライド機能に対応しました(こちらのページ中程)。
「Laser Tool Plug-in」で簡単なGコード(画像上:20mmの円を描くGコード)を生成すると、以下のような感じ。
M05 S0
G90
G21
G1 F600
G1 X27.6603 Y17.0556
G4 P0
M03 S500
G4 P0
G1 F400.000000
G2 X24.7314 Y9.9845 I-10. J0.
G2 X17.6603 Y7.0556 I-7.0711 J7.0711
G2 X10.5892 Y9.9845 I-0. J10.
G2 X7.6603 Y17.0556 I7.0711 J7.0711
G2 X10.5892 Y24.1266 I10. J-0.
G2 X17.6603 Y27.0556 I7.0711 J-7.0711
G2 X24.7314 Y24.1266 I-0. J-10.
G2 X27.6603 Y17.0556 I-7.0711 J-7.0711
G1 X27.6603 Y17.0556
G4 P0
M05 S0
G1 F600
G1 X0 Y0
M18
この最後のM18がたぶんエラーの原因になっているのだと思います。
M18を調べてみると、RepRapのGコードでは、「全てのモーター停止」となっているので、このことなのかもしれません。しかしgrblでは、M18は対応してないようなのでエラーがでるのだと思います。
「プログラム終了」というMコードであれば、M30が一般的のようです。grblでもM0、M2、M30がポーズと終了になっています(このページのNice featuresの欄に書いてあります)。しかしRepRapだとM30は「SDカード上のファイルを削除する」のようです。
おそらくLaser Tool Plug-inはRepRapよりの設定なのかもしれません。
ということで、M18をM30に書き換えてから実行してみたらエラーはでませんでした。
生成されたGコードファイルをTextEditで開いて訂正してもいいし、bCNCなら以下のようにEditorで編集してもいいと思います。
それなら、Laser Tool Plug-inのファイルを開いてプログラムを書き換えればいいのかもしれないと思ってApplication/Inkscape.app/Contents/Resources/share/inkscape/extensions/laser.pyをTextEdit(行数が表示されないのでSublime Text)で開いてみました(Inkscape.appを右クリックでパッケージの内容を表示、もしくはcontrol+クリックでパッケージの内容を表示でContentsフォルダ内を見ることができます)。
そうすると、
laser.pyの91行目にM18がありますね。どうやらfooterとして挿入しているようです。おそらくこのM18をM30に書き換えればgrblでもエラーがでなくなるのではないでしょうか。
さっそくM18を上画像のようにM30に書き換えました。これでlaser.pyを保存し直して、Inkscapeで試してみます。Inkscapeを開いてLaser Tool Plug-inで簡単なGコードを生成してみます。以下。
M05 S0
G90
G21
G1 F600
G1 X58.0571 Y43.5429
G4 P0
M03 S500
G4 P0
G1 F400.000000
G2 X52.6251 Y30.4288 I-18.546 J0.
G2 X39.5111 Y24.9968 I-13.114 J13.114
G2 X26.3971 Y30.4288 I-0. J18.546
G2 X20.9651 Y43.5429 I13.114 J13.114
G2 X22.3768 Y50.6401 I18.546 J0.
G2 X26.3971 Y56.6569 I17.1343 J-7.0973
G2 X32.4139 Y60.6772 I13.114 J-13.114
G2 X39.5111 Y62.0889 I7.0973 J-17.1343
G2 X46.6084 Y60.6772 I0. J-18.546
G2 X52.6251 Y56.6569 I-7.0973 J-17.1343
G2 X56.6454 Y50.6401 I-13.114 J-13.114
G2 X58.0571 Y43.5429 I-17.1343 J-7.0973
G1 X58.0571 Y43.5429
G4 P0
M05 S0
G1 F600
G1 X0 Y0
M30
最後がM30になってますね。これでgrblを使っている場合はエラーがでないはずです。これでひとつ問題解決しました。よかった。
それから前にも書きましたが、Laser Tool Plug-inの上から5個目のLaser Power S#は0-256 or 0-10000となっていますが、grblだとデフォルトが0-1000なので、ここも違います。数値入力するので、ここはプログラム自体を書き換える必要はないかと思いますが。
#define SPINDLE_MAX_RPM 1000.0 // Max spindle RPM. This value is equal to 100% duty cycle on the PWM.
#define SPINDLE_MIN_RPM 0.0 // Min spindle RPM. This value is equal to (1/256) duty cycle on the PWM.
となっているので、スピンドル最高1000(100%)、最低0がデフォルトのようです。
grblの今後の開発予定(Development Path and Future Needs)では、リアルタイムに調整可能なフィードレート、クーラントやスピンドルのオーバーライドなどが挙げられているので、bCNC上にあるオーバーライド機能はまだ使えないということなのかもしれません。
追記:Grbl1.1からはオーバーライド機能に対応しました(こちらのページ中程)。
これはbCNCのControl画面ですが、画像の下のほうにFeed OverrideとSpindleのスライダーがあり、ここでリアルタイムに調整可能にはなっていますが、grblではまだということだと思います。
フィードやスピンドル(PWM)の値は、あらかじめ何回か素材に合わせてテストしてから実行しているので、それほど使うわけでもないのですが、たしかにあったほうが可変的に実験もできるので便利です。
まあオープンソースなので、この辺りは各自でやっていくしかないでしょう。