NCプログラミングの第一歩 Gコードの基本を学ぶ


NCプログラミングの第一歩:Gコードの基本を学ぶ

はじめに:NCプログラミングの世界へようこそ

製造業の現場で、複雑な形状の部品を高い精度で、しかも効率的に大量生産することを可能にしている技術の一つに、NC(Numerical Control、数値制御)プログラミングがあります。NC工作機械は、あらかじめ作成された数値データ(プログラム)に基づいて、工具やテーブルを自動で正確に動かし、材料を削ったり、穴を開けたりする機械です。

NCプログラミングは、このNC工作機械を「どう動かすか」を指示する言語のようなものです。例えるなら、料理のレシピのようなもので、材料をどのように、どの順番で、どのくらいの火力で調理するか、といった手順と条件を細かく記述します。この「レシピ」にあたるものがNCプログラムであり、その最も基本的な構成要素となるのが「Gコード」と「Mコード」です。

「Gコード」は「準備機能」とも呼ばれ、機械がどのような種類の動作を行うか(例:直線で動く、円弧で動く、穴を開けるなど)を指示します。「Mコード」は「補助機能」と呼ばれ、機械の付帯的な動作(例:主軸を回す、切削油を出す、工具を交換するなど)を指示します。

NCプログラミングを学ぶことは、現代の製造業において非常に価値のあるスキルです。特に、設計通りの部品を確実に作り出すためには、プログラムが機械の動きを正確に制御できる必要があります。また、プログラムを理解することで、機械の挙動を予測し、加工トラブルを未然に防ぐことにも繋がります。

この記事は、NCプログラミングに初めて触れる方、特にGコードの基本を学びたい方を対象としています。GコードとMコードがどのように構成され、どのような役割を果たしているのかを、主要なコードを中心に詳細に解説します。約5000語のボリュームで、それぞれのコードの意味や使い方、実際のプログラム例などを深く掘り下げていきます。この記事を通して、NCプログラミングの基礎をしっかりと理解し、さらなる学習や実務へのステップとするための一助となれば幸いです。

NC工作機械とNCプログラミングの全体像

Gコードについて学ぶ前に、NC工作機械がどのようなもので、NCプログラミングがその中でどのような位置づけにあるのかを理解しておきましょう。

NC工作機械の種類とNC化のメリット

代表的なNC工作機械には、以下のようなものがあります。

  • NC旋盤: 主に円筒形状の材料を回転させ、固定した工具で材料の外周や内径、端面などを削る機械です。NC化により、テーパー加工、円弧加工、ねじ切り加工などが高精度かつ自動で行えるようになりました。
  • NCフライス盤 / マシニングセンタ (MC): 回転する工具(エンドミル、ドリルなど)を移動させて、固定された材料の平面、溝、ポケット、穴などを加工する機械です。マシニングセンタは自動工具交換装置(ATC)を備え、多数の工具を使った複雑な加工を連続して行えます。NC化により、複雑な3次元形状の加工や、多数の穴加工などを効率的に行うことが可能です。
  • NCワイヤカット放電加工機: 細いワイヤ電極線に電気を流し、金属を溶かして加工する機械です。複雑な曲線形状や細かい形状の加工に適しています。
  • NCレーザー加工機: レーザー光を使って材料を切断したり、彫刻したりする機械です。非接触加工であり、様々な材料に対応できます。

NC工作機械の最大のメリットは、高い加工精度と再現性です。人の手による操作では難しい微細な動きや、繰り返し全く同じ加工を行うことが可能です。また、自動化による生産性の向上も大きな利点です。一度プログラムを作成すれば、オペレーターは段取りや監視に集中でき、複数台の機械を担当することも可能になります。さらに、複雑な形状の加工もプログラムによって容易に行えるため、加工の自由度が格段に向上します。

NCシステムの基本構成

NC工作機械は、大きく以下の要素で構成されています。

  1. 機械本体: 主軸、テーブル、ベッド、コラムなど、加工を行うための基本的な構造部。
  2. NC装置 (CNC: Computerized Numerical Control): NCプログラムを読み込み、解釈し、機械を制御する頭脳部です。近年はコンピューターが内蔵されたCNCが主流です。オペレーターはNC装置の操作パネルを使ってプログラムの入力、編集、実行、監視を行います。
  3. サーボシステム: NC装置からの指令を受けて、主軸や各軸(X, Y, Zなど)を正確な速度と位置に動かすためのシステムです。サーボモータ、サーボドライバ、位置検出器(エンコーダなど)で構成されます。
  4. 駆動部: サーボモータの回転を主軸の回転や各軸の直線移動に変換する機構です。ボールねじなどがよく使われます。

NCプログラミングは、このNC装置が読み込むためのデータを作成する作業です。

NCプログラミングのワークフロー

一般的なNCプログラミングのワークフローは以下のようになります。

  1. 設計: 加工したい部品の形状や寸法を設計します。CAD (Computer Aided Design) ソフトが使われることが一般的です。
  2. CAM (Computer Aided Manufacturing): CADデータをもとに、どのように工具を動かして加工するか(工具経路、切削条件など)を計画します。この工具経路情報から、NC装置が理解できるGコードやMコードのプログラムを自動的に生成するのがCAMソフトの役割です。複雑な形状や多軸加工ではCAMが必須となります。
  3. プログラミング: CAMで生成されたプログラムを必要に応じて編集したり、簡単な形状の場合は手書きでプログラムを作成したりします。NCプログラミングの知識(Gコード、Mコード、座標系など)がここで活きてきます。
  4. シミュレーション: 作成したNCプログラムが意図した通りに機械を動かすか、干渉がないかなどをコンピューター上で確認します。加工シミュレーションソフトが使われます。
  5. 機械での実行: シミュレーションで問題がなければ、NCプログラムを実際のNC工作機械に転送し、材料をセットして加工を実行します。初めての加工では、低速で試運転したり、空運転(工具をワークに近づけずに動かす)で確認したりすることが重要です。

この記事で扱うGコードとMコードは、上記の「プログラミング」の段階、特にCAMが出力するプログラムを理解・修正したり、簡単なプログラムを手書きしたりする上で不可欠な知識です。

GコードとMコードの関係性

NCプログラムは、一般的に「ブロック」と呼ばれる行の集まりで構成されています。各ブロックには、機械に実行させたい一つの指示が含まれます。

N100 G01 X100.0 Y50.0 F200;

この例は1つのブロックです。このブロックの中には、GコードとMコード、そしてそれに関連する数値データが含まれます。

  • Gコード(準備機能): 機械がこれからどのような種類の動作を行うかを示します。「準備機能」と呼ばれるのは、続く座標値などの情報と組み合わされて、具体的な動作(例:「X100.0、Y50.0の位置まで直線で動く」)を定義する「準備」をするからです。Gコードは、同じグループに属するコードを指定した場合、後に指定されたものが有効になります(モーダル性)。ただし、G04のような一部のGコードは指定されたブロックでのみ有効です(ノンモーダル性)。
  • Mコード(補助機能): 加工そのものではなく、主軸の回転、切削油のON/OFF、工具交換など、機械の付帯的な動作を指示します。「補助機能」とも呼ばれます。Mコードも多くはモーダルですが、ノンモーダルなものもあります。一つのブロックに複数のMコードを指定できる場合とできない場合があります。

一つのブロック内には、原則として一つのGコード(ただし、Gコードによっては同じブロック内で複数指定可能な場合もあります)と複数のMコードを含めることができます。これらのコードと座標値、送り速度、主軸回転速度などのパラメータを組み合わせて、機械の複雑な動きや機能を制御します。

