CNCjsのマクロ機能

CNCjsでのマクロの作り方・使い方

CNCjsではマクロ機能を使用することでルーチンとなっている動作を自動化できます。

例えば、

  • プローブ動作
  • 工具交換時の工具避難動作

など、毎回手動で同じことをやってるんだよな・・・という一連の流れを記述し自動化します。

マクロ追加方法

CNCjs座標表示の下の方に下図のようなマクロタブがあります。
+ボタンを押すと新規のマクロを追加できます。
image

マクロ名には適当な名前をつけて、マクロコマンドに実行したいコマンドを記入していきます。
ここではGコードやgrblコマンド及び変数を使うことができます。(詳細は後述します)

マクロ実行方法

作成したマクロの再生ボタンを押すと実行することが可能です。
image

参考

CNCjs公式のマクロ集(プローブや工具交換等の工具に関係するマクロです)

CNCjs公式のマクロの簡単な説明


ぜひ自分で作ったマクロを紹介してください。

CNCjsマクロで使えるコマンド

  • Gコード(G0、G1・・・)
  • 制御基板専用のコマンド(grblコマンド $H、$X・・・)
  • 変数
  • コメント
  • 一部JavaScript(算術演算子、Math等)

変数

CNCjsでは自分で定義する変数と予め定義されているシステム変数があります。
自分で定義する変数は%〇〇〇〇と%をつけて表記します

%SAFE_HEIGHT = -10 ;SAFE_HEIGHTを-10として定義

自分で定義した変数を呼び出すときは[]で囲みます。

G53 G0 Z[SAFE_HEIGHT] ;機械座標系 Z座標 SAFE_HEIGHT まで移動

実際にマクロを実行するときには下記のように置き換えられます。

G53 G0 Z-10

システム変数

制御基板の処理が完了するまで待つ(特殊なコマンド)

%wait

このコマンドを入れるとこの前までに行ったコマンドを実行し終えるまで待機します。

バウンディングボックス(実行予定のNCファイル加工範囲の最大・最小座標値)

xmin , xmax , ymin , ymax , zmin , zmax

現在の機械座標

mposx , mposy , mposz , mposa , mposb , mposc

現在のワーク座標

posx , posy , posz , posa , posb , posc

モーダルグループ(現在有効となっているGコード)

modal.motion , modal.wcs , modal.plane , modal.units , modal.distance , modal.feedrate , modal.program , modal.spindle , modal.coolant
これは前にスピンドルオン(M3)が呼ばれていれば、modal.spindleにはM3が格納されており、M3が呼ばれていなければスピンドルオフのM5が格納されている。

一部JavaScript

%が書かれている行や、[]のカッコの中はJavaScriptの構文で記述できます。
例えば以下のように使えます

%work_z_dimension = (10 + 20) * 2
%cutting_depth = work_z_dimension / 5
%cutting_feedrate = 300

G1 Z[-1 * cutting_depth] F[cutting_feedrate]

またMath.abs()等の組み込み関数も使うことができます。
この辺の関数が使えることは公式の説明には載っていないのでどこまで使えるかは不明です。

マクロの紹介

加工範囲の確認

読み込んでいるNCファイルの加工範囲(X、Yの最大最小座標で作られる四角)を動く。
工具と加工物が干渉しないか確認・注意して動かすこと

G90 ;絶対座標を使用する
G0 Z10 ; 工具退避、ワーク座標系Z10へ移動
G0 X[xmin] Y[ymin] ;(X最小,Y最小,Z10)へ移動
G0 X[xmax] ;(X最大,Y最小,Z10)へ移動
G0 Y[ymax] ;(X最大,Y最大,Z10)へ移動
G0 X[xmin] ;(X最小,Y最大,Z10)へ移動
G0 Y[ymin] ;(X最大,Y最小,Z10)へ移動