今回の記事はマシニングセンターのプログラムで初心者には少し分かりづらい円弧補間について説明をします。
最後まで読むと、円弧補間プログラムをいろんな記述方法ができるようになります。
IJを使った円弧補間
円弧補間は回る方向でG2 、G3 の2つのGコードがあります。
G2 X_ Y_ I_ J_ F_ (時計回りCW)
G3 X_ Y_ I_ J_ F_ (反時計回りCCW)
アドレス | 入力するデータ |
---|---|
X | 円弧補間の終点 X 座標 |
Y | 円弧補間の終点 Y 座標 |
I | 始点から円弧中心までの X 距離 |
J | 始点から円弧中心までの Y 距離 |
F | 送り速度 |
I、Jのデータが0の場合省略できます。

一周円弧補間
一周円の場合は始点と終点が同じになるため、終点であるX_Y_の入力は不要になります。
G2 I_ J_ F_ (時計回りCW)
G3 I_ J_ F_ (反時計回りCCW)
Rを使った円弧補間
I、Jの代わりにRを使って入力することができます。
G2 X_ Y_ R_ F_ (時計回りCW)
G3 X_ Y_ R_ F_ (反時計回りCCW)
アドレス | 入力するデータ |
---|---|
X | 円弧補間の終点 X 座標 |
Y | 円弧補間の終点 Y 座標 |
R | 半径(注意1) |
F | 送り速度 |
(注意1)半径Rの入力は、始点から終点の角度により決まりがあります。
- 180度より小さい場合はRは正の値
(例) G2 X_ Y_ R60. - 180度より大きい場合はRは負の値
(例) G2 X_ Y_ R-60. - 180度の場合はRは正、負どちらでもOK

図で示す通り、半径60の2点を通る円弧は2通り存在します。始点から終点までの角度が180度より大きいか、小さいかで円弧が確定されます。
また、角度がちょうど180度になる半円の場合は、円弧は1つしか存在しないため、Rが正(プラス)でも負(マイナス)でも同じ円弧になります。
円弧補間のプログラム例
例1)円弧が小さい場合

右上がりの例(X0Y0からX100Y100へ)
G1 G90 X0 Y0 F500
X70.
G3 X100. Y30. J30. (G3 X100. Y30. R30. でも可)
G1 Y100.
左下がりの例(X100Y100からX0Y0へ)
G1 G90 X100. Y100. F500
Y30.
G2 X70. Y0. I-30. (G2 X70. Y0. R30. でも可)
G1 X0.
I0、J0は上の例のように省略してOK。
G2、G3はモーダルなGコードなので直線のG0、G1に戻すのを忘れないように!
例2)円弧が大きい場合

下から上の例(X0Y0からX0Y40 へ)
G1 G90 X0 Y0
X70.
G3 X30. Y80. J50. (G3 X30. Y80. R-50.)
G1X0 Y40.
上から下の例(X0Y40からX0Y0 へ)
G1 G90 X0 Y40
X30. Y80.
G2 X70. Y0. I40. J-30. (G2 X70. Y0. R-50.)
G1X0
I_ J_ を使う場合は符号(+-)を間違えないように!
Rで半径を指定する場合も始点から終点の角度が180より大きい場合はマイナスのデータになります。
I_ J_ を指定するより R_ を指定の方が簡単ですが、cadcamで作られたプログラムは I_ J_が使われることが多いです。
オプションになりますが、「任意角度面取り、コナーR」という機能があります。
ファナックを例に説明します。
左下がりの例(X100Y100からX0Y0へ)
G1 G90 X100. Y100. F500
Y30.
X100. Y0. ,R30.(G2 X70. Y0. R30. と同じ)
G1 X0.
入力の方法は X_ Y_ にコーナー(2線をつないだ交点)の座標を、,R_ に半径を入力します。RをCにすると面取りになり直線で動きます。
説明した通り、この機能はプログラムが簡単になる機能です。OSP やTOSNUCなど他のメーカーにもあるので、ぜひ試してみてください。
(注意)オプションなので使えない場合もあります。詳しくはメーカーに問い合わせてください。
例3)一周円弧の場合

円の中心 X100 Y50 円周上の点 X70 Y90 半径 50 の場合の例
G0 G90 Z100. S1000 M3
X100. Y50.
Z5.
G1Z-10.F500
G1 X70. Y90.
G3 I30. J-40.
G1 X100.Y50.
G0 Z100.
加工したい円周上に移動して G2 G3 I_ J_ で中心の位置を指示します。
上の例では 半径から I_ J_ を計算する必要があり面倒です。穴加工で使うときはG91のインクレメンタル指令で作る方が簡単です。

円の中心 X100 Y50 半径 50 の場合の例
G0 G90 Z100. S1000 M3
X100. Y50.
Z5.
G1Z-10.F500
G1 G91 Y50.
G3 (I0) J-50.
G1 Y-50.
G0 G90 Z100.
最初の例と比べて入力する円弧補間に関係する数字が半径の50だけになりました。同じ穴が複数ある場合はサブプログラムを使い、穴の大きさが変わる場合は半径を変数にすると効率的にプログラムが作れます。
円弧補間のまとめ
時計回り
G2 X_ Y_ I_ J_ F_ 又は G2 X_ Y_ R_ F_
反時計回り
G3 X_ Y_ I_ J_ F_ 又は G3 X_ Y_ R_ F_
- 回る方向でG2,G3を使い分ける
- X_ Y_に終点を入力(一周円弧の場合は不要)
- 円弧の情報を指定する方法は2通りある
(1) I_ J_ を使う場合は始点(現在地)から円弧中心までの距離
(2) R_を使う場合は半径を入力
始点から終点までの角度が180度を超えるとマイナスのデータ - Fは送り速度
以上です。
最後まで読んでいただきありがとうございました。