NCプログラミングのGコードとマクロで学ぶ座標系の基礎

NCプログラミングの基礎を徹底解説

この記事でわかること
⚙️
Gコード・Mコードの基本

NCプログラムの骨格となるGコードとMコードの役割と、主要なコード一覧を解説します。

🗺️
座標系の考え方

ミスを減らすための絶対座標と相対座標の正しい理解と、状況に応じた使い分けのコツを学びます。

💡
マクロによる効率化

変数や引数を使ったマクロの作成方法を学び、繰り返し作業を自動化して、作業時間を大幅に短縮します。

NCプログラミングの基本構成とGコード・Mコードの役割

 

NCプログラムは、工作機械を自動で動かすための指令書です 。このプログラムは、主にアルファベットと数字の組み合わせで構成されており、その中でも特に重要なのが「Gコード」と「Mコード」です 。これらを理解することが、NCプログラミング習得の第一歩となります。
Gコード(準備機能) ⚙️
Gコードは、工具の動き方を指令するコードで、「準備機能」とも呼ばれます 。例えば、工具をどの位置に、どのような経路で、どれくらいの速さで動かすかを指示します。Gコードには、一度指令するとキャンセルされるまで有効な「モーダル」なコードと、そのブロック(行)だけで有効な「ワンショット」なコードがあります 。

 

参考)用語集

代表的なGコード一覧表:

Gコード 機能 説明
G00 位置決め(早送り)

切削を行わず、工具を最高速度で指定座標へ移動させます
参考)Gコード、Mコードとは?NC旋盤のプログラムを解説【第一弾】
​。

G01 直線補間(切削送り) 指定された送り速度で、工具を直線的に動かしながら切削加工を行います ​。
G02/G03 円弧補間(時計回り/反時計回り) 指定された半径や中心点を基に、工具を円弧状に動かして加工します ​。
G04 ドウェル

指定した時間だけ工具の送りを停止させます。底面をきれいに仕上げる際などに使用します
参考)NCプログラム Gコード一覧
​。

G90 アブソリュート指令

座標値をワーク座標系の原点からの絶対位置で指令します
参考)NCプログラム/Gコード 工具経路指令
​。

G91 インクレメンタル指令 座標値を現在の工具位置からの移動量で指令します ​。


Mコード(補助機能) 🔧
Mコードは、主軸の回転や停止、クーラント切削油)のON/OFFなど、機械の補助的な動作を制御するコードです 。Gコードが「どう動くか」を指示するのに対し、Mコードは「動き以外の何をさせるか」を指示します。

 

参考)https://www.kanameta.jp/column/nc-code-list-basic-guide

代表的なMコード一覧表:

Mコード 機能 説明
M00 プログラムストップ

プログラムの実行を一時停止します
参考)http://www.asahi-net.or.jp/~ja2y-ty/nc/nc.html
​。

M03/M04 主軸正転/逆転 主軸を時計回り(M03)または反時計回り(M04)に回転させます ​。
M05 主軸停止 主軸の回転を停止します ​。
M08/M09 クーラントON/OFF クーラントの供給を開始(M08)または停止(M09)します ​。
M30 プログラムエンド

プログラムを終了し、プログラムの先頭に戻ります
参考)Mコード
​。


これらのコードの意味を「動き」とセットでイメージしながら覚えることが重要です 。例えば、「G01は工具がまっすぐ削っていく動き」といった具体的なイメージを持つことで、記憶に定着しやすくなります。

 

参考)https://seizogyo-channel.com/news/nc_program/

GコードやMコードの一覧は、工作機械メーカーのサイトや専門情報サイトで確認できます。より詳細なリストが必要な場合は、以下のリンクが参考になります。

 

Gコードとは|マシナビ - 工作機械 - ブラザー

NCプログラミングにおける座標系(絶対座標と相対座標)の使い分け

NCプログラミングにおいて、座標系の理解は正確な加工を行うための要です 。特に「絶対座標(アブソリュート指令)」と「相対座標(インクレメンタル指令)」の使い分けをマスターすることで、プログラムの作成効率と可読性が格段に向上します。
座標系の基本 🗺️
まず、NC加工にはいくつかの座標系が存在します。

 

  • 機械座標系: 工作機械そのものが持つ原点(機械原点)を基準とした座標系です。G53を指令すると、この座標系で動作します 。
  • ワーク座標系: 加工する工作物(ワーク)上に設定する原点(ワーク原点)を基準とした座標系です。G54〜G59のコードで切り替えて使用します 。プログラムは通常、このワーク座標系を基準に作成します。これにより、ワークを機械上のどこに置いても、プログラムを変更することなく加工できます 。