Gコードの基本構造と書式

NCプログラムは、行(ブロック)の集まりで構成されます。各ブロックには、機械に実行させるための指令が記述されます。基本的な書式要素を見ていきましょう。

一般的なNCプログラムのブロック書式は、以下の要素が組み合わされて構成されます。

Nxxx Gxx Gxx ... Xnnn Ynnn Znnn ... Fnnn Snnn Tnn Mxx Mxx ... ;

それぞれの要素について詳しく見ていきます。

ブロック (Block)

NCプログラムの一行ごとのまとまりを「ブロック」と呼びます。機械はプログラムをブロック単位で読み込み、解釈し、実行します。ブロックの終わりは通常、改行コードまたはEOB (End Of Block) コード(多くの場合、セミコロン;)で区切られます。

N100 G01 X100.0 Y50.0 F200; ← これが1ブロック

シーケンス番号 (Sequence Number / N)

Nxxx の形式で記述されます。プログラムの各ブロックに付ける番号です。必須ではありませんが、付けておくとプログラムの可読性が向上し、編集やデバッグの際に特定のブロックを探しやすくなります。また、M98コードでサブルーチンを呼び出す際に、呼び出したいサブルーチンの開始ブロック番号を指定するために使用することもあります。番号は通常、昇順に付けられます(例: N10, N20, N30…)。

N10 G90 G54;
N20 G00 X0 Y0 Z10.0;
N30 G01 Z-5.0 F100;

Gコード (準備機能 / Preparatory Function)

Gxx の形式で記述されます。「Geometory」(幾何学)または「General」(一般的)の頭文字とも言われます。機械の動作モードを指定します。例:直線補間、円弧補間、早送り、座標系設定、補正機能など。

G00 (早送り)
G01 (直線補間)
G02 (円弧補間 時計回り)
G90 (絶対指令)
G91 (増分指令)

Mコード (補助機能 / Miscellaneous Function)

Mxx の形式で記述されます。「Machine」(機械)または「Miscellaneous」(補助的)の頭文字とも言われます。加工そのものではない、機械の付帯的な機能やプログラムの制御を指示します。例:主軸回転、切削油ON/OFF、工具交換、プログラム停止/終了など。

M03 (主軸正転)
M05 (主軸停止)
M08 (切削油ON)
M30 (プログラム終了・巻戻し)

座標値 (X, Y, Z, I, J, K, R)

工具やテーブルの移動先の位置を指定します。各軸の終点位置や、円弧補間における円弧の中心点などを指定するために使用します。数値は、設定されている単位系(メートルまたはインチ)で記述します。

  • Xnnn, Ynnn, Znnn: 各軸の終点座標を指定します。
  • Inn, Jnn, Knn: 円弧補間(G02, G03)において、円弧の始点から中心点までの各軸方向への距離を指定します。IはX方向、JはY方向、KはZ方向です。
  • Rnnn: 円弧補間(G02, G03)において、円弧の半径を指定します。I,J,K指定の代わりにR指定も可能です。

G01 X100.0 Y50.0; ← X=100.0, Y=50.0の位置へ直線移動
G02 X50.0 Y0 I50.0 J50.0; ← 円弧補間(終点X50.0 Y0、中心点X座標は始点から+50.0、Y座標は始点から+50.0)

送り速度 (Feed Rate / F)

Fnnn の形式で記述されます。工具が材料を切削しながら移動する速度を指定します。通常は、毎分あたりの移動量(例: mm/min)で指定します。G01などの切削移動を伴うGコードとセットで指定します。G00(早送り)は機械の最高速度で移動するため、Fコードは不要(または無視)されます。

G01 X100.0 Y50.0 F200; ← 毎分200mmの速度でX100.0 Y50.0へ移動

主軸回転速度 (Spindle Speed / S)

Snnn の形式で記述されます。主軸の回転速度を指定します。通常は毎分あたりの回転数(例: min-1 または rpm)で指定します。M03(正転)やM04(逆転)などの主軸回転指令と組み合わせて使用します。

S1500 M03; ← 主軸を毎分1500回転で正転させる

工具番号 (Tool Number / T)

Tnn または Tnnnn の形式で記述されます。使用する工具を指定します。マシニングセンタなどで自動工具交換を行う場合、呼び出したい工具の番号を指定するために使用します。M06(工具交換)とセットで使われることが多いです。

T01 M06; ← 工具マガジンの1番の工具に交換する

その他のパラメータ (D, Hなど)

工具補正番号などを指定するために使用します。

  • Dnn: 工具径補正のオフセット番号を指定します。G41/G42(工具径補正)と組み合わせて使用します。
  • Hnn: 工具長補正のオフセット番号を指定します。G43/G44(工具長補正)と組み合わせて使用します。

G43 H01 Z10.0; ← 工具長補正1番を有効にし、Z10.0へ移動
G01 X50.0 Y50.0 G41 D01 F100; ← 工具径補正1番(左方向)を有効にし、切削を開始

コメント (;)

セミコロン ; より後ろに記述された内容は、機械はプログラムとしては実行せず、無視します。プログラムの内容を説明したり、一時的に実行したくないブロックを無効にしたりするために使用します。可読性を高めるために積極的に活用しましょう。

N10 G90 G54; (ワーク座標系G54を選択)
N20 G00 X0 Y0 Z10.0; (安全面 Z10.0へ早送り)

基本的なプログラムの書式例

以下の例は、NCプログラムの基本的なブロック構成を示しています。

gcode
% (プログラム開始コード - 機械によっては不要)
O0001 (プログラム番号)
N10 G90 G54; (絶対指令、ワーク座標系G54選択)
N20 G17 G21; (XY平面選択、メートル入力)
N30 T01 M06; (工具1番に交換)
N40 G43 H01 Z10.0; (工具長補正1番有効、Z10.0へ移動)
N50 S1500 M03; (主軸1500回転正転)
N60 G00 X0 Y0; (X0 Y0へ早送り)
N70 G01 Z-5.0 F100; (Z-5.0まで切削、送り100mm/min)
N80 G41 D01 X10.0 Y0 F150; (工具径補正1番左有効、X10.0 Y0へ切削移動、送り150mm/min)
N90 G01 Y50.0; (Y50.0へ直線切削)
N100 X60.0; (X60.0へ直線切削)
N110 Y0; (Y0へ直線切削)
N120 G40 X0 Y0; (工具径補正キャンセル、X0 Y0へ移動)
N130 G00 Z10.0; (Z10.0へ早送り)
N140 G28 G91 Z0; (Z軸基準点復帰)
N150 G28 G91 X0 Y0; (XY軸基準点復帰)
N160 M05; (主軸停止)
N170 M30; (プログラム終了・巻戻し)
% (プログラム終了コード - 機械によっては不要)

このように、各ブロックには必要な情報が順に記述されます。機械はこれらの情報を解釈し、指定された動作を実行していきます。

主要なGコードの詳細解説

ここでは、NCプログラミングで頻繁に使用される主要なGコードについて、それぞれの機能、書式、使用例、注意点を詳しく解説します。Gコードは非常に多くの種類がありますが、まずはこれらの基本的なコードを理解することがNCプログラミング習得の第一歩となります。

移動指令 (Motion Commands)

