簡単に言えば、マクロは数式を使用して部品を処理することです。 たとえば、楕円の場合、マクロがない場合は、曲線上の点を 1 点ずつ計算し、ゆっくりと直線で近似する必要があります。 平滑度の要求が高いワークの場合、多くの点を計算する必要がありますが、マクロを適用した後、システムに楕円の式を入力し、Z 座標を与えて毎回量を加算し、マクロは自動的に X 座標を計算し、カットを実行します。 実際、プログラム内のマクロの主な機能は計算です。
写真
01
マクロプログラムについて
マクロプログラムとは何ですか
プログラミングでは、特定の機能を実行するための一連の命令をサブルーチンのようにメモリに保存し、一般的な命令で呼び出します。 使用する場合は、この一般的な命令を与えるだけで、格納されている関数を実行できます。この一連の命令をユーザーマクロプログラム本体、または略してマクロプログラムと呼びます。
この汎用コマンドをユーザーマクロ呼び出しコマンドと呼びます。 プログラミングするとき、プログラマはマクロ命令を記憶するだけでよく、マクロ プログラムを記憶する必要はありません。
マクロプログラミングはいつ使用されますか?
1) 手動でプログラムされた処理式曲線 (簡単な計算、高速な入力)
2) 通常の切断パス (切断モジュールとして)
3) 番組間制御(番組編成)
4) 工具管理(工具の磨耗)
5) 自動測定(機内プローブ)
マクロプログラムと通常のプログラムの違い
1) マクロプログラム本体では、変数の使用、変数への値の代入、変数間の計算、プログラムのジャンプが可能です。
2) 通常のプログラムでは定数のみ指定でき、定数間の演算はできません。 プログラムはシーケンシャルにのみ実行でき、ジャンプすることはできないため、機能は固定されており、変更することはできません。
3) マクロ機能は、CNC 工作機械のパフォーマンスを向上させるためのユーザー向けの特別な機能であり、同様のワークピースの加工でマクロ プログラムを上手に使用すると、半分の労力で 2 倍の結果が得られます。
02
マクロプログラムの変数と形式
マクロプログラムの特徴
マクロ プログラムは変数を使用でき、その変数を使用して対応する操作を実行できます。 実際の変数値は、マクロ プログラム命令によって変数に割り当てることができます。
3 種類の変数
CNCシステムの変数表現形式は「#」に1~4桁の数字を付加したもので、次の3種類があります。
(1) ローカル変数:#1 ~ #33 はマクロプログラム内でローカルに使用される変数であり、独立変数転送に使用されます。
(2) 共通変数:ユーザが自由に使用できる変数で、メインプログラムから呼び出される各サブルーチンや各マクロプログラムに共通です。 #100~#149は電源を切ると全ての変数値がクリアされますが、#500~#509は電源を切ると変数値を保存することができます。
(3) システム変数: 4 桁の数字で定義され、工作機械プロセッサまたは NC メモリに含まれる読み取り専用または読み書き可能な情報 (工作機械プロセッサに関する交換パラメータ、工作機械の状態取得など) を取得できます。パラメータ、処理パラメータなどのシステム情報。
マクロプログラムの簡易呼び出し形式
マクロプログラムの簡単な呼び出しとは、メインプログラムにおいて、単一のブロックでマクロプログラムを呼び出すことができることを意味します。
呼び出し形式:
G65 P(マクロプログラム番号) L(繰り返し回数)(変数代入)。
その中には次のものがあります。 G65 - マクロ プログラム呼び出しコマンド。
P (マクロ プログラム番号) - 呼び出されるマクロ プログラムのコード。
L (繰り返し回数) - マクロ プログラムの繰り返し実行回数。繰り返し回数が 1 の場合は省略できます。
(変数の代入) ・マクロプログラムで使用する変数に値を代入します。
マクロ プログラムとサブルーチンの間で同じことは、1 つのマクロ プログラムを別のマクロ プログラムから最大 4 回呼び出すことができるということです。
マクロプログラムの記述形式
マクロプログラムの記述形式はサブルーチンと同様です。 その形式は次のとおりです。
0-(0001-8999はマクロプログラム番号です)
N10コマンド
N-M99
上記マクロプログラムの内容には、一般的に使用されるプログラミング命令のほか、変数、算術演算命令、その他の制御命令も使用できます。 変数値はマクロプログラム呼び出し命令で割り当てられます。
03
ファナックシステムマクロプログラムアプリケーション
(1) マクロプログラムグルービング
写真
1) WHILE文
G00 X52 Z2;
#2=-14;
工具の Z 方向の始点です (工具幅が 4mm であるため、始点は Z-14 に設定されます)
WHILE [#2 GE -30] DO2;
z 方向の拘束です。 z が -30 に等しい場合、z 方向は移動しなくなります
G00 Z〔#2〕;
z方向の現在位置
#2=#2-2;
z 方向の移動ステップ (毎回 2mm ずつ移動)
#1=52;
x 方向のナイフの開始点です。
WHILE [#1 GE 20] DO1;
X 方向の拘束。直径が 20 に等しい場合、切断されなくなります。
G01 X〔#1〕F0.2;
x方向の切込み深さ
G00 X〔#1 プラス 1〕;
x方向の相対後退量
#1=#1-1;
x方向のステップ距離(1mmごとにカット)
エンド1;
G00 X52;
エンド2;
完全なプログラム:
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X52 Z2;
#2=-14;
WHILE〔#2GE-30〕DO2; エンド1;
G00 Z〔#2〕;
#2=#2-2;
#1=52
一方、〔#1GE20〕DO1;
G01X〔#1〕F0.2;
G00X〔#1 プラス 1〕;
#1=#1-1;
G00 X52;
エンド2;
G00 X150 Z150;
M30;
2) IF文
G00 X52 Z-2;
#1=-14;
ツールの Z 方向の開始点です (ツールの幅は 4mm)
N2 #1=#1-2;
z 方向の移動ステップです
#2=52;
x 方向のツールの開始点です。
N1#2=#2-1;
はx方向のステップ距離です(毎回の切削深さ1mm)
G01 X〔#2〕F0.2;
X方向の現在位置
G00 X〔#2 プラス 1〕;
X方向の相対後退量
IF [#2 GE 21] GOTO1;
x方向の制約(xの値が20になった場合は以下の処理を行いリターンしません)
G00 X52;
X は位置 52 に後退します
G00 Z〔#1〕;
Z方向の現在位置
IF [#1 GE -30] GOTO2;
Z 方向の制約。z が -30 に等しい場合、z 方向は移動しません。
完全なプログラム:
O1234;
G40G97G99;
T0101;
S1000M3;
G00 X52 Z-2;
#1=-14;
N2 #1=#1-2;
#2=52;
N1#2=#2-1;
G01 X〔#2〕F0.2;
G00 X〔#2 プラス 1〕;
IF〔#2GE21〕GOTO1;
G00X52;
G00Z〔#1〕;
IF[#1GE-30]GOTO2;
G00X200;
Z200;
M5;
M30;
(2) 楕円プログラミング
1) 省略記号 WHILE ステートメントの標準形式:
#1=a;
a: 工具の始点は、楕円の Z 軸に対して正方向 a mm にあります。
WHILE [#1 GE b] DO1;
b: 楕円加工の終点は、楕円の軸 Z に対して負の方向 b mm にあります (完全な半楕円を加工する場合、a と b は同じ値で符号が異なる 2 つの値になります)。
#2= c*SQRT[1-#1*#1/d*d];
c: 楕円の短半径
d: 楕円の長半径 (楕円の公式に従って #2 を計算します。長半径は d、短半径は c、#2 は X の値を表し、#1 は Z の値を表します) 、SQRT は平方根を意味します)
G01 X〔±2*#2 プラス e〕Z〔#1±f〕;
e:ワーク座標系に対する楕円のX軸のオフセット(直径値)
f: ワーク座標系に対する楕円の Z 軸のオフセット
#1=#1-1; ステップ距離 (1 回あたり 1mm 移動)
エンド1;
注: 凹楕円を回転させる場合、X の後の括弧内の「±」は「-」として扱われます。 凸楕円を回転させる場合、Xの後の括弧内の「±」は「プラス」とみなします。
楕円の X 軸が正の方向に移動すると、Z の後の括弧内の「±」が「プラス」になります。 楕円のX軸がマイナス方向にずれた場合、Zの後の括弧内の「±」は「-」になります。
2) 楕円IF文の標準形式
#1=a;
a: 工具の始点は、楕円の Z 軸に対して正方向 a mm にあります。
N1#2=b*SQRT〔1-#1*#1/c*c〕;
b: 楕円の半短軸 c: 楕円の長半径 (楕円の式 X/c プラス Y/b=1 によると、SQRT は平方根を意味します)
G01X〔±2*#2 プラス d〕Z〔#1±e〕F0.2; d: 座標ゼロ点に対する楕円の X 軸のオフセット (直径値) e: ゼロ平面に対する楕円の Z 軸のオフセット
#1=#1-1;
ステップ距離(1mmごとに移動)
IF [#1 GE -f] GOTO1
f:楕円処理の終了
注: 凹楕円を回転させる場合、X の後の括弧内の「±」は「-」として扱われます。 凸楕円を回転させる場合、Xの後の括弧内の「±」は「プラス」とみなします。 楕円のX軸が正の方向にずれている場合、Zの後の括弧内の「±」は「プラス」となります。 楕円のX軸がマイナス方向にずれている場合、Zの後の括弧内の「±」は「-」となります。
写真
WHILE ステートメント
#1=20;
一方、〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 プラス 50〕Z〔#1-25〕;
#1=#1-1;
エンド1;
IF文
#1=20;
N1#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 プラス 50〕Z〔#1-25〕F0.2;
#1=#1-1;
IF[#1GE-20]GOTO1;
完全なプログラム
O1234;
G40G97G99;
T0101;
S1000 M3;
G00 X50 Z2;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G0 G42 Z-5;
#1=20;
一方、〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 プラス 50〕Z〔#1-25〕F0.2;
#1=#1-1;
エンド1;
G00 X50;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
IF ステートメントの完全な形式は省略されています (サイクルが追加されている限り、IF ステートメントについても同様です)。 FANUC-0i システムでは、マクロプログラムは G73 でのみ追加できます。
(3) 放物線の処理
1) 放物線状の WHILE ステートメントの標準形式:
#1=a;
a: 工具の始点は放物線軸 Z 方向の a mm です。
WHILE [#1 GE -b] DO1;
b: 楕円のz方向の加工長さ
#2=SQRT〔-#1*5/3〕;
(放物線の公式 Z=-3/5*X*X に従って、X の値 #2 を見つけます。SQRT は平方根を意味します)
G01 X〔±2*#2 プラス c〕Z〔#1〕;
c:ワーク座標系に対する放物線のX軸のオフセット(直径値)「±」
「プラス」を取ると凸、「-」を取ると凹となります。
#1=#1-1; ステップ距離(1mmごとに移動)
エンド1;
2) パラボリック IF ステートメントの標準形式
#1=a;
a: 工具の始点は放物線軸 Z 方向の a mm です。
N1 #2=SQRT〔-#1*5/3〕;
(放物線の公式 Z=-3/5*X*X に従って、X の値 #2 を見つけます。SQRT は平方根を意味します)
G01 X〔±2*#2 プラス b〕Z〔#1〕;
b:座標ゼロ点に対する放物線のX方向軸のオフセット(直径値)です。 「±」に「プラス」を取ると凸、「-」を取ると凹となります。
#1=#1-1;
(Z方向のステップ距離、各移動は1mm)
IF〔#1 GE -c〕GOTO1; c: 楕円のz方向の加工長さ
パラボリックIF
別の文の形式
#1=a;
N1 #2=SQRT〔( プラス )#1*5/3〕;
「プラス」記号は省略できます
G01 X〔2*#2 プラス b〕Z〔-#1〕;
#1=#1 プラス 1;
IF [#1 LE c] GOTO1;
放物線が Z の正の方向にあると仮定すると、Z〔-#1〕を使用します。 放物線を負の方向に対称にする
写真
WHILE ステートメント
#1=0;
[#1 GE -15] しながら 1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2 プラス 30〕Z〔#1〕;
#1=#1-1;
エンド1;
IF文
#1=0;
N1 #2=SQRT〔-#1*5/3〕;
G01X〔2*#2プラス30〕Z〔#1〕;
#1=#1-1;
IF [#1 GE -15] GOTO1;
完全なプログラム
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X42 Z1;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G00 G42 Z0;
#1=0;
[#1 GE -15] しながら 1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2 プラス 30〕Z〔#1〕;
#1=#1-1;
エンド1;
G00 X42;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
(4) WHILE文とIF文の違い
1) 2 つのステートメントの方向が異なります
WHILE ステートメントは逆方向に戻ります
例: WHILE〔#1 GE 20〕DO1;
G01 X〔#1〕F0.2;
工作機械がこの文 #1=20 を実行すると、実行が継続されると仮定します。 #1=#1-1実行後、#1の値は19となり制約条件を満たさなくなるため戻りません。 (X方向に20までカット)
G00 X〔#1 プラス 1);
#1=#1-1;
エンド1;
2) IF ステートメントは前方に戻ります。
例: N1 #2=#2-1;
G01X〔#2〕F0.2; 工作機械がこの文を実行するときに #2=20 とすると、IF〔#2 GE 20〕GOTO1; まで実行され続けます。 条件がまだ満たされている場合は、N1# 2=#2-1 に戻り続けます。 現在の X 値は 19 になり、制約条件を満たさなくなるため、別の X 値が実行されます。
G01X〔#2〕F0.2; 最後に以下のプログラムを実行します(X方向は19にカットされています)
G00X〔#2 プラス 1);
IF [#2 GE 20] GOTO1;
3) 上記のグルービング プログラムからわかるように、IF ステートメントのワード数は WHILE ステートメントのワード数よりもはるかに少ないです。
4) 戻り方向が異なるため、処理中に WHILE ステートメントについては 1 文少なく、IF ステートメントについては 1 文多く読み取ってください。
04
SIEMENSシステム(旋盤)マクロプログラムアプリケーション
注: マクロ プログラムは変数を使用してプログラムされており、シーメンス システムの変数番号は R で表されます。
たとえば、一般的なプログラミング メソッドで記述された場合: G01X-10
マクロ プログラムは次のように表現できます。
R1=-10
G01 X=R1
条件付き転送:
IF GOTOB: 後方にジャンプ
IF GOTOF: 前にジャンプ
一般的なプログラミングで書かれた
ゴー1X100
変数は次のように表現できます。
R1=0
AA: R1=R1 プラス 1
G01X=R1
IF R1<100 GOTOB AA
R1 は独立変数です。初期値は 0 です。R1=R1 プラス 1 は、独立変数の増分値が 1 であることを意味します。プログラムがこの行を毎回通過するとき、次の値はR1 が 1 増加します、R1<100 is a conditional expression, IF R1<100 GOTOB AA This line means that if the argument R1<100, the program jumps backward to the mark: AA
R1 が 100 以上の場合、プログラムは停止します。
マクロ プログラムは G90 モードと G91 モードの両方で使用できますが、その意味は異なります。
R1=0、G90R1=R1 プラス 1、G1X=R1、このプログラムの 2 回目のパス後の X の値は 2 です。
R1=0、G91R1=R1 プラス 1、G1X=R1、プログラムの 2 回目のパス後の X の値は 3 です。説明: 最初のパス後の R1 の値は 1 です。プログラムのパス、R1 の値は 2 番目のパスです。これは 2 ですが、G91 モードでは前のパスに基づきます。
(1) 溝入れ加工
写真
T1
ティッカー
T1D1
G0G40X100Z100
M03S1000
G0X54Z2
スタート地点に早く到着
Z-10
R1=3
ブレード幅を 3mm として定義します
R2=-10-R1-0.2
ツールの開始点は -10 で、ブレードの左側はツールを設定するときに使用されます。
工具設定なので、刃の幅を差し引く必要があります。0.2 は仕上げ代です。
G1Z=R2F0.1
ツールが Z 軸の始点に到達
AA:R2=R2-2.5
R3=50
溝のX軸が点に到達
BB: R3=R3-2
各ナイフの切り込み深さを 2 mm として定義します
G1X=R3
X=R3 プラス 1
0 切込み深さ 2mm ごとに片面で 0.5mm の切りくずを除去
IF R3>30 プラス 0.4 GOTOB BB
Define the groove depth as 10mm, if R3>30mm、プログラムはマーク BB まで逆方向にジャンプし、0.4 が仕上げ代です
G0X50
ツールが X 軸の始点に到達しました
G1Z=R2
IF R2>{{0}} プラス 0.2 GOTOB AA
溝幅を 20mm として定義し、仕上げ代は 0.2 です
G0X50
G01Z-13
仕上げ
X30
Z-16
G0X50
Z-30
G01X30
Z-16
G0X50
撤退
G0X100
Z100
M05
M30
(2) 楕円
1) 基本フォーマット
R1=0
変数 R1 を初期値 0 で定義します
AA:R2=b×SQRT(1-R1×R1/a×a)
楕円方程式によれば、a は楕円の長半径、b は楕円の短半径、SQRT は平方根記号です。
G1X=±2×R2 プラス XZ=R1-Z
楕円の位置と形状を設定します。プラス 2 は凸面、-2 は凹面、X、Z はワークの軸と楕円の軸の間の距離 (直径系) です。
R1=R1-1
処理ステップを設定する
IF R1>=n GOTOB AA
変数 R1 の場合
2) プログラミング例:
写真
T1D1
G0G40X100Z100
M3S1000
G0X52Z2
Z-20
サイクル95 ( )
G42S1500
○○:
R1=20
AA:R2=5×SQRT(1-R1×R1/400)
G1X=-2×R2 プラス 50 Z=R1-40
R1=R1-2
IF R1>=-20 後藤AA
PP:X42
G0G40X100Z100
M05
M09
M30
(3) 放物線
1) 基本フォーマット:
R1=0
変数 R1 の初期値を 0 に設定します
AA: R2=SQRT(-R1×n)
放物線の基本形式に従って取得されます。SQRT は平方根記号、n は係数です。
G01X=2×R2 プラス n
Z=R1
加工パス、プラス2は凸、nはX軸の始点の値
R1=R1-1
可変増分値は1mmです
IF R1>-30 後藤AA
If the variable R1>-30、プログラムはマーク AA まで後方にジャンプします。
2) プログラミング例:
写真
T1
ティッカー
T1D1
G0G40X100Z100
M03S1000
G0X52Z2
サイクル95 ( )
G0G42
○○:
R1=0
AA:R2=SQRT(-R1×5/3)
G01X=2×R2 プラス 30 Z=R1
R1=R1-2
IF R1>-60 後藤AA
PP:X52
G0X100Z100
M05
M30




