Skip to content

FANUC矩形溝加工の繰り返しプログラム解説 ​

この記事では、短く分かりやすいFANUCプログラムを使い、工具を矩形の経路に沿って繰り返し動かし、1周ごとに加工数を自動で1増やします。主にCNC GUIDEシミュレーターでの学習を想定した例で、座標、送りオーバーライド、ループの戻り、システム変数の動作を観察できます。

FANUC矩形溝加工の繰り返しプログラムの概要

図: 上面から見た経路、側面から見た深さ、加工条件、手順、ループの流れ、簡潔なサンプルプログラムを1枚にまとめ、全体像を示しています。

安全上の注意

このプログラムはシミュレーターでの学習用です。主軸起動、クーラント、工具長補正、工具径補正、実際の加工に必要な一連の安全確認を省略しています。実機で実行する前に、工作機械メーカーのマニュアル、治具・工具の状態、現場の安全手順に照らして再検証してください。


1. このプログラムは実際に何を加工するのか ​

このプログラムは、矩形の内側全体を削り取るものではありません。

工具中心を40 × 30 mmの矩形に沿って1周させ、閉じた矩形溝を作ります。

  • 工具中心の経路: 40 × 30 mm
  • 切り込み深さ: 2 mm
  • 実演に推奨する工具: D10のフラットエンドミル
  • 溝幅: おおむね工具径と同じ10 mm
  • 溝の四隅: 工具半径によって丸みが付く
  • 矩形の内側: 元の材料が残り、削り取られない

重要な違い

  • 1周すると矩形溝ができます。
  • 内側を削り取って矩形ポケットを作るには、経路を徐々に内側へずらして複数周加工する必要があります。

加工後の矩形溝の図 ​

矩形溝加工後の実演用ワークと座標系

図: D10のフラットエンドミルが矩形の中心線を1周すると、X0 Y0を始点とし、中心線の寸法がおよそ40 × 30 mmの溝が残ります。

text
┌──────────────────────────────┐
│                              │
│   ┌──────────────────────┐   │
│   │  材料が残る          │   │
│   └──────────────────────┘   │
│                              │
└──────────────────────────────┘

模式図: 工具は矩形の中心線を1周するだけなので、閉じた溝ができ、矩形の内側には材料が残ります。


2. 最終的な簡潔なプログラム ​

gcode
%
O1000(RECTANGLE LOOP DEMO)
(TOOL PATH 40X30 DEPTH 2)

G21 G17 G40 G49 G80 G90 G94 G54
#3901=0(PART COUNT RESET)

G00 Z5.(SAFE HEIGHT)
G00 X0.Y0.(START POINT)

N10 G01 Z-2.F300.(PLUNGE)
G01 X40.Y0.F600.(EDGE 1)
Y30.(EDGE 2)
X0.(EDGE 3)
Y0.(EDGE 4)

G00 Z5.(RETRACT)
#3901=#3901+1(PART COUNT +1)
G04 X2.(WAIT 2 SECONDS)
M99 P10(RETURN TO N10)

%

これはCNC GUIDEで学習し、座標の変化を観察するための実演用プログラムです。基本的な移動、送り、ループ、カウントの動作を理解しやすくするため、工具交換、主軸起動、クーラント、工具長補正、工具径補正は意図的に省略しています。


3. 座標と工具経路 ​

プログラムは絶対座標(G90)を使用し、以下を前提としています。

位置座標
ワーク上面Z0
安全高さZ5
切り込み深さZ-2
矩形の始点X0 Y0
1つ目の角X40 Y0
2つ目の角X40 Y30
3つ目の角X0 Y30
始点への復帰X0 Y0

上から見た工具中心の経路は次のとおりです。

text
             X40 Y30
       ④ <──────── ③
       │             ↑
       │             │
       ↓             │
X0 Y0 ① ─────────> ② X40 Y0

動作の順序:

  1. 工具を安全高さZ5へ移動します。
  2. 矩形の始点X0 Y0へ早送りで移動します。
  3. F300でZ-2まで切り込みます。
  4. F600で4辺に沿って移動します。
  5. 1周したらZ5へ退避します。
  6. 加工数を1増やします。
  7. 2秒間ドウェルします。
  8. N10へ戻り、自動で次の周回を開始します。

