NCプログラム/Gコード 工具経路指令

NC

前回は、NCプログラムの概要を説明しました
今回は工具経路の図形を定義する指令に使用されるGコードについて説明します。
ここまで理解できれば、二次元の図形をGコードで定義できるようになります。

絶対座標系と相対座標系

経路指令なので、「どこへ行け!」が基本になりますが
「どこへ」の指令に2種類の指令方法があります。
「絶対座標系:G90」と「相対座標系:G91」です。
ちょっと面倒くさそうな言葉ですが、重要な指令なので、一番最初に書くことにしました。
指令座標 位置 が同じでも、どちらの座標系かを把握していないとまったく違う位置への移動になります。
非常に重要な指令です。

絶対座標系/アブソリュート:G90

工作機械のある位置を原点と決めた場合、その原点からの距離を位置座標として指令するモードです。

(例)

G90 X10.123 Y-50.630

事前に決められた、原点(X0,Y0)位置から、指令位置へ移動させます

相対座標系/インクリメンタル:G91

工具(主軸)の現在地からの距離を指定するモードです。

(例)

G91 X10.123 Y-50.630

現在位置からの相対的な位置を指定します。
原点は関係ありません。

「G90」と「G91」が違うだけで、座標位置の数値は全く同じですが、ぜんぜん違う位置への指令となりますから、非常に重要なコードです。

Gコードグループ

この表は、ファナックの資料なので、それ以外の制御機では互換性のないコードもありますのでご承知くだ い。
Gコードはいくつかのグループに分類されていて、一つのブロック(行)に同じグループのコードは一緒に使用できません。
逆に、違うグループであれば、同じブロック(一行)で指令する事ができます、

モーダルとワンショット

「00グループ」以外は、一度指令されると、同じグループのコードが指令されるまで有効にまります。
例えば「G90」のコードは一度指令すると、「G91」のコードが指令されるまで有効になります。
このようなコードを「モーダル」なコードと呼ばれています
対して、 「00クループ」 は、そのブロック(行)のみ有効なコードで「ワンショット」なコードと呼ばれます。
ここで説明する予定の基本的なGコードは、「モーダル」なコードがほとんどなので、「モーダル」のみの説明とします。

「Gコード グループ03」
・G90 : アブソリュート
・G91 : インクリメンタル

移動量指令の単位と小数点

移動量を数値で指令する場合、単位は何でしょうか?
インチ?  m ? cm ? mm ?
まず、インチかメトリックかについては、デフォルトではメトリックが一般的です。明示的に指令するには、Gコード(G20:インチ G21:メトリック)が用意されています。
ただし、特にインチで指令する 必要がない場合には、省略可能です。

「Gコード グループ06」
・G20 : インチ
・G21  : メトリック

では、メトリック指令だとして、「X100」と指令した場合、実際の移動量はどれくらいでしょうか?
単位は機械系の場合「mm」が一般的なので、「100mm」と考えがちですが、これは特に、ファナックの場合には注意が必要です。
私に知ってる限りでは、「OSP」「ハイデンハイン」「レダース」などは「100」は期待通り「100mm」と認識しました。
対して私が触ったファナックの中には、「100mm」「0.1mm」「0.01mm」と認識する制御機がありました。
この違いは、制御機のパラメータの設定の違いです。
パラメータ設定のある項目に数値一桁目の単位が設定されています。
機械納入時この値は、「0.001」に設定されている場合が多いです。
高精度な機械の場合には、「0.0001」の場合もあります。
したがって、数値一桁目が「0.001」が設定されている場合には「100」の指令では「0.1mm」しか移動しない事になります。
この混乱をなくすため、「小数点」をつけるようにします。
「X100」を「X100.」や「X100.0」と書くようにします。
数種類の機械や制御機を使用する場合には、「小数点」は必ず付けるように徹底する事をお勧めします。

移動指令

「01グループ」に属しています。
・早送り移動(位置決め)
・直線移動(直線補間)
・円弧移動(円弧補間)
があります。

G00 / 位置決め(早送り)

「指定位置に、最高速度で移動しろ!」の指令ですが、ファナック系では 「指定軸の最高速度」の指令となる場合もあるので注意が必要です。
例えば、「G00 X200.0 Y80.0」と指令した場合、指令座標へ最短距離で移動するように思いますが、ファナックの多く(古い機種)は最短距離になりません。
「各軸の最高速度」の指令なので、とりあえず、X軸、Y軸の最速で移動した後残った軸が移動する動作となります。
もし、X軸・Y軸の最高速度が同じ場合、まずは、45°方向へ移動し、その後まだ移動が残っている軸が移動します。

