G-CODE FUNDAMENTALS
Gコード完全入門:ISO 6983からAI自動生成まで1本で理解
01Gコードとは?CNCの共通言語
Gコード(G代碼、NCプログラムとも呼ばれる)はCNC(コンピュータ数値制御)機械が理解できるプログラム言語です。「Gコードとは」に答える最も簡単な言い方は:それは1行ずつの動作リストで、各行が機械に対して工具をどの座標へ動かすか、直線を走るか円弧を走るか、送りはどれくらい速いか、主軸は何回転かを伝え、機械の制御装置は1行読んで1行実行し、次へ進む、というものです。フライス盤・旋盤・マシニングセンタが類似の指令を共用できるのは、Gコードのアドレスワード(address words)のフォーマットが国際規格ISO 6983によって定義されているからです[1]。
製造工学の枠組みでは、Gコードは「設計 → 工程計画 → 加工」という連鎖の最末端に位置します:CADが部品を描き、CAMが工具経路を決め、最後に機械が実際に実行するGコードとして出力されます。古典的な教科書は、数値制御の価値は加工動作を正確かつ再現可能にエンコードし、複雑な形状を安定して量産できるようにする点にあると強調しています[2]。言い換えれば、Gコードを読めることは、CNC加工の「ラストワンマイル」がいったいどんな命令を出しているかを読めることなのです。
02Gコードはどんな見た目か:逐行分解
指令表を暗記するより、実際のプログラムを見るほうがよいでしょう。以下は正面フライス(板材の上面を平らに削る)の簡略化されたGコードで、右側の注釈が各行の役割を説明します:
% O1000 (SLIDE PLATE FACE 正面フライスプログラム) G21 G17 G40 G49 G80 メートル法 / XY平面 / 工具径・工具長補正の取消 / 固定サイクルの取消 G54 第1組のワーク座標系を選択 T1 M06 1号工具に交換(正面フライス D50) S1200 M03 主軸正転 1200 rpm G00 X-30. Y0. 開始点へ早送り位置決め(空走、切削なし) G43 H01 Z50. 1号工具長補正を有効化、Zを安全高さへ G00 Z2. 工作物上方2mmへ早送りで下降 G01 Z0. F150. 直線送りでZ0まで切込み、送り150 mm/min G01 X130. F400. 直線切削、Xに沿って工作物表面を通過 G00 Z50. 安全高さまで早送りで工具退避 M05 主軸停止 M30 プログラム終了、先頭へ戻る %
各行は「ブロック(block)」と呼ばれ、アドレスワードに数値を加えて構成されます:Gは準備機能、Mは補助機能、X/Y/Zは座標、Fは送り、Sは回転数、Tは工具番号です。ISO 6983が規定するのはまさにこのアドレスワードとプログラムフォーマットです[1]。「1行1動作、文字+数字の積み重ね」というこの構造をつかめば、どんなGコードも逐行で読み解けます。
03運動指令:G00/G01/G02/G03とG54座標
Gコードのなかで最もよく使い、まず理解すべきなのは4つの運動指令です:
| 指令 | 動作 | 典型的な用途 |
|---|---|---|
| G00 | 早送り位置決め(機械の最高速度) | 工具が次の位置へ空走、切削なし |
| G01 | 直線切削送り(Fと組み合わせが必要) | 直線に沿って材料を除去、多くのフライスの主力 |
| G02 | 時計回りの円弧補間 | 円弧の切削、面取り(CW) |
| G03 | 反時計回りの円弧補間 | 円弧の切削、面取り(CCW) |
初心者が最も混同するのはG00とG01です:G00は「移動」で、工具を最高速度で定点へ動かし、経路が正確な直線であることは保証しないため、工作物に接触しない空走にしか使えません。G01が本当に「切る」もので、Fで指定した送り速度で直線に沿って材料を除去します。G02/G03は直線を円弧に替えたもので、違いは時計回りか反時計回りかだけです。
これらの座標にはいずれも原点基準が必要で、それがG54ワーク座標系の役割です。G54~G59は、プログラム内の座標を機械に取り付けた実際のワーク位置に対応させます——G54のゼロ点を設定すれば、ワークがテーブルのどの隅に取り付けられているかによってプログラムを書き換える必要がなくなります。注意すべきは、座標系を選び間違えたりゼロ点を合わせ間違えたりすると、工具経路全体がずれ、衝突のよくある原因の一つになるということです。これこそ実機にかける前のシミュレーション検証を省けない理由です(続きを読む:衝突防止と切削シミュレーション)。
04F/S/T/Mコード:送り、回転数、工具交換、補助機能
運動指令は「どこへ向かうか」を決め、F/S/T/Mコードは「どう進み、何で切るか」を決めます:
- F(Feed、送り速度):工具が経路に沿って前進する速度で、フライスでは通常mm/minで表します。速すぎると工具が折れたり刃こぼれし、遅すぎると刃跡が悪く効率も低下します。
- S(Spindle、主軸回転数):主軸の毎分回転数(rpm)で、M03(正転)またはM04(逆転)と組み合わせる必要があります。
- T(Tool、工具番号):工具ライブラリ内の工具を指定し、通常M06(工具交換)と一緒に使い、G43工具長補正と組み合わせます。
- M(Miscellaneous、補助機能):機械のオン・オフ動作を制御します。例えばM03/M05(主軸の起動・停止)、M08/M09(クーラントのオン・オフ)、M30(プログラム終了)など。
FとSは適当に入れる数字ではありません。切削力学とCNC設計の権威ある教科書は、送り・回転数・切込みは工具—工作物系の力学と振動特性に応じて選ばなければならず、さもなければ軽くて精度不良と刃跡、重ければびびり・工具折損・さらには衝突を招くと指摘しています[3]。実務では、これらのパラメータは工場内の工具ライブラリの標準切削パラメータを境界とすべきで、感覚で入力するものではありません——これもAIがGコードを生成する際に、工場内のパラメータを制約条件として扱わなければならない理由です。
05制御装置の方言:なぜ別の機械でそのまま流用できないか
多くの人は、Gコードには国際規格があるのだから、1本のプログラムがどこでも走るはずだと考えます。実情は:ISO 6983は基本的なアドレスワードとフォーマットのみを規定しており、各社の制御装置は固定サイクル、マクロ、先頭コード、パラメータ呼び出しにそれぞれ独自の「方言」を発達させています。学界は以前から、Gコードは工具の低レベルな運動しか記述せず、設計や工程の情報を保持しないうえ、規格のカバー範囲も限られているため、異なる制御装置間の相互運用性が乏しく、プログラムを直接移植しにくいと指摘してきました[4]。
具体的には、同じプログラムを1台のFANUC制御装置から三菱やハイデンハインへ移すと、次のような事態に遭遇しえます:穴あけ固定サイクル(G81/G83)のパラメータの書き方が異なる、工具交換と主軸起動の先頭順序が違う、サブプログラムやマクロの構文が互換でない。加えて各機の工具ライブラリ・ストローク範囲・治具もそれぞれ異なるため、「そのまま流用して実機にかける」とほぼ確実にトラブルが起きます。正しいやり方は:機械を替えることは要求を替えることに等しく、プログラムは再調整して3D切削シミュレーションで再検証する必要がある、というものです。これこそMastercamなどのCAMソフトのポストプロセッサ(post processor)が存在する理由であり、AI CAMが制御装置の型式を生成フローに組み込まなければならない理由でもあります。
06手書きからAI自動生成Gコードへ
初期のプログラマーは1行ずつGコードを手書きしていましたが、その後CAMソフトが技術者にグラフィカルな方法で工具経路を計画させてからプログラムを出力させるようになり、誤り率を大幅に下げました。AI自動生成Gコードはこの路線のさらなる延長です:顧客の2D図面を加工特徴として認識し、3Dモデルを構築し、工場内の工具ライブラリ・制御装置の型式・ストローク/回転数の上限に応じて、実行可能なプログラムを自動でたたき台として作成します(続きを読む:AIはどう2D図面を検証可能なGコードに変えるか)。技術者の役割は、「1マスずつ操作する」から「審査と修正」へと移ります。
しかし自動生成は、盲目的に実機にかけてよいという意味ではありません。前述の制御装置の方言、F/Sパラメータの力学的境界、G54ゼロ点と把持条件は、いずれもAIが十分に判断しきれない可能性があります。公差・基準・特殊工法はさらに組立意図と現場経験に関わります。したがって信頼できる導入モードはhuman-in-the-loopです:AIが読図・モデリング・コード生成・クロスチェックを担い、最も時間のかかる準備作業を加速し、ベテラン技師が実機にかける前に切削シミュレーションと最終サインオフを行い、工具長補正・アプローチ/リトラクト・ストローク安全を確認します。これも当サイトの製品が一貫して守る境界です——AIが準備を加速し、熟練者が最終判断を保持する。
07よくある質問 FAQ
Gコードとは?CNCとどう関係しますか?
GコードはCNC機械が理解できるプログラム言語で、1行ずつの「ブロック」から成り、機械に対して工具をどの座標へ動かし、どれくらいの送りと回転数で切削するかを段階的に指示します。そのアドレスワードのフォーマットはISO 6983によって定義され、フライス盤・旋盤・マシニングセンタに共通する基礎的な制御言語です。
G00とG01の違いは何ですか?
G00は早送り位置決めで、工具を機械の最高速度で目標点へ移動させ、工作物に接触しない空走に用い、直線切削の精度は保証しません。G01は直線切削送りで、必ずF送り速度と組み合わせて直線に沿って材料を除去します。G00は「移動」のため、G01が本当に「切る」ものです。
同じGコードを別の機械でそのまま実行できますか?
通常はできません。ISO 6983は基本フォーマットのみを規定しており、各社の制御装置は固定サイクル、マクロ、先頭コードで方言の違いがあり、加えて工具ライブラリ・ストローク・治具も異なるため、別の機械にかける前に調整し再度シミュレーション検証する必要があり、そのまま流用して実機にかけることはできません。
AIが自動生成したGコードはそのまま実機にかけられますか?
推奨しません。AIによるGコード自動生成はプログラミングを大幅に加速できますが、制御装置の方言、切削パラメータ、公差、現場工法はなおベテラン技師の確認が必要で、まず3D切削シミュレーションで削り込み・干渉・ストローク超過がないことを確認します。正しいモードは、AIがたたき台を加速し、専門家が最終サインオフを行うhuman-in-the-loopの流れです。
新しい記事や動画解説が公開されたときにお知らせします——受信箱を埋め尽くさず、ワンクリックで解除できます。(ニュースレターは中国語)
FROM DRAWING TO VERIFIED G-CODE
1枚の実際の図面で、AI自動生成Gコードがどこまで行けるかを見る
図面認識、工具ライブラリと制御装置の設定から切削シミュレーションと熟練者のレビューまで、あなたの工場に合ったAIプログラミングの導入方法を定義するお手伝いをします。
導入コンサルタントに問い合わせる トレーニング講座08参考文献
- ISO 6983-1:2009. Automation systems and integration — Numerical control of machines — Program format and definitions of address words. International Organization for Standardization.
- Kalpakjian, S., & Schmid, S. R. (2020). Manufacturing Engineering and Technology (8th ed.). Pearson.
- Altintas, Y. (2012). Manufacturing Automation: Metal Cutting Mechanics, Machine Tool Vibrations, and CNC Design (2nd ed.). Cambridge University Press.
- Xu, X. W., & Newman, S. T. (2006). Making CNC machine tools more open, interoperable and intelligent — a review of the technologies. Computers in Industry, 57(2), 141–152.