加工経路に沿って工具を移動させるためのGコードです。最も基本的なGコードと言えます。

  • G00 (早送り / Rapid Traverse)

    • 機能: 工具を加工物に干渉しない安全な経路で、可能な限り速く移動させるための指令です。切削を行わないときの移動に使います。
    • 書式: G00 X... Y... Z...; または G0 X... Y... Z...;
      • 指定した座標まで早送りで移動します。複数の軸を同時に指定できます。
    • 使用例:
      gcode
      N10 G00 X100.0 Y50.0; (現在位置からX100.0 Y50.0へ早送り)
      N20 G00 Z10.0; (Z軸方向へZ10.0まで早送り)
      N30 G00 X0 Y0 Z10.0; (X0 Y0 Z10.0へ早送り)
    • 注意点: G00は切削を行わない移動のため、工具経路上の障害物やワークとの干渉に十分注意が必要です。特に、Z軸の早送りは、ワーク上面やクランプに衝突する危険があるため、必ず安全な高さ(Z10.0など)まで退避させてから水平移動を行うのが一般的です。早送り速度は機械のパラメータで設定されており、Fコードを指定しても無視されます(一部の機械ではG00にFを指定して制御できる場合もありますが、一般的ではありません)。
  • G01 (直線補間 / Linear Interpolation)

    • 機能: 現在位置から指定された座標まで、設定された送り速度(F)で直線的に工具を移動させるための指令です。切削加工の基本となる移動指令です。
    • 書式: G01 X... Y... Z... F...; または G1 X... Y... Z... F...;
      • 指定した座標まで、指定した送り速度で直線移動します。Fコードの指定は必須です(直前のG01ブロックでFを指定していれば省略可能ですが、明示的に指定するのが安全です)。
    • 使用例:
      gcode
      N10 G01 X100.0 Y50.0 F200; (現在位置からX100.0 Y50.0へ毎分200mmで直線移動)
      N20 G01 Z-5.0 F100; (Z-5.0まで毎分100mmで直線切削)
      N30 G01 X50.0; (Y座標は変更せず、X50.0まで直線移動)
    • 注意点: G01は切削を伴う移動なので、送り速度(F)の設定が重要です。材料、工具、加工条件に合わせて適切な送り速度を設定しないと、加工不良や工具の破損につながります。複数の軸を同時に指定した場合、全ての軸が終点に同時に到達するように補間演算が行われます。
  • G02 (円弧補間 時計回り / Circular Interpolation CW)

    • 機能: 現在位置から指定された終点まで、設定された送り速度(F)で時計回りの円弧を描いて工具を移動させるための指令です。円弧加工に使用します。
    • 書式: 円弧の中心点の指定方法により、主に2つの方法があります。
      • 方法1: I, J, K による中心点指定
        G02 X... Y... Z... I... J... K... F...;

        • 終点座標 (X, Y, Z) と、現在位置から円弧の中心点までの各軸方向の増分距離 (I, J, K) を指定します。IはX方向、JはY方向、KはZ方向の距離です。円弧補間を行う平面(G17, G18, G19で選択)によって、使用するI, J, Kが異なります(例: XY平面ならI, Jを使用)。
      • 方法2: R による半径指定
        G02 X... Y... Z... R... F...;

        • 終点座標 (X, Y, Z) と、円弧の半径 (R) を指定します。
    • 使用例 (XY平面 G17が有効な場合):
      “`gcode
      ; 例1: I, J で中心点指定 (現在位置 X0 Y0 から X10 Y10 まで中心 X0 Y10 の円弧)
      N10 G17; (XY平面選択)
      N20 G01 X0 Y0 F100; (始点へ移動)
      N30 G02 X10.0 Y10.0 I0 J10.0 F100; (終点X10 Y10、中心点Xは始点から+0、Yは始点から+10の円弧)

      ; 例2: R で半径指定 (現在位置 X0 Y0 から X10 Y10 まで半径 10 の円弧)
      N40 G01 X0 Y0 F100; (始点へ移動)
      N50 G02 X10.0 Y10.0 R10.0 F100; (終点X10 Y10、半径10の円弧)
      “`
      * 注意点: 円弧補間を行うには、事前にG17 (XY), G18 (ZX), G19 (YZ) のいずれかで加工平面を選択しておく必要があります。I, J, K 指定の場合、指定した中心点が始点と終点から等距離(半径)でないとエラーになることがあります。R 指定の場合、始点と終点が重なる場合(真円)はR指定だけでは円の特定ができないため、I, J, K 指定や特殊なR指定(R0で真円を指定するなど、機械により異なる)が必要になります。また、R指定で180度を超える円弧を描く場合は、多くの機械でR値にマイナスを付けて区別します(例: -R10.0)。

  • G03 (円弧補間 反時計回り / Circular Interpolation CCW)

    • 機能: 現在位置から指定された終点まで、設定された送り速度(F)で反時計回りの円弧を描いて工具を移動させるための指令です。円弧加工に使用します。
    • 書式: G02と全く同じ書式です。
      • 方法1: I, J, K による中心点指定
        G03 X... Y... Z... I... J... K... F...;
      • 方法2: R による半径指定
        G03 X... Y... Z... R... F...;
    • 使用例 (XY平面 G17が有効な場合):
      “`gcode
      ; 例1: I, J で中心点指定 (現在位置 X0 Y0 から X10 Y10 まで中心 X10 Y0 の円弧)
      N10 G17; (XY平面選択)
      N20 G01 X0 Y0 F100; (始点へ移動)
      N30 G03 X10.0 Y10.0 I10.0 J0 F100; (終点X10 Y10、中心点Xは始点から+10、Yは始点から+0の円弧)

      ; 例2: R で半径指定 (現在位置 X0 Y0 から X10 Y10 まで半径 10 の反時計回り円弧)
      N40 G01 X0 Y0 F100; (始点へ移動)
      N50 G03 X10.0 Y10.0 R10.0 F100; (終点X10 Y10、半径10の反時計回り円弧)
      “`
      * 注意点: G02と同様、G17, G18, G19での平面選択が必要です。I, J, KやRの指定方法はG02と同じですが、移動方向が反時計回りになります。

  • G04 (ドウェル / Dwell)

    • 機能: 機械の動きを一時的に停止させるための指令です。指定した時間またはパルス数だけ停止します。穴加工の底面で工具を止めて面をきれいにしたり、切りくずを排出したりするために使われることがあります。
    • 書式: G04 P...; または G04 X...;
      • P...: 指定した時間(通常はミリ秒、一部の機械では秒)だけ停止します。P値は整数で指定することが多いです。
      • X...: 指定した時間(通常は秒)だけ停止します。X値は小数点以下も指定できることが多いです。
    • 使用例:
      gcode
      N10 G01 Z-10.0 F50; (Z-10.0まで切削)
      N20 G04 P500; (500ミリ秒停止)
      N30 G04 X1.0; (1.0秒停止)
      N40 G01 Z0 F200; (Z0まで戻る)
    • 注意点: PとXのどちらで時間を指定するか、また単位がミリ秒なのか秒なのかは、機械の仕様(パラメータ設定)によって異なります。機械のマニュアルで確認が必要です。G04はモーダル性を持たない(指定したブロックでのみ有効な)Gコードです。

座標系指令 (Coordinate System Commands)