座標系と経路の図 ​

ワーク座標系、安全高さ、切り込み深さ

図: ワーク上面はZ0、安全高さはZ5、切り込み深さはZ-2で、矩形の経路はX0 Y0から始まります。

text
Z+
↑
│      安全高さ: Z5
│      ─────────
│
│      ワーク上面: Z0
│      ─────────
│
│      切り込み深さ: Z-2
│      ─────────
└────────────────→ X+

模式図: プログラムは安全高さで始点へ移動し、Z-2まで切り込んだ後、XY平面の矩形経路に沿って動きます。

矩形溝プログラムの動作順序

図: 青い破線はG00による早送り位置決めと退避、赤い実線はG01による切削送りを示します。切り込み、4辺の加工、退避の順に実行されます。


4. 各行の解説 ​

4.1 プログラムの開始とプログラム番号 ​

gcode
%
O1000(RECTANGLE LOOP DEMO)
(TOOL PATH 40X30 DEPTH 2)

% ​

プログラムファイルの開始を示します。末尾のもう1つの%はファイルの終了を示します。

O1000 ​

プログラム番号は1000です。

従来のFANUCプログラムでは、通常次の形式を使います。

text
O + 番号

例:

text
O0001
O0100
O1000

現在のCNC GUIDEは<SAMPLE>や<Woody001>などのプログラム名にも対応していますが、O1000は従来のFANUCの形式に従っています。

丸括弧内の文字列 ​

gcode
(RECTANGLE LOOP DEMO)
(TOOL PATH 40X30 DEPTH 2)

丸括弧内の文字列はコメントで、実行されません。


4.2 加工モードの初期化 ​

gcode
G21 G17 G40 G49 G80 G90 G94 G54

この行では、複数のモーダル状態をまとめて設定します。

命令機能
G21長さの単位をミリメートルに設定
G17XY平面を選択
G40工具径補正を解除
G49工具長補正を解除
G80穴あけなどの固定サイクルを解除
G90絶対座標によるプログラミングを指定
G94送りの単位をmm/minに設定
G54第1ワーク座標系を使用

特にG90は誤解しやすい命令です。

G90の状態で:

gcode
X40.

と指定すると、絶対座標X=40へ移動します。現在位置からさらに40 mm移動するわけではありません。


4.3 加工数のリセット ​

gcode
#3901=0(PART COUNT RESET)

#3901はFANUCの加工数を表すシステム変数です。

この行は値をゼロにリセットします。

text
#3901 = 0

この処理は、プログラムを先頭から開始したときにだけ実行されます。

その後のループでは:

gcode
M99 P10

で直接N10へ戻るので、リセットは再実行されません。

この部分でCNC GUIDEにマクロ変数のアラームが出る場合は、#3901を含む2行を一時的に削除してください。プログラムの繰り返しは継続できますが、加工数は自動で増えなくなります。


4.4 安全高さへの退避 ​

gcode
G00 Z5.(SAFE HEIGHT)

G00は早送り位置決めを意味します。

この行はZ軸を次の位置まで早送りで移動させます。

text
Z = 5 mm

ワーク上面はZ0なので、Z5では工具先端が上面より5 mm高い位置になります。

XとYを動かす前にZを上げることで、水平方向の早送り中にワークへ衝突するリスクを減らせます。


4.5 矩形の始点への早送り移動 ​

gcode
G00 X0.Y0.(START POINT)

工具は安全高さZ5を維持したまま、以下の位置へ早送りで移動します。

text
X = 0
Y = 0

ここは経路の左下の角で、各周回の始点です。


4.6 ループの開始と切り込み ​

gcode
N10 G01 Z-2.F300.(PLUNGE)

このブロックは4つの部分から成ります。

部分意味
N10ブロック番号10
G01直線切削送り
Z-2.絶対座標Z=-2へ移動
F300.送り速度300 mm/min

工具は次の位置から下降します。

text
Z5

下降先:

text
Z-2

合計移動量は7 mmです。

理論上の切り込み時間:

text
7 ÷ 300 × 60 = 1.4 秒

