あらかじめ定義した一連の命令を、メインプログラムから呼び出して実行する機能のことです。これを使用することで、繰り返し行う操作を一度だけ定義し、何度でも呼び出して再利用できるようになります。マクロは、サブプログラムと似ていますが、特に引数(パラメータ)を受け取って、柔軟に動作を変更できる点が特徴です。
マクロプログラム呼び出し
メインプログラムからG65P100A240.でO100のマクロプログラムが呼び出され、穴あけ処理をします。 M99でマクロプログラムからメインプログラムに戻ります。 この時A240.は引数と呼ばれ、呼び出されたマクロプログラムの#1に格納されます。
マクロプログラムモーダル呼び出し
マクロプログラムもG01のように、モーダルで呼び出すことができます。
G01のモーダルは
| モーダル記述 | 解釈 |
|---|---|
| G01X0.Y0. X100. Y50. | G01X0.Y0. G01X100. G01Y50. |
メインプログラムからG66P100A240.でO100のマクロプログラムが呼び出され、穴あけ処理をします。 次にX100.を指定すると、その座標に移動した後にO100のマクロプログラムが呼び出されます。 G67でキャンセルするまで何回も繰り返し呼び出されます。
G65とG66の比較
| G65 | G66 |
|---|---|
| G00X-20.Y20 G00Z260. G01X100. G65P100A240. G01X200. G65P100A240. G01Y70. G65P100A240. M30 O100 G01Z#1 G01Z260 M99 | G00X-20.Y20 G00Z260. G01X100. G66P100A240. X200. Y70. M30 O100 G01Z#1 G01Z260 M99 |
引数と変数の対応
| AからZで記述 | IJKの繰り返しで記述 | 変数 |
|---|---|---|
| A | A | #1 |
| B | B | #2 |
| C | C | #3 |
| I | I | #4 |
| J | J | #5 |
| K | K | #6 |
| D | I | #7 |
| E | J | #8 |
| F | K | #9 |
| I | #10 | |
| H | J | #11 |
| K | #12 | |
| M | I | #13 |
| J | #14 | |
| K | #15 | |
| I | #16 | |
| Q | J | #17 |
| R | K | #18 |
| S | I | #19 |
| T | J | #20 |
| U | K | #21 |
| V | I | #22 |
| W | J | #23 |
| X | K | #24 |
| Y | I | #25 |
| Z | J | #26 |
| K | #27 | |
| I | #28 | |
| J | #29 | |
| K | #30 | |
| I | #31 | |
| J | #32 | |
| K | #33 |
G65P100A1B2C3I4J5K6D7E8F9 AからZで記述
G65P100A1B2C3D7E8F9I4J5K6 AからZで記述(AからZは好きな順で良い)
G65P100A1B2C3I4J5K6I7J8K9 IJKの繰り返しで記述(IJKの順は変えられない)
3通りの記述とも、変数には変数の番号が入ります。
#1=1, #2=2, #3=3 ...
マクロ呼び出しのローカル変数
マクロ呼び出しをすると、#1から#33までのローカル変数が別に作られ、引数で設定した変数には値が設定されます。