機械やワークの位置をどのように認識するか、基準点を設定・選択するためのGコードです。

  • G90 (絶対指令 / Absolute Command)

    • 機能: 指定する座標値が、現在有効なワーク座標系原点からの絶対的な距離であることを指示します。NCプログラムでは最も一般的に使用される座標指令方法です。
    • 書式: G90; または G90 G01 X... Y... Z... F...; のように、他の移動指令と組み合わせて使用します。
    • 使用例:
      gcode
      N10 G90; (以降、絶対指令が有効)
      N20 G00 X10.0 Y20.0; (ワーク原点からX=10.0, Y=20.0の位置へ早送り)
      N30 G01 Z-5.0 F100; (ワーク原点からZ=-5.0まで切削)
      N40 G01 X30.0 Y40.0; (ワーク原点からX=30.0, Y=40.0の位置へ直線移動)
    • 注意点: プログラム開始時にはG90が有効になっていることが多いですが、念のためプログラムの先頭で明示的に指定するのが安全です。G90が有効な状態でG91を指定すると、G91が有効になります。
  • G91 (増分指令 / Incremental Command)

    • 機能: 指定する座標値が、現在位置からの増分的な距離であることを指示します。例えば、X10.0と指定すると、現在位置からX軸方向に+10.0だけ移動します。同じ間隔で繰り返し移動する加工などに便利です。
    • 書式: G91; または G91 G01 X... Y... Z... F...; のように、他の移動指令と組み合わせて使用します。
    • 使用例:
      gcode
      N10 G90 G00 X10.0 Y20.0 Z10.0; (ワーク原点からX10.0 Y20.0 Z10.0へ早送り)
      N20 G91; (以降、増分指令が有効)
      N30 G01 Z-5.0 F100; (現在位置(Z10.0)からZ方向に-5.0、つまりZ5.0へ切削)
      N40 G01 Y10.0; (現在位置(Y20.0)からY方向に+10.0、つまりY30.0へ直線移動)
      N50 G01 X10.0; (現在位置(X10.0)からX方向に+10.0、つまりX20.0へ直線移動)
    • 注意点: 増分指令は、現在位置を常に意識する必要があります。プログラムミスがあると、意図しない位置へ大きく移動してしまう危険があるため、特に注意が必要です。G91が有効な状態でG90を指定すると、G90が有効になります。基準点復帰(G28)など、特定のGコードはG91と組み合わせて使用することが一般的です。
  • G54 – G59 (ワーク座標系選択 / Work Coordinate System Selection)

    • 機能: NC工作機械には、機械そのものの基準点である「機械座標系」とは別に、加工したいワークの基準点(原点)を設定できる「ワーク座標系」の機能があります。G54からG59(機械によってはさらに多くのワーク座標系を使える場合もあります)は、登録された複数のワーク座標系の中から、現在有効にするものを選択するためのGコードです。これにより、ワークを機械上のどこにセットしても、プログラムはワーク原点を基準に作成できます。
    • 書式: Gxx; (xxは54, 55, 56, 57, 58, 59のいずれか)
    • 使用例:
      gcode
      N10 G90 G54; (絶対指令、ワーク座標系G54を選択)
      N20 G00 X0 Y0 Z10.0; (G54の原点からX0 Y0 Z10.0へ早送り)
      ...加工...
      N100 G55; (ワーク座標系G55を選択)
      N110 G00 X0 Y0 Z10.0; (G55の原点からX0 Y0 Z10.0へ早送り)
      ...加工...
    • 注意点: ワーク座標系の設定方法は機械によって異なります(手動で入力、プローブで測定など)。プログラムを実行する前に、使用するワーク座標系に正しい原点位置が設定されているか確認が必要です。
  • G28 (基準点復帰 / Return to Reference Point)

    • 機能: 機械座標系の基準点(ホームポジションとも呼ばれます)に、中間点を経由して自動的に戻るための指令です。工具交換や加工終了後に、安全な位置に工具を退避させるためによく使用されます。通常、G91(増分指令)と組み合わせて使用します。
    • 書式: G28 G91 X... Y... Z...;
      • 指定した座標 (X, Y, Z) を中間点として経由し、機械の基準点に戻ります。G91が有効な場合、指定したX, Y, Zは現在位置からの増分距離となります。通常は、Z軸のみを先に基準点復帰させ、その後XY軸を基準点復帰させます。
    • 使用例:
      gcode
      N100 G00 Z10.0; (ワーク上面から安全な高さに退避)
      N110 G28 G91 Z0; (Z軸の基準点に戻る)
      N120 G28 G91 X0 Y0; (XY軸の基準点に戻る)
    • 注意点: 機械の基準点位置は、機械の立ち上げ時に原点復帰動作によって設定されます。G28を使用する前に、機械が正しく原点復帰されている必要があります。G28の動作(中間点の経由方法など)は機械によって若干異なる場合があります。
  • G30 (第2基準点復帰 / Return to 2nd Reference Point)

    • 機能: G28と同様に、事前に設定された第2の基準点に、中間点を経由して自動的に戻るための指令です。パレットチェンジャ付きの機械などで、加工位置とは異なる位置を工具交換位置やパレット交換位置として設定したい場合に使用することがあります。通常、G91と組み合わせて使用します。
    • 書式: G30 G91 X... Y... Z...;
      • 指定した座標 (X, Y, Z) を中間点として経由し、機械の第2基準点に戻ります。G91が有効な場合、指定したX, Y, Zは現在位置からの増分距離となります。
    • 注意点: 第2基準点位置も機械のパラメータで設定されます。使用頻度はG28ほど高くありません。

平面選択 (Plane Selection)

円弧補間や工具径補正などの機能は、どの平面上で行うかを指定する必要があります。

  • G17 (XY平面選択)
    • 機能: X軸とY軸で構成される平面を選択します。フライス加工などで最も一般的に使用されます。
    • 書式: G17;
  • G18 (ZX平面選択)
    • 機能: Z軸とX軸で構成される平面を選択します。旋盤加工の倣い加工や、フライス盤での傾斜面の円弧加工などで使用されます。
    • 書式: G18;
  • G19 (YZ平面選択)
    • 機能: Y軸とZ軸で構成される平面を選択します。フライス盤での傾斜面の円弧加工などで使用されます。
    • 書式: G19;
    • 使用例:
      gcode
      N10 G17; (XY平面を選択 - 以降の円弧補間や工具径補正はこの平面で行われる)
      N20 G02 X50.0 Y50.0 I25.0 J0 F100; (XY平面での円弧補間)
      N30 G18; (ZX平面を選択)
      N40 G03 X10.0 Z5.0 I0 K-5.0 F50; (ZX平面での円弧補間)
    • 注意点: プログラム開始時にはG17が有効になっていることが多いですが、明示的に指定するのが良いでしょう。特に3次元加工などで平面を切り替える場合は必須です。

単位系選択 (Unit Selection)

プログラムで使用する寸法の単位を指定します。

  • G20 (インチ入力)
    • 機能: プログラム中の座標値や送り速度などの数値をインチ単位として解釈するように機械に指示します。
    • 書式: G20;
  • G21 (メートル入力)
    • 機能: プログラム中の座標値や送り速度などの数値をミリメートル単位として解釈するように機械に指示します。日本の製造業では一般的にメートル入力が使用されます。
    • 書式: G21;
    • 使用例:
      gcode
      N10 G21; (メートル入力モードにする)
      N20 G01 X100.0 Y50.0 F200; (X100.0mm, Y50.0mm へ、送り速度200mm/min で移動)
      ...
      N100 G20; (インチ入力モードにする)
      N110 G01 X4.0 Y2.0 F10.0; (X4.0inch, Y2.0inch へ、送り速度10inch/min で移動)
    • 注意点: G20/G21は、プログラムの先頭で必ず使用する単位系に合わせて指定する必要があります。誤った単位系でプログラムを実行すると、ワークや機械に重大な損傷を与える可能性があります。