N10はループの戻り先で、各周回の終了後にM99 P10でここへ戻ります。


4.7 1辺目の加工 ​

gcode
G01 X40.Y0.F600.(EDGE 1)

工具は次の位置から移動します。

text
X0 Y0

移動先:

text
X40 Y0

Xの正方向へ40 mm移動します。

この行では、輪郭加工の送り速度も次の値へ変更します。

text
F600 mm/min

4.8 2辺目の加工 ​

gcode
Y30.(EDGE 2)

G01とF600はモーダルなので、各行で繰り返し指定する必要はありません。

工具は次の位置から移動します。

text
X40 Y0

移動先:

text
X40 Y30

ここではXを指定していないため、Xは40のままです。


4.9 3辺目の加工 ​

gcode
X0.(EDGE 3)

工具は次の位置から移動します。

text
X40 Y30

移動先:

text
X0 Y30

Yを指定していないため、Yは30のままです。


4.10 4辺目の加工 ​

gcode
Y0.(EDGE 4)

工具は次の位置から移動します。

text
X0 Y30

移動先:

text
X0 Y0

これで4辺すべての加工が完了し、工具は始点へ戻ります。

上から見た矩形溝の工具経路

図: 上面図の赤い実線は切削経路です。工具中心はX0 Y0、X40 Y0、X40 Y30、X0 Y30を順に通り、X0 Y0へ戻ります。


4.11 退避 ​

gcode
G00 Z5.(RETRACT)

工具は切り込み位置から早送りで退避します。

text
Z-2

退避先:

text
Z5

工具はすでにX0 Y0へ戻っているので、退避後は安全に次の周回を開始できます。


4.12 加工数を増やす ​

gcode
#3901=#3901+1(PART COUNT +1)

これは、次の計算に相当します。

text
現在の加工数 = 現在の加工数 + 1

たとえば現在の加工数が7の場合:

text
#3901 = 7 + 1
#3901 = 8

CNCに表示される加工数は、1周ごとに1増えます。

ここでは「矩形溝を1周加工した」ことを「部品を1個加工した」こととして扱っています。


4.13 2秒間のドウェル ​

gcode
G04 X2.(WAIT 2 SECONDS)

G04はドウェルを示します。

X2.は約2秒の停止を意味します。

この停止により、次のことが容易になります。

  1. 加工数が増えたことを確認する。
  2. 各周回の間に明確な間隔があることを確認する。
  3. プログラムの実行リズムを理解する。

4.14 ループの開始点へ戻る ​

gcode
M99 P10(RETURN TO N10)

この命令は、プログラムを次のブロックへ戻します。

gcode
N10

そのため、プログラムは終了せず、無限に繰り返します。

text
N10で切り込み
→ 4辺を加工
→ 退避
→ 加工数を1増やす
→ 2秒ドウェル
→ N10へ戻る

サイクルスタート(CST)を1回押すと、手動で停止またはリセットするまで繰り返し動作します。

矩形溝のループと加工数カウンター

図: 各周回の後、工具が退避し、加工数が1増え、プログラムが一時停止してから、M99でループの開始点へ戻ります。


5. 1周にかかる時間 ​

矩形の周長:

text
40 + 30 + 40 + 30 = 140 mm

XYの輪郭加工では次の送りを使用します。

text
F600 mm/min

理論上の輪郭加工時間:

text
140 ÷ 600 × 60 = 14 秒

切り込み距離は7 mmで、送りは次のとおりです。

text
F300 mm/min

理論上の切り込み時間:

text
7 ÷ 300 × 60 = 1.4 秒

さらに2秒のドウェルがあるため、理論上の合計は次のようになります。

text
14 + 1.4 + 2 = 17.4 秒

早送り移動、軸の加減速、制御装置の処理時間を含めると、実際はおよそ次の時間になります。

text
18~20 秒/周

これは操作盤の送りオーバーライドが100%の場合です。


6. 送りオーバーライドが実行に与える影響 ​

プログラム中の:

gcode
F300.
F600.

は指令送り速度です。

操作盤の送りオーバーライドは、この値に対して実際の速度をさらに調整します。

たとえばF600の実行時は、次のようになります。