絶対座標(G90)と相対座標(G91)
ワーク座標系の中で、工具の移動先を指令する方法として、G90とG91の2つがあります 。

1. 絶対座標(アブソリュート指令 / G90)
G90は、ワーク座標系の原点(X0, Y0, Z0)を基準とした「絶対的な位置」で座標を指令する方法です 。

 

参考)NC座標系を理解する – NCprog

  • メリット: プログラムの各行が原点からの最終的な位置を示しているため、工具が今どこにいるかを把握しやすく、ミスが起こりにくいのが特徴です 。図面上の寸法をそのままプログラムに反映させやすいという利点もあります。
  • デメリット: 同じ形状を繰り返し加工する場合、すべての点の座標を計算する必要があり、プログラムが長くなることがあります。
  • 使用例: `G90 G01 X100. Y50. F200;` → ワーク原点から見て、X軸方向に100mm、Y軸方向に50mmの位置へ移動せよ。

2. 相対座標(インクレメンタル指令 / G91)
G91は、工具の「現在の位置」を基準とした「移動量」で座標を指令する方法です。

 

  • メリット: 同じ形状の繰り返しや、等間隔での穴あけ加工など、パターン化された動きを短いプログラムで記述できます。サブプログラムやマクロと組み合わせることで、非常に強力なツールとなります。
  • デメリット: 現在位置を常に把握しておく必要があり、計算ミスをすると後の加工すべてに影響が及びます。プログラムを途中から読んでも、工具の絶対的な位置が分かりにくいという欠点があります。
  • 使用例: `G91 G01 X20. Y10. F200;` → 現在位置から、X軸方向に+20mm、Y軸方向に+10mm移動せよ。

使い分けのコツ
状況に応じてG90とG91を賢く使い分けることが、効率的なプログラミングの鍵です。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

状況 推奨する指令 理由
基本的な加工、一点ものの加工 G90(絶対座標) 図面との照合が容易で、位置関係を直感的に把握できるため、ミスを減らせます。
同じ形状の繰り返し、等間隔の穴あけ G91(相対座標) サブプログラムと組み合わせることで、プログラムを大幅に簡略化できます。
工具交換後や加工開始時の位置決め G90(絶対座標) 安全な位置へ確実に工具を移動させるため、絶対座標で明確に位置を指定します。

初心者のうちは、まずG90を基本としてプログラム全体の見通しを良くし、慣れてきたら繰り返し部分などでG91を活用していくのがおすすめです。

 

座標系の設定方法や考え方について、さらに詳しく知りたい方は、以下の専門サイトが分かりやすく解説しています。

 

機械座標とワーク座標【初めてのNCプログラミング】

NCプログラミングの効率を上げるマクロの作成と活用術

NCプログラミングにおける「マクロ」とは、一連のプログラムを一つの命令で呼び出せるようにする機能です 。変数や条件分岐、繰り返し処理などを組み合わせることで、定型作業の自動化や複雑な加工のプログラム簡略化を実現し、作業効率を劇的に向上させることができます 。
マクロでできること 🚀
マクロを活用することで、以下のようなことが可能になります。

 

  • 定型加工の自動化: 例えば、「センタードリル→ドリル→面取り」といった一連の穴あけサイクルを、穴の座標と深さを指定するだけで実行できます。
  • 汎用性の高いプログラム作成: 寸法や加工条件を変数(#1, #2など)にしておくことで、一つのマクロプログラムを様々な部品の加工に使い回せます 。
  • 複雑な計算の自動化: 三角関数などを用いた複雑な座標計算をプログラム内で行い、特殊な形状の加工を可能にします。
  • 条件に応じた動作の変更: IF文などの条件分岐を使うことで、特定の条件を満たした時だけ特定の動作をさせる、といった柔軟な制御ができます 。

マクロの基本的な使い方
マクロは、メインプログラムから「呼び出しコード」を使って呼び出します。呼び出しにはいくつかの方法があります。

 

  1. G65による呼び出し(ワンショット)
    G65 Pxxxx A_ B_ C_ ... ; の形式でマクロプログラム(Oxxxx)を呼び出します 。A, B, Cには「引数」として数値を渡すことができ、マクロプログラム内でその値をローカル変数(#1, #2, #3...)として受け取って利用します 。
    参考)マクロ

    例:指定した座標(X,Y)に深さ(Z)まで穴をあけるマクロ

    (メインプログラム)
    G65 P9010 X100. Y50. Z-10. F150. ; (マクロ呼び出し)
    ...
    M30 ;

    (マクロプログラム O9010)
    #101 = #24 ; (X座標を#101に代入)
    #102 = #25 ; (Y座標を#102に代入)
    #103 = #26 ; (Z深さを#103に代入)
    #104 = #9 ; (送り速度を#104に代入)

    G00 X#101 Y#102 ; (穴位置へ早送り)
    G01 Z#103 F#104 ; (指定深さまで切削)
    G00 Z5. ; (安全な高さまで退避)
    M99 ; (メインプログラムへ戻る)

  2. G66とG67によるモーダル呼び出し
    G66でマクロを呼び出すと、G67が指令されるまでの間、移動を伴うブロックごとにマクロが繰り返し実行されます。同じ加工を異なる座標で何度も行う場合に便利です。
  3. カスタムGコードによる呼び出し
    パラメータを設定することで、特定のGコード(例: G101)を指令するだけでマクロを呼び出せるようになります 。これにより、プログラムがよりシンプルで直感的になります。

    参考)マクロのいろは