サイクル指令 (Canned Cycles)

特定の繰り返しパターンを持つ加工(穴あけ、ねじ切り、ポケット加工など)を、少ないブロック数で実行できるようにまとめられた便利なGコードです。機械の種類(旋盤、フライス盤)によって利用できるサイクルは異なります。ここでは、フライス盤/マシニングセンタで一般的な穴あけサイクルを例に挙げます。

  • G81 (シンプル穴あけサイクル)
    • 機能: 指定した位置まで早送りで下降し、設定されたZ座標まで直線送りで穴を開け、素早く(早送りまたは設定速度で)引き上げる穴あけサイクルです。
    • 書式: G81 X... Y... Z... R... F... K...;
      • X... Y...: 穴を開けるXY座標を指定します。複数行にわたって指定することも可能です。
      • Z...: 穴の底面のZ座標(絶対値またはR点からの相対値)を指定します。
      • R...: アプローチ(早送り)から切削送りへの切り替え点(R点)のZ座標を指定します。通常はワーク上面より少し上の安全な位置に設定します。
      • F...: 切削送りの速度を指定します。
      • K...: 同じ位置でサイクルを繰り返す回数を指定します(省略可能、省略時は1回)。
    • 使用例 (XY平面 G17が有効な場合):
      gcode
      N10 G90 G54 G17 G21;
      N20 T01 M06; (ドリルに交換)
      N30 G43 H01 Z10.0; (工具長補正)
      N40 S1000 M03; (主軸回転)
      N50 G99 G81 X20.0 Y20.0 Z-10.0 R2.0 F50; (X20 Y20に穴あけ)
      N60 X50.0 Y20.0; (X50 Y20に穴あけ - 前ブロックのG81はモーダルなので有効)
      N70 X20.0 Y50.0; (X20 Y50に穴あけ)
      N80 G80; (穴あけサイクルキャンセル)
      N90 G00 Z10.0;
      ...
    • 注意点:
      • サイクルの開始前には、G98(R点への戻り)またはG99(開始点への戻り)のどちらを有効にするか指定します。G99が一般的で、穴を開けるたびにR点まで工具が戻ります。
      • サイクルの終了時には、必ずG80でサイクルをキャンセルする必要があります。キャンセルしないと、以降の座標指令が全て穴あけサイクルとして実行されてしまい危険です。
      • 穴あけサイクルにはG81の他にも、切りくず排出のためのQ値(切り込み量)を指定できるG83(深穴加工サイクル)、底面で一時停止するG82(座ぐりサイクル)、ねじ切り加工サイクル(G84, G74)など、様々な種類があります。

工具径補正・工具長補正 (Cutter Compensation, Tool Length Offset)

工具の物理的な形状や長さを考慮してプログラムを作成するための機能です。これにより、プログラム上で指定する加工経路を、工具の中心経路ではなく、ワークの輪郭に合わせることが可能になります。

  • 工具長補正: 工具を交換したり、再研磨したりすると、工具の長さが変わります。工具長補正機能を使うことで、Z軸方向のプログラム原点から工具先端までの距離を、工具ごとに補正することができます。

    • G43 (工具長補正 プラス方向)
      • 機能: 工具長補正データ(オフセット番号Hで指定)を有効にし、Z軸方向にオフセット値を加算して工具を移動させます。一般的に、工具長を登録しておき、ワーク原点から工具先端までの距離を補正するために使用します。
      • 書式: G43 Hnn Z...;
        • Hnn: 呼び出す工具長補正データのオフセット番号を指定します。この番号に対応する補正値(工具長)は、NC装置のオフセット画面に事前に登録しておきます。
        • Z...: 目標とするZ座標を指定します。G43 Hnn が有効になると、指定したZ座標に工具先端が来るように、Z軸が自動的に動きます。
      • 使用例:
        gcode
        N10 G90 G54 G21;
        N20 T01 M06; (工具1番に交換)
        N30 G43 H01 Z10.0; (工具長補正1番有効、Z10.0mmまで移動 - 補正値が適用され、工具先端がZ10.0に来る)
        N40 G01 Z-5.0 F100; (Z-5.0まで切削 - 補正値が有効なまま)
      • 注意点: G43は、通常Z軸の移動指令と同時に指定します。G43が有効な間は、後続のZ軸指令に常に補正値が適用されます。
    • G44 (工具長補正 マイナス方向)
      • 機能: G43とは逆に、オフセット値を減算して補正を行います。あまり一般的ではありません。
      • 書式: G44 Hnn Z...;
    • G49 (工具長補正キャンセル)
      • 機能: 有効になっている工具長補正をキャンセルします。
      • 書式: G49; または G00 Z10.0 G49; のように他の移動指令と組み合わせて使います。
      • 使用例:
        gcode
        N100 G00 Z10.0 G49; (Z10.0へ早送りし、工具長補正をキャンセル)
  • 工具径補正: 主にフライス加工で、工具の直径や摩耗量を補正するために使用します。プログラムではワークの輪郭を基準に経路を指定し、実際の工具中心の経路は機械が工具径補正値に基づいて自動で計算します。これにより、工具が摩耗してもオフセット値を修正するだけで対応でき、プログラムの修正が不要になります。

    • G41 (工具径補正 左 / Cutter Compensation Left)
      • 機能: 加工方向に対して工具が常にワークの左側に来るように、工具径補正データ(オフセット番号Dで指定)を有効にします。外周加工や溝加工に使用します。
      • 書式: G41 Dnn X... Y... F...; のように、平面内の移動指令(G01, G02, G03)とともに使用します。
        • Dnn: 呼び出す工具径補正データのオフセット番号を指定します。この番号に対応する補正値(工具半径または直径)は、NC装置のオフセット画面に事前に登録しておきます。
        • X... Y...: 補正を開始するための移動終点座標を指定します。G41はこの移動ブロックから有効になります。
    • G42 (工具径補正 右 / Cutter Compensation Right)
      • 機能: 加工方向に対して工具が常にワークの右側に来るように、工具径補正データ(オフセット番号Dで指定)を有効にします。内周加工に使用します。
      • 書式: G42 Dnn X... Y... F...; のように、平面内の移動指令(G01, G02, G03)とともに使用します。
    • G40 (工具径補正キャンセル)
      • 機能: 有効になっている工具径補正をキャンセルします。補正開始と同様に、キャンセルも直線または円弧移動指令と同時に行います。
      • 書式: G40 X... Y...; のように、平面内の移動指令とともに使用します。
    • 使用例 (四角形の外周を工具径補正を使って切削):
      “`gcode
      ; 外周加工のプログラム原点を四角形の左下コーナー(X0 Y0)とし、
      ; サイズ100x50mmの四角形を加工する場合
      ; 工具径補正値 D01 に工具半径を登録しておく

      N10 G90 G54 G17 G21;
      N20 T02 M06; (工具2番に交換)
      N30 G43 H02 Z10.0; (工具長補正)
      N40 S2000 M03; (主軸回転)
      N50 G00 X-10.0 Y-10.0; (加工開始位置へ早送り – ワークの外側)
      N60 G01 Z-5.0 F100; (切削深さまで下降)
      N70 G41 D01 X0 Y-10.0 F150; (工具径補正G41 D01を有効にしながらY-10.0からY0まで切削開始準備)
      N80 G01 Y50.0; (Y50.0まで直線切削 – 工具中心は輪郭から左に工具半径分ずれて移動)
      N90 X100.0; (X100.0まで直線切削)
      N100 Y0; (Y0まで直線切削)
      N110 X0; (X0まで直線切削)
      N120 G40 X-10.0 Y-10.0; (工具径補正をキャンセルしながら開始位置へ戻る)
      N130 G00 Z10.0; (安全高さへ退避)

      “`
      * 注意点: 工具径補正を有効/キャンセルする際は、補正がスムーズに開始/終了できるように、補正開始/終了ブロックでの移動距離を適切に設定する必要があります。また、加工平面(G17/G18/G19)が正しく選択されている必要があります。工具径補正値には、工具半径または工具直径のどちらを登録するかは機械のパラメータ設定によって異なります。