最短距離方向を期待していると、思わぬ方向へ移動し干渉する場合もあるので注意が必要です。
また加工物の上面よりも、深い位置では「G00」は使用しないほうが無難です。
最短距離のみで干渉を回避するCAMの場合、ぶつかる事になりかねません。
ハイデンハインやレダースの場合には、最短距離での移動が保証されています。
さらに最高速度は、オーバーライドダイアルで調整可能ですが、レダースの場合には
「SetFMax=20000」のように、コマンドで最高速度を設定できますし
ハイデンハインの場合もコントローラダイアログで設定できて便利です。

G01 / 直線補間 (切削送り)

「指定位置へ、最短(直線)で指定速度で移動しろ!」です、
「G00」との違いは、「指定速度/F(mm/min)」を付加する必要があります。
例えば「G01 X50.230 Y-5.423 F1300」のような指令となります。
3軸同時動作可能な機械は、XYZなど同時指令可能です。
「指定速度/F」 は「モーダル」なので、以前に指令した値が適応されますが一度も指令されていない状態での「G01」は、エラーがでる場合もあります。
また、 ファナックの場合でも「G00」とは違い、最短距離で移動します。
前述のように、「G00」で干渉が懸念される場合には、高速な速度指令で「G01」を使う事で回避できます。

G02・G03 /円弧補間

円弧補間は、指令平面に対して定義するので、事前に平面の定義が必要です。
ただし、平面定義がない場合には、「X-Y平面」と認識されます。
またヘリカル補間というオプションがあります。
これは、平面指定軸で円弧を描きながら、別の一軸へも同時に移動します。
イメージ的に、螺旋のような奇跡を定義できます。
平面指定は「G17 : X-Y」「G18 : Z-X」「G19 : Y-Z」のGコードで指令します。

「Gコード グループ02」
・G17 : XY平面
・G18  : ZX平面
・G19  : YZ平面

円弧の場合も、「指定位置に、移動しろ!」の座標値指令は「直線補間」と同じですが、「円弧中心の座標」と「円弧の半径」も指示しないと円弧形状は定義できません。
その指令方法は、「IJK」方式と「R」方式があります。
ここでは、 一般的な「G17 : X-Y」 で「IJK」方式で説明します。

「G17:XY平面」の場合、移動先位置は「X、Y」で指定します。
次にどのように行くのか?ですが、「G02」「時計回り」方向。
「G03」「反時計回り」方向で定義できます。
また、円弧の中心位置を「I」で中心のX座標。「J」で中心のY座標を定義します。
ファナックの場合「I」「J」の値は、始点(現在位置)からの円弧中心へのインクリメンタル値(相対値)で定義します。
絶対座標で考えると、I = 中心のX 座標 – 始点のX座標 となります。
ただし、「ハイデンハインのISOコード」「レダース」の場合、「I」「J」の場合も「相対値」でなく「絶対値」で定義する場合があります。
国産の場合はほとんど「相対値」ですが、海外の制御機の場合「絶対値」がデフォルトな場合もあるので注意が必要です。
ここでは、相対値で考えてみますが、「IJ」定義の場合、円弧半径を知りたい場合、簡単に確認できません。
次の計算方法を覚えておくと便利です。

「Gコード グループ01」
・G00 : 位置決め(早送り)
・G01  : 直線補間(切削送り)
・G02  : 円弧補間(時計回り)
・G03  : 円弧補間(反時計回り)

まとめ

G90、G91 絶対/相対 座標系
G17     XY平面指定
G00、G01 直線補間
G02、G03 円弧補間
ここまで理解できれば、二次元図形をNCコード化できると思います
そのNCコードを、機械制御機に入力すれば、XY平面上で、図形通りに動作させる事ができるはずです。

NCプログラムの記事

1 2 3 4 5 6 7

コメント

  1. 乱造 より:

    円弧補完でのR指定は注意が必要ですよね
    昔、いろいろな機械で悩まされました
    円弧中心の計算誤差によって思わぬ形状になったりします
    制御装置のヴァージョンでもちがいがあったりします
    今時は手組される人は少ないと思いますから
    CAMのポストプロセッサーではI.J.K出力に設定しておくのが間違いないですね

    • kazuban kazuban より:

      乱造さん、コメントありがとうございます。
      そうですか、R指示は計算誤差で誤動作する場合もあるんですね
      CAMでは、ほとんど「IJK」出力ですが
      手打ちの場合には、R指示のほうが楽だったりするので、たま~にR指示した事もありました
      やっぱり、IJKのほうが間違いないのでしょうね!

      少し、NCの記事も書いて行こうと思っています。
      乱造さんが見てくれていれば、鬼に金棒です。
      おかしい内容があったら、是非指摘してくださ~い。

タイトルとURLをコピーしました