マクロ作成のポイント 💡

  • 変数の活用: ローカル変数(#1~#33)、コモン変数(#100~, #500~)などを使い分け、プログラムの汎用性を高めましょう。
  • 引数の設計: どのような値をメインプログラムから渡せば、柔軟に動作を変更できるかを考えて引数を設計します。
  • コメントの活用: プログラム内に `(COMMENT)` の形でコメントをしっかり残し、後から見返したときや他の人が見たときにも処理内容が理解できるようにしておくことが重要です。

マクロはNCプログラミングの上級テクニックですが、一度習得すればプログラム作成の幅が大きく広がります。まずは簡単なマクロから作成してみて、その便利さを体感してみてください。

 

マクロの引数や変数の詳細については、以下の専門サイトが参考になります。

 

マクロ - NCプログラム基礎知識

NCプログラミングの学習とシミュレーターを活用したスキルアップ術

NCプログラミングのスキルを効率的かつ安全に向上させるためには、段階的な学習とシミュレーターの活用が非常に有効です。机上での学習と実践的な検証を繰り返すことで、未然にミスをぎ、より高度な加工に挑戦できるようになります。

 

初心者におすすめの学習ステップ 🚶‍♂️➡️🏃‍♂️
やみくもにコードを暗記しようとしても、なかなか身につきません 。以下のステップで、インプットとアウトプットを繰り返すことが上達への近道です。

  1. 読む (Input): まずは、簡単なプログラムを1行ずつ読み解き、GコードやMコードがどのような動きを指令しているのかを理解します。「G01 X100.」なら「工具がX軸の100mmの位置までまっすぐ削る」というように、頭の中で工具の動きをイメージする癖をつけましょう 。​
  2. 書く (Output): 次に、簡単な形状(四角形や円など)を加工するプログラムを自分で書いてみます。最初から完璧を目指す必要はありません。大切なのは、自分の手でコードを組み立ててみることです 。​
  3. 動かす (Check): 書いたプログラムを、後述するシミュレーターで動かしてみます。ここで、自分が意図した通りの動きになっているか、エラーは出ていないかを確認します 。

    参考)Document Moved

  4. 修正する (Fix): シミュレーションで問題が見つかれば、プログラムを修正します。なぜその問題が起きたのかを考えることが、深い理解につながります。このサイクルを何度も繰り返すことで、知識が着実に身についていきます。

NCシミュレーター活用のススメ 💻
NCシミュレーターは、実際の工作機械を動かす前に、PC上でプログラムの動作を3Dグラフィックで確認できるソフトウェアです 。シミュレーターを活用することで、多くのメリットが得られます。

 

参考)NCマシンシミュレーター – NCprog

衝突の防止: 工具やホルダー、治具、工作物などが互いに干渉(衝突)しないかを事前にチェックできます。高価な機械や工具の破損、重大な事故を未然に防ぐことができます。

 

加工精度の向上: 削り残しや過切削がないか、画面上で正確に確認できます。試作品の数を減らし、材料費と加工時間の無駄を削減します。

 

加工時間の最適化: シミュレーションによって正確な加工時間を見積もることができます。また、工具経路や切削条件を最適化し、加工時間を短縮するヒントも得られます 。豊田自動織機の事例では、シミュレーションソフトの導入初年度で加工時間を約15%短縮できたと報告されています 。

 

参考)豊田自動織機 NCシミュレーションの効果的な運用手法【金型テ…

教育・トレーニング: 新人オペレーターでも、実際の機械を動かす前に安全な環境でプログラムの検証ができます。これにより、失敗を恐れずに様々な加工に挑戦でき、スキルアップのスピードが加速します 。