主要なMコードの詳細解説

Mコードは、NC工作機械の付帯機能やプログラムの進行を制御するために使用されます。こちらも頻繁に使用される主要なコードを中心に解説します。

  • M00 (プログラムストップ / Program Stop)

    • 機能: プログラムの実行を一時的に完全に停止させます。主軸や送りも停止します。停止後、オペレーターがスタートボタンを押すことで、次のブロックからプログラムが再開されます。ワークの確認や切りくず除去など、オペレーターの介入が必要な箇所で使用します。
    • 書式: M00;
    • 使用例:
      gcode
      N100 G00 Z10.0; (安全高さへ退避)
      N110 M00; (プログラム一時停止 - ワーク確認などのため)
      N120 G00 X...; (再開後、次の動作へ)
    • 注意点: M00で停止したプログラムは、スタートボタンを押さない限り再開しません。
  • M01 (任意プログラムストップ / Optional Program Stop)

    • 機能: M00と同様にプログラムの実行を一時停止させますが、このM01コードはNC装置の操作パネルにある「オプショナルストップ」スイッチがONになっている場合のみ有効になります。スイッチがOFFの場合はM01コードは無視され、プログラムは停止せずに続行されます。段取り調整や試運転など、必要に応じて停止させたい箇所で使用します。
    • 書式: M01;
    • 使用例:
      gcode
      N100 G00 Z10.0;
      N110 M01; (オプショナルストップONなら停止)
      N120 G00 X...;
    • 注意点: 実際の機械でM01を有効にするには、操作盤のスイッチをONにする必要があります。
  • M02 (プログラム終了 / Program End)

    • 機能: プログラムの実行を終了させます。主軸や送りは停止しますが、プログラムは先頭に戻りません。単一のプログラムを一度だけ実行して終わりたい場合に使用します。
    • 書式: M02;
    • 注意点: M02で終了したプログラムを再度実行するには、NC装置でプログラムを巻き戻す操作が必要です。
  • M30 (プログラム終了・巻戻し / Program End and Rewind)

    • 機能: プログラムの実行を終了させ、同時にプログラムポインタを先頭に戻します。これにより、同じプログラムを繰り返し実行することが容易になります。量産加工などで最も一般的に使用されるプログラム終了コードです。
    • 書式: M30;
    • 注意点: M30が実行されると、次のスタートボタン押下でプログラムの最初から実行が始まります。
  • M03 (主軸正転 / Spindle ON CW)

    • 機能: 主軸を時計回り(工具を下から見て反時計回り)に回転させるための指令です。切削加工を行う際に工具を回転させるために使用します。Sコードで回転速度を指定します。
    • 書式: M03 S...; または S... M03;
      • S...: 主軸の回転速度(rpmなど)を指定します。
    • 使用例:
      gcode
      N10 S1500 M03; (主軸を1500回転で正転開始)
      N20 G01 Z-5.0 F100; (切削)
    • 注意点: 安全のため、主軸回転は工具がワークや機械に干渉しない位置で行うべきです。主軸が完全に指令速度に達するまで、次の移動指令を実行しないように設定されている機械が多いですが、確認が必要です。
  • M04 (主軸逆転 / Spindle ON CCW)

    • 機能: 主軸を反時計回り(工具を下から見て時計回り)に回転させるための指令です。左ねじ切りや特定の加工に使用します。Sコードで回転速度を指定します。
    • 書式: M04 S...; または S... M04;
    • 使用例:
      gcode
      N10 S500 M04; (主軸を500回転で逆転開始)
      N20 G01 Z-5.0 F50; (切削)
    • 注意点: M03と同様、安全な位置で回転開始する必要があります。
  • M05 (主軸停止 / Spindle OFF)

    • 機能: 回転している主軸を停止させるための指令です。加工終了後や工具交換前などに使用します。
    • 書式: M05;
    • 使用例:
      gcode
      N100 M05; (主軸停止)
      N110 M06; (工具交換)
    • 注意点: 工具交換(M06)の前に主軸を停止させるのが一般的です。
  • M06 (工具交換 / Tool Change)

    • 機能: 自動工具交換装置(ATC)を備えたマシニングセンタなどで、現在使用している工具をマガジンに戻し、指定された工具番号の工具を主軸に装着するための指令です。Tコードで交換したい工具の番号を指定します。
    • 書式: M06 T...; または T... M06;
      • T...: 交換したい工具の番号を指定します。
    • 使用例:
      gcode
      N10 M05; (主軸停止)
      N20 G00 Z安全高さ; (安全な高さへ退避)
      N30 M06 T02; (工具2番に交換)
    • 注意点: 工具交換は安全な位置で行う必要があります。機械のメーカーや機種によって、工具交換位置(M06を実行する座標)が固定されている場合や、プログラムで指定できる場合があります。
  • M08 (切削油ON / Coolant ON)

    • 機能: 切削油(クーラント)の供給を開始するための指令です。加工中の工具やワークを冷却・潤滑し、切りくずを排出するのに役立ちます。
    • 書式: M08;
    • 使用例:
      gcode
      N50 S1500 M03;
      N60 M08; (切削油ON)
      N70 G01 Z-5.0 F100; (切削開始)
    • 注意点: 加工開始直前や切削油が必要な箇所でONにし、加工終了後にはM09でOFFにするのが一般的です。
  • M09 (切削油OFF / Coolant OFF)

    • 機能: 切削油の供給を停止するための指令です。加工終了後や、切削油を使わない移動の前に使用します。
    • 書式: M09;
    • 使用例:
      gcode
      N100 G00 Z10.0;
      N110 M09; (切削油OFF)
      N120 G28 G91 Z0;
  • M98 (サブプログラム呼び出し / Subprogram Call)

    • 機能: 現在実行しているメインプログラムから、別の独立したNCプログラム(サブプログラムまたはサブルーチンと呼ばれる)を呼び出して実行するための指令です。同じ加工パターンを複数箇所で行う場合などに、サブプログラムとしてまとめておくとプログラムが簡潔になります。
    • 書式: M98 Pnnnn Lnn;
      • Pnnnn: 呼び出すサブプログラムのプログラム番号(O番号)を指定します。
      • Lnn: サブプログラムを繰り返し実行する回数を指定します(省略可能、省略時は1回)。
    • 使用例 (メインプログラム):
      gcode
      %
      O0001; (メインプログラム)
      N10 G90 G54 G17 G21;
      N20 T01 M06;
      N30 G43 H01 Z10.0;
      N40 S1000 M03;
      N50 G00 X20.0 Y20.0;
      N60 M98 P0002 L3; (サブプログラムO0002を3回呼び出し)
      N70 G00 X50.0 Y50.0;
      N80 M98 P0002; (サブプログラムO0002を1回呼び出し)
      N90 G00 Z10.0 M05;
      N100 M30;
      %
    • 使用例 (サブプログラム):
      gcode
      %
      O0002; (サブプログラム - 穴あけ例)
      N10 G91; (増分指令に切り替え)
      N20 G01 Z-5.0 F50; (現在位置からZ-5.0切削)
      N30 G04 P500; (ドウェル)
      N40 G00 Z5.0; (元の高さに戻る)
      N50 G90; (絶対指令に戻す - 必須ではないが安全のため)
      N60 M99; (サブプログラム終了 - メインプログラムに戻る)
      %
    • 注意点: サブプログラムの最後には必ずM99を記述して、メインプログラムに戻るようにします。サブプログラム内で座標系(G90/G91)を変更した場合は、サブプログラム終了前に元の設定に戻すか、メインプログラム側で対応する必要があります。
  • M99 (サブプログラム終了 / Subprogram End)

    • 機能: サブプログラムの実行を終了し、M98で呼び出した元のプログラムの次のブロックに制御を戻します。メインプログラムの最後にM99がある場合は、プログラムの先頭に戻り、繰り返し実行されるループプログラムとなります。
    • 書式: M99;
    • 注意点: M98とM99をセットで使用することで、プログラム構造を整理し、繰り返し部分を効率的に記述できます。