操作盤の送りオーバーライド実際の送り速度
100%約600 mm/min
50%約300 mm/min
25%約150 mm/min
0%0 mm/min。座標の変化が止まる

オーバーライドが0%の場合、以下の状況は誤解を招くことがあります。

  • プログラムは開始されたように見える。
  • 経過運転時間は増え続ける。
  • 現在のプログラム状態はSTRTまたはMTNになっている。
  • G01命令で座標が変化しない。
  • 画面に表示される実際のFが0になっている。

プログラム自体は実行中ですが、オーバーライドによって切削送りが0%に固定されています。


7. 工具中心の経路は溝の外形寸法ではない ​

プログラムで指定した寸法:

text
40 × 30 mm

は、工具中心が描く矩形を表し、加工後の溝の外側境界を表すものではありません。

D10のエンドミルを使用する場合:

  • 工具半径は5 mmです。
  • 溝幅は約10 mmです。
  • 工具は中心線の両側をそれぞれ約5 mmずつ切削します。
  • 四隅にはおよそR5の丸みが付きます。

工具径補正がないため、このプログラムが外形寸法を正確に40 × 30 mmに加工すると単純に解釈することはできません。

そのため、このプログラムには:

gcode
G40

を含め、工具径補正を例の対象から明示的に外しています。


8. 内側が削り取られない理由 ​

このプログラムにあるXY平面の直線移動は、次の4つだけです。

gcode
G01 X40.Y0.
Y30.
X0.
Y0.

工具は矩形の境界を1周するだけです。

中央を通る工具経路の命令はないため、その部分の材料は残ります。

矩形ポケット全体を加工するには、たとえば次のように、内側へずらした複数の経路を追加します。

text
外側を1周
→ 一定距離だけ内側へ移動
→ 2周目
→ 再び内側へ移動
→ 3周目
→ 中央まで加工する

ほかにも以下の方法があります。

  • 平行な往復経路による加工。
  • 内側へ向かう螺旋状の経路。
  • CAMソフトウェアで生成したポケット加工経路。
  • 周回ごとの経路を自動計算するFANUCマクロ。

これらは、この最小限のサンプルプログラムの範囲外です。


9. CNC GUIDEでの実行 ​

9.1 プログラムのインポートまたは入力 ​

プログラムをテキストファイルとして保存するか、CNC GUIDEでO1000を作成してプログラムを入力します。

9.2 現在のメインプログラムに設定 ​

プログラムディレクトリで:

  1. カーソルをO1000へ移動します。
  2. 「操作」を選択します。
  3. 「メインプログラム」または「メインプログラム選択」を選択します。
  4. 画面上部にO1000が表示されていることを確認します。

9.3 非常停止の解除 ​

画面下部に次の表示がある場合:

text
--EMG--

以下を実行します。

  1. I/OパネルのESPをクリックして非常停止を解除します。
  2. 操作盤のRESETを押します。
  3. --EMG--が消えたことを確認します。

9.4 送りオーバーライドの設定 ​

右側のI/OパネルのFOVの組み合わせが0%になっていないことを確認します。

テストでは次の設定を推奨します。

text
100%

低いオーバーライドで開始して、座標の変化を観察してもかまいません。

9.5 プログラムの開始 ​

  1. AUTOをクリックして自動モードにします。
  2. SSBK(シングルブロックモード)が無効であることを確認します。
  3. CST(サイクルスタート)をクリックします。
  4. X、Y、Zと加工数の変化を観察します。

10. 正常動作中に確認できること ​

開始後、座標はおおむね以下のように変化します。

text
Z: 5 → -2
X: 0 → 40
Y: 0 → 30
X: 40 → 0
Y: 30 → 0
Z: -2 → 5

その後:

text
加工数を1増やす
2秒ドウェル
再び切り込む

ループ中は:

  • Xが0から40の間で変化します。
  • Yが0から30の間で変化します。
  • Zが5から-2の間で変化します。
  • 加工数が1周ごとに1増えます。
  • 経過運転時間が増え続けます。
  • プログラムはM30で終了しません。

11. 停止方法 ​

通常の一時停止 ​

次を使用します。

text
Feed Hold / CSP

フィードホールドにより、現在の送り動作が一時停止します。