最近のシミュレーターには、Pythonなどのスクリプト言語と連携し、夜間に複数のプログラムを自動で解析・最適化するような高度な機能を持つものもあります 。これにより、オペレーターは日中の創造的な作業に集中できるようになります。

シミュレーションソフトは高価なものもありますが、その投資効果は非常に大きいと言えるでしょう。まずは体験版などを試してみて、その有用性を実感してみてはいかがでしょうか。

 

5軸加工向けなどの高機能なシミュレーターに関する情報は、以下のリンクで詳しく紹介されています。

 

NCチェックを支援する3D切削シミュレータ | Virtual NC

NCプログラミングのよくある疑問とトラブルシューティング

NCプログラミングに慣れてきても、思わぬミスやトラブルはつきものです。ここでは、初心者がつまずきやすいポイントや、現場でよくあるトラブルとその対策について解説します。事前にリスクを知り、対策を講じることで、手戻りを減らし、安全かつ効率的な作業を目指しましょう。

 

Q1. プログラムミスを減らすにはどうすればいい? 🤔
A. ヒューマンエラーを完全になくすことは困難ですが、工夫次第で大幅に減らすことができます 。
参考)NCプログラムを自動作成する手順と、作業の効率化におすすめの…

  • 加工順序を書き出す: プログラミングを始める前に、まず「どの工具で」「どこを」「どの順番で」加工するのか、簡単なフロー図や手書きのメモに書き出してみましょう 。頭の中だけで組み立てると、工程の抜け漏れや非効率な手順に気づきにくいものです。全体像を整理してからコーディングに入ることで、手戻りが格段に減ります。​
  • 一行ずつ動作を想像する: 書いたプログラムを上から順に追いながら、工具がどのように動くか、主軸は回っているか、クーラントは出ているかなど、一つ一つの動作を具体的に頭の中でシミュレーションする癖をつけましょう 。​
  • シミュレーターでの事前検証: 最も効果的なのがシミュレーターによる検証です。工具経路の確認はもちろん、早送りでの衝突チェックなど、実機では危険な確認も安全に行えます。

Q2. 工具長補正や工具径補正がうまくいかない… 📏
A. 工具補正は正確な寸法を出すための重要な機能ですが、設定ミスが非常に多いポイントでもあります。

  • 工具長補正 (G43/G44/G49):
    • トラブル例: Z軸のプラス・マイナスの設定ミスで、工具がワークに衝突、あるいは届かない。
    • 対策: G43(プラス方向補正)とG44(マイナス方向補正)の意味を正しく理解し、使用する機械の仕様を確認することが重要です。補正をかけた後は、いきなり切削に入るのではなく、安全な位置で一度停止させ(M00など)、Z軸の残り移動量(ディスタンス・トゥ・ゴー)を確認する習慣をつけましょう。補正のキャンセル(G49)も忘れずに行う必要があります 。

      参考)Gコード

  • 工具径補正 (G41/G42/G40):
    • トラブル例: 進行方向に対して左右の補正(G41/G42)を間違え、寸法がずれてしまう。小さなRでアラームが出て停止する。
    • 対策: 工具の進行方向に対して、ワークがどちら側にあるかを見て「左側ならG41」「右側ならG42」と覚えます。また、工具径よりも小さいコーナーを補正ありで加工しようとするとエラーになるため、注意が必要です。ここでも、補正キャンセル(G40)を適切な位置に入れることが重要です 。​

    Q3. CAD/CAMを使えばプログラミングは不要になる? 🤖
    A. CAD/CAMは複雑な3次元形状のプログラムを自動生成できる非常に強力なツールですが、手打ちの知識が完全に不要になるわけではありません。

    • CAMの限界: CAMが生成したプログラムも完璧ではありません。非効率な工具経路が含まれていたり、現場の状況に合わない切削条件になっていたりすることがあります。
    • 現場での修正: 現場で発生した微調整やトラブル対応のために、CAMが出力したGコードを直接編集・修正するスキルは依然として不可欠です。プログラムを読んで動きを理解できなければ、適切な対応はできません。
    • 知識の相乗効果: プログラミングの知識があれば、「CAMがなぜこのような経路を出力したのか」を理解でき、より効果的なCAMのパラメータ設定にも繋がります。

    CAD/CAMと手打ちプログラミングは対立するものではなく、両方を理解することで、より高次元なものづくりが可能になります。まずはこの記事で解説した基礎をしっかりと固め、日々の業務の中で実践を積み重ねていくことが、確かなスキルアップへの一番の近道です。

     

     


    わかる! 使える! NC旋盤入門-<基礎知識><段取り><実作業>-