プログラミングの実際例

ここでは、これまで学んだ主要なGコードとMコードを使った簡単な加工プログラム例を紹介します。

例1:簡単な四角形(ポケット)のフライス加工

ツールパス:ワーク座標系G54のX0 Y0を基準とし、Z0をワーク上面とする。エンドミルで深さ5mmの100mm x 50mmのポケット加工を行う。

“`gcode
%
O1001 (SIMPLE POCKET)
N10 G90 G54 G17 G21; (絶対指令, WCS G54, XY平面, メートル入力)
N20 T01 M06; (工具1番(エンドミル)に交換)
N30 G43 H01 Z10.0; (工具長補正 H01 有効, Z10.0へ移動)
N40 S2000 M03; (主軸 2000 rpm 正転)
N50 M08; (切削油 ON)

N60 G00 X10.0 Y10.0; (ポケット開始位置X10 Y10へ早送り – 左下コーナーから10mm内側)
N70 G01 Z-5.0 F100; (Z-5.0まで切削下降, 送り100)

N80 G01 Y40.0 F200; (Y40.0まで直線切削, 送り200)
N90 X90.0; (X90.0まで直線切削)
N100 Y10.0; (Y10.0まで直線切削)
N110 X10.0; (X10.0まで直線切削 – 一周)

N120 G00 Z10.0; (安全高さ Z10.0へ早送り退避)
N130 M09; (切削油 OFF)
N140 M05; (主軸停止)

N150 G28 G91 Z0; (Z軸基準点復帰)
N160 G28 G91 X0 Y0; (XY軸基準点復帰)
N170 M30; (プログラム終了・巻戻し)
%
“`
解説:
– N10: 基本設定。G90で絶対座標系を使用し、G54のワーク座標系を選択。XY平面(G17)でメートル単位(G21)。
– N20-N50: 工具交換、工具長補正、主軸回転、切削油ONの初期設定。
– N60: ポケットの左下隅から10mm内側の点へ早送り。ここから切削を開始。
– N70: Z-5.0mmまで切削送りで下降。
– N80-N110: ポケットの周囲を直線補間(G01)で切削。F値は直線切削の送り速度。G01はモーダルなので、一度指定すれば次のGコードが指定されるまで有効。
– N120: 加工終了後、Z軸を安全な高さまで早送りで退避。
– N130-N140: 切削油、主軸停止。
– N150-N160: 機械の基準点へ軸を戻す。G91と組み合わせることで、現在位置からの増分指令となり、安全なルートで基準点に戻る。(実際の機械では、Z軸を先に十分退避させてからXYを戻すのが一般的)
– N170: プログラム終了、ポインタを先頭に戻す。

例2:円(穴またはボス)のフライス加工(円弧補間 G02/G03 使用)

ワーク座標系G54のX50 Y50を円の中心とし、半径20mmの円の外周を深さ3mmで切削。

“`gcode
%
O1002 (CIRCLE PROFILE)
N10 G90 G54 G17 G21; (基本設定)
N20 T02 M06; (工具2番に交換)
N30 G43 H02 Z10.0; (工具長補正)
N40 S2200 M03; (主軸 2200 rpm 正転)
N50 M08; (切削油 ON)

N60 G00 X70.0 Y50.0; (円の開始位置へ早送り – 中心X50 Y50から+X方向に半径20mm)
N70 G01 Z-3.0 F100; (Z-3.0まで切削下降)

N80 G02 X70.0 Y50.0 I-20.0 J0 F150; (終点X70 Y50、中心点X座標は始点から-20、Y座標は始点から+0の時計回り円弧補間)
; または R指定の場合:
; N80 G02 X70.0 Y50.0 R20.0 F150; (終点X70 Y50、半径20mmの時計回り円弧補間)
; R指定で真円を一周する場合は、通常R値の前にR0を指定するか、I,J,K指定を使用します。
; N80 G02 I-20.0 J0 F150; (真円一周のI,J指定)

N90 G00 Z10.0; (安全高さ Z10.0へ早送り退避)
N100 M09; (切削油 OFF)
N110 M05; (主軸停止)

N120 G28 G91 Z0;
N130 G28 G91 X0 Y0;
N140 M30;
%
“`
解説:
– N60: 円の開始点(X=中心X+半径, Y=中心Y)へ移動。
– N80: G02で時計回りの円弧補間。I, J 指定の場合、始点(70,50)から中心点(50,50)までの増分距離 I=50-70=-20, J=50-50=0 を指定。R指定の場合、半径20mmを指定。真円一周の場合は、始点と終点が同じ点になります。

例3:工具径補正を使った四角形(外周)のフライス加工

ワーク座標系G54のX0 Y0を左下コーナーとし、100mm x 50mmの四角形の外周を深さ5mmで加工。工具径補正 D01(工具半径を登録)を使用。

“`gcode
%
O1003 (CONTOUR WITH COMP)
N10 G90 G54 G17 G21;
N20 T03 M06; (工具3番に交換)
N30 G43 H03 Z10.0;
N40 S2500 M03;
N50 M08;

N60 G00 X-10.0 Y-10.0; (補正開始点へ早送り – ワークの外側)
N70 G01 Z-5.0 F100; (切削深さまで下降)

N80 G41 D01 X0 Y-10.0 F150; (工具径補正 G41 D01有効, X0 Y-10.0まで切削開始準備)
N90 G01 Y50.0; (Y50.0まで直線切削 – ワーク輪郭に沿って工具中心が移動)
N100 X100.0; (X100.0まで直線切削)
N110 Y0; (Y0まで直線切削)
N120 X0; (X0まで直線切削)

N130 G40 X-10.0 Y-10.0; (工具径補正 G40 キャンセル, 補正終了点へ移動)
N140 G00 Z10.0;
N150 M09; M05;

N160 G28 G91 Z0;
N170 G28 G91 X0 Y0;
N180 M30;
%
“`
解説:
– N60: 補正を開始するための安全な位置(ワーク輪郭から十分外側)へ移動。
– N80: G41 D01 で工具径補正(左側)を有効にしながら、輪郭上の始点(X0, Y0)の手前(X0, Y-10.0)まで移動。このブロックで工具径補正が開始され、以降の輪郭指令に対して工具中心の経路が自動計算される。
– N90-N120: ワークの輪郭座標をプログラム。工具径補正が有効なので、工具中心は輪郭から左方向に工具半径分ずれて移動し、輪郭が正確に加工される。
– N130: G40で工具径補正をキャンセルしながら、安全な補正終了点(補正開始点と同じ位置)へ移動。