ループの終了 ​

次を押します。

text
RESET

実行中のプログラムが終了し、ループの状態が解除されます。

緊急時 ​

次を使用します。

text
ESP

非常停止は緊急時専用です。通常のプログラム停止ボタンとして使用しないでください。


12. トラブルシューティング ​

12.1 運転時間は増えるが座標が動かない ​

最も多い原因は、送りオーバーライドが0%になっていることです。

次を確認してください。

text
画面に表示される実際のFは0 mm/minか?
右側のFOVが0%になっていないか?

プログラムがG00の早送り位置決めを終え、次の行で:

gcode
G01 Z-2.F300.

切削送りオーバーライドが0以外になるのを待っている可能性があります。


12.2 #3901でアラームが出る ​

現在の構成で、該当するマクロ変数機能が有効になっていない可能性があります。

まず次の行を削除します。

gcode
#3901=0
#3901=#3901+1

プログラムの繰り返しは継続できますが、加工数は自動で増えなくなります。


12.3 1ブロック実行すると止まる ​

次が有効かどうかを確認します。

text
SSBK

これはシングルブロックモードです。有効な場合、各ブロックでサイクルスタートをもう一度押す必要があります。


12.4 CSTをクリックしても反応がない ​

次を確認します。

  • 制御装置はAUTOモードか。
  • --EMG--がまだ表示されていないか。
  • ほかのアラームがないか。
  • O1000が現在のメインプログラムになっているか。
  • CSPが停止状態になっていないか。
  • 送りオーバーライドが0%になっていないか。

12.5 プログラムが主軸を起動しない理由 ​

これは座標移動の学習用プログラムであり、次の命令を意図的に省略しています。

gcode
T1 M06
S2000 M03
M08
G43 H01

これらの命令は、次の条件に依存する場合があります。

  • 工具交換完了信号。
  • 主軸起動完了信号。
  • PMC設定。
  • 工具長補正値。
  • クーラント制御信号。

追加すると、初学者が考慮する項目やアラーム発生の可能性が増えます。

まず座標、送り、ループ、カウントを理解し、その後で機械の一連の操作を徐々に追加する方が学びやすくなります。


13. このプログラムで学べる基本概念 ​

この短いプログラムは、次の項目を扱っています。

  1. O1000: 従来のFANUCプログラム番号。
  2. G90: 絶対座標。
  3. G00: 早送り位置決め。
  4. G01: 直線切削送り。
  5. F: 指令送り速度。
  6. G54: ワーク座標系。
  7. N10: ブロック番号。
  8. G04: ドウェル。
  9. #3901: 加工数変数。
  10. M99 P10: 指定ブロックへ戻って繰り返す。
  11. モーダル命令: 以降の行でG01とF600を省略できる理由。
  12. 送りオーバーライド: 指令速度と操作盤のオーバーライドの関係。
  13. 工具中心の経路と実際に加工される輪郭の違い。

14. プログラム全体を一文で説明 ​

工具が安全高さから左下の角へ移動し、2 mm切り込み、600 mm/minで40 × 30 mmの矩形中心線をたどり、退避して加工数を1増やし、2秒待った後、自動で繰り返します。


15. 安全上の確認事項 ​

このプログラムは、主にCNC GUIDEシミュレーターでの学習を目的としています。

実機で実行する前に、次のことを確認してください。

  • G54のワーク座標系が正しく設定されている。
  • 工具とワークの位置が正しい。
  • Z0が実際にワーク上面になっている。
  • Z5で十分なクリアランスが確保される。
  • Z-2で治具に衝突しない。
  • X/Yの経路がワーク材料の範囲内に収まる。
  • 工具が適切に固定され、主軸が回転している。
  • 初回運転をシングルブロック、ドライラン、低いオーバーライドで検証する。
  • 無限ループによって機械が無人のまま運転し続けない。

この例には工具長補正と主軸制御がないため、変更せずに実加工へ使用してはいけません。まずCNC GUIDEで座標、ループのロジック、加工数の動作を確認し、その後で工具交換、主軸、クーラント、補正、終了条件を徐々に追加して、対象機械向けの完全なプログラムを構築してください。