マクロ

製品寸法が少し変わっただけで、一からプログラムを作り直していては非常に効率が悪いです。NCプログラムではカスタムマクロという機能が付いています。メインのプログラムとは別にプログラムを記述することで、同じプログラムを様々な製品に使い回すことが出来ます。

カスタムマクロには引数を付けることができます。メインプログラムからマクロを呼び出す際に数値を設定することで、その数値をマクロプログラムの中で使用することができます。この機能により様々な寸法に対応でき、より汎用的なプログラミングが可能になります。

マクロ呼び出しは、"G65P_"で記述され、P_はプログラム番号でその後にアルファベットの"A〜Z"で引数を記述します。引数の記述の仕方は2種類あり、"A〜Z"で記述する方法と、最初の3つだけ"A,B,C"で記述し、そのあとは"I,J,K"を繰り返して記述する方法があります。

引数で使用するアルファベットは下記表のローカル変数に対応しており、マクロが呼び出された際にローカル変数に代入されます。このとき、マクロで使用するローカル変数は、メインプログラムで使用しているローカル変数とは別の変数となります。ローカル変数については変数のページで詳しく解説しています。

※カスタムマクロAしか入っていない設備では、自作したマクロプログラムを呼び出すことはできません。最近の設備のほとんどが自作したマクロプログラムを呼び出せるカスタムマクロBが入っていますが、古い設備ですとカスタムマクロBは入っていません。仕様書などで、カスタムマクロBが入っているかを確認して、入っていなければメーカーに頼んで入れてもらいましょう。


A〜Zで記述する方法 I,J,Kを繰り返して
記述する方法
対応する
ローカル変数
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
%
O10
G65P100A10.B20.C30.X240.Y250.D70. F90.  (アルファベットの順番は何でも良い)
G65P200A10.B20.C30.I40.J50.K60.I70. J80.K90.  (アルファベットの順番は変えられない)
M02
%

(代入されている数値)
%
O100
(#1=10.)
(#2=20.)
(#3=30.)
(#7=70.)
(#9=90.)
(#24=240.)
(#25=250.)
M99
%

%
O200
(#1=10.)
(#2=20.)
(#3=30.)
(#4=40.)
(#5=50.)
(#6=60.)
(#7=70.)
(#8=80.)
(#9=90.)
M99
%
				

マクロプログラムの終わりに"M99"を入れることで、メインプログラムに戻ることができます。"M02"や"M30"を入れてしまうと、そこでプログラムが終了してしまいますので注意が必要です。

マクロモーダル呼び出し

マクロの呼び出し方にはもう一種類あり、"G66"で記述する、マクロモーダル呼び出しがあります。1ブロック目はG65がG66に変わっただけですが、2ブロック目からはX座標とY座標を設定するだけで、同じ動きを繰り返し行うことができます。このマクロモーダル呼び出しを終了させるには、G67でキャンセルします。

%
O10
G66P100A0B-10.   (現在の工具位置でO100を呼び出す)
X50.Y0           (X50.Y0の位置でO100を呼び出す)
X100.Y0          (X100.Y0の位置でO100を呼び出す)
G67
M30
%

%
O100
G01Z#1F1000
Z#2F100
Z50.F2000
M99
%
				

マクロの多重呼び出し

呼び出されたマクロの中では、さらに別のマクロを呼び出すこともできます。これがマクロの多重呼び出しで、制御装置にもよりますが最大で4〜5重の呼び出しが可能です。アイデア次第で様々な使い方ができますが、プログラムが複雑化するおそれがあるので注意して使用しましょう。

マクロの多重呼び出し

お知らせ
メニュー
NC旋盤
サブメニュー
OSP(オークマ)
雑学
NCプログラマの為の数学
関連サイト