NCプログラミングの学習のヒントと注意点

NCプログラミングの学習は、実際に機械を動かすことを前提としているため、いくつかの重要なポイントと注意点があります。

シミュレーションの活用

実際の機械でプログラムを試す前に、必ずシミュレーションソフトを活用しましょう。シミュレーターを使えば、プログラムが意図した通りに工具が動くか、ワークや機械に干渉しないかなどを、安全に確認できます。多くのCAMソフトにシミュレーション機能が搭載されていますし、単体のNCプログラムシミュレーターもあります。

安全第一の原則

NC工作機械は強力な機械であり、プログラムミスは重大な事故につながる可能性があります。常に安全を最優先に考えてください。

  • 試運転: 初めてのプログラムや、新しいワークを加工する際は、必ず低速で試運転したり、工具を少し持ち上げて空運転したりして、意図した動作になっているか確認しましょう。
  • 干渉チェック: 特に早送り(G00)の経路や、工具交換位置、治具への干渉などをシミュレーションや目視で十分に確認します。
  • 非常停止ボタン: プログラム実行中は、いつでも非常停止ボタンを押せるように準備しておきましょう。
  • 切削条件: 材料、工具、機械剛性に合わせた適切な切削条件(送り速度、主軸回転速度、切り込み量)を設定することが、安全で高品質な加工には不可欠です。

機械ごとのGコード/Mコードの違い(マニュアルの重要性)

ここで解説したGコードやMコードは、ファナック(FANUC)制御装置などを代表とする一般的なものです。しかし、機械メーカーやNC装置の機種、さらには同じメーカーの異なるモデルでも、使用できるGコード/Mコードの種類や機能の詳細、書式、パラメータの指定方法が微妙に異なる場合があります。特にサイクル指令や特殊な機能に関するコードは差異が大きい傾向にあります。

最も重要なことは、あなたが使用する実際の機械のNC装置のマニュアル(プログラミングマニュアル、オペレーターマニュアルなど)を参照することです。 マニュアルには、その機械で使用できる全てのGコード/Mコードとその詳細な使い方が記載されています。

エラーメッセージの理解

NCプログラムに文法的な誤りがあったり、機械の動作範囲を超えたりすると、NC装置はエラーメッセージを表示します。エラーメッセージの内容を理解することは、プログラムのデバッグや機械のトラブルシューティングにおいて非常に重要です。マニュアルにはエラーコードとその意味、対処法が記載されていますので、参照できるようにしておきましょう。

実機でのテストカット(最初の確認)

シミュレーションで問題がなくても、実際の機械と全く同じ条件をシミュレートできるわけではありません。初めての加工や、材料、工具を変更した際には、本番のワークを使う前に、試し材を使ってテストカットを行うのが理想的です。特に最初の切削箇所の動作や、工具の振動などを確認します。

よくある質問 (FAQ)

NCプログラミング学習者がよく疑問に思う点について回答します。

  • Q: GコードとMコードの違いは何ですか?

    • A: Gコードは「準備機能」と呼ばれ、機械がどのような種類の動作をするか(例: 直線移動、円弧移動、穴あけなど)を指示します。対してMコードは「補助機能」と呼ばれ、加工そのものではない機械の付帯機能(例: 主軸ON/OFF、切削油ON/OFF、工具交換、プログラム停止など)を指示します。簡単に言えば、Gコードは「どう動くか」を、Mコードは「何をするか」を指示するコード群です。
  • Q: なぜ同じGコードでも機械によって動作が違うことがあるのですか?

    • A: NC工作機械のメーカーやNC装置のモデルによって、GコードやMコードの解釈や使用方法が異なることがあるためです。特に、標準的なGコード(G01, G02, G90など)は共通していることが多いですが、サイクル指令(G81など)や特殊な補正機能などに関するコードは、機械固有の機能に合わせて定義されている場合があります。そのため、必ず使用する機械のマニュアルを確認する必要があります。
  • Q: CAMを使えばGコードを知らなくても良いのですか?

    • A: CAMソフトは3Dモデルなどから自動的にGコードプログラムを生成してくれるため、手書きで複雑なプログラムを作成する必要はなくなります。しかし、CAMが出力したプログラムが意図した通りになっているか確認したり、簡単な修正を行ったり、エラーが発生した際に原因を特定したりするためには、Gコード/Mコードの基本的な知識が不可欠です。また、CAMで対応できないシンプルな加工や、特定の機械固有の機能を活用するためには、手書きプログラミングやCAMプログラムの編集能力が必要になることもあります。したがって、CAMを使う場合でもGコードの基本を理解しておくことは非常に重要です。
  • Q: 手書きプログラミングのメリットは?

    • A: 手書きプログラミングのメリットは、以下の点が挙げられます。
      • 基本理解の深化: Gコード/Mコードを直接記述することで、機械の動作原理やプログラムの構造に対する理解が深まります。
      • シンプルな加工への対応: 複雑なCAMソフトを立ち上げるまでもない、単純な形状の加工であれば、手書きの方が早くプログラムを作成できる場合があります。
      • プログラムの最適化: CAMが出力したプログラムを、機械の特性に合わせてより効率的・高精度になるように手動で修正・最適化する際に、手書きの知識が役立ちます。
      • トラブルシューティング: エラーが発生した際に、プログラムの内容を直接読んで原因を特定する能力が身につきます。

まとめ:NCプログラミング習得の旅は続く

この記事では、NCプログラミングの第一歩として、GコードとMコードの基本的な構造、主要なコードの詳細な機能と使い方、そして簡単なプログラム例について詳細に解説しました。Gコードは機械の動作の種類、Mコードは付帯機能を指示し、これらに座標値や送り速度などのパラメータを組み合わせることで、NC工作機械を自在に制御するためのNCプログラムが作成されます。

今回ご紹介したGコードやMコードは、NCプログラミングの世界のほんの一部です。しかし、G00, G01, G02/G03といった移動指令、G90/G91の座標指令、G54などのワーク座標系、G40/G41/G42の工具径補正、そしてM03, M05, M06, M08, M09, M30といったMコードは、ほとんど全てのNCプログラムで使用される非常に重要なコードです。これらの基本をしっかりと理解することは、NCプログラミングを学ぶ上での確固たる土台となります。

NCプログラミングの学習は、単にコードを暗記することではありません。それぞれのコードが機械のどのような動きや機能に対応しているのかを理解し、どのような目的でそのコードを使用するのかを考えることが重要です。そして、最終的には作成したプログラムが安全かつ正確に機械を動かし、設計通りの高品質な部品を作り出すことができるようになることを目指します。

この基本をマスターしたら、次はより多くのサイクル指令、サブプログラムの応用、マクロプログラム、多軸加工に関するGコードなど、さらに高度な内容へと学習を進めることができます。また、実際の加工現場で経験を積むこと、使用する機械のマニュアルを読み込むこと、そしてCAMソフトの活用も、NCプログラミングスキルを向上させる上で不可欠です。

現代の製造業において、NCプログラミングは生産性の向上と高精度なものづくりを実現する上で欠かせない技術です。この知識が、あなたのキャリアやものづくりの可能性を広げるための一歩となることを願っています。この記事が、NCプログラミングの基礎をしっかりと理解し、この fascinating な世界への扉を開くためのお役に立てば幸いです。継続的な学習と実践を重ねて、NCプログラマーとしてのスキルを着実に高めていってください。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール