CNCプログラムの基本構造
マシニングセンタやNC旋盤などのCNC工作機械は、正確な動作を行うために「CNCプログラム」と呼ばれる命令文を読み取って動作します。
このプログラムは一見難しそうに見えますが、実は一定の構造とルールに基づいて作られており、その基本を理解すれば誰でも読めるようになります。
CNCプログラムとは?
CNCプログラム(NCプログラム)は、工作機械に「どのように動け」「どの工具を使え」と指示を出すための命令文です。
Gコード(Geometry)とMコード(Machine)を中心に構成され、座標や速度などのデータを指定して自動で高精度な加工を行います。
CNCプログラムの基本構造
CNCプログラムはおおまかに次のような構成になっています。
O0001 (プログラム番号とコメント)
N010 G90 G54 G00 X0 Y0 Z100 (原点復帰)
N020 T01 M06 (工具交換)
N030 S1500 M03 (主軸回転ON)
N040 G43 H01 Z50.0 (工具長補正)
N050 G01 Z-5.0 F200 (送り加工)
N060 G00 Z100 (退避)
N070 M05 (主軸停止)
N080 M30 (プログラム終了)
それぞれの行(ブロック)は命令のまとまりで、「N番号+G/Mコード+座標指令+補助指令」の形で構成されます。
以下に各部分を詳しく見ていきましょう。
各要素の解説
O番号(プログラム番号)
プログラムを識別するための番号です。
例:O0001
同じ機械に複数のプログラムを登録する場合、この番号で呼び出しを行います。
N番号(ブロック番号)
行番号のようなもので、各命令文(ブロック)の順序を示します。
例:N010, N020
最近の制御装置では省略可能ですが、修正や確認時の目安になります。
Gコード(準備機能)とは
Gコードは工作機械の動作を定義するコード で、工具の移動や加工経路を指示します。
Gコードの分類
Gコードには、以下のような機能別のカテゴリがあります。
| カテゴリ | 説明 | 例 |
|---|---|---|
| 移動・補間制御 | 工具をどのように移動させるか | G00(早送り)、G01(直線補間)、G02(円弧補間) |
| 平面選択 | 加工の基準平面を設定 | G17(XY平面)、G18(ZX平面)、G19(YZ平面) |
| 座標設定 | 座標系を設定 | G54~G59(ワーク座標系設定) |
| 加工モード | 加工方法を変更 | G90(絶対位置指定)、G91(相対位置指定) |
| 工具補正 | 工具の補正値を適用 | G40(工具径補正解除)、G41/G42(工具径補正 左/右) |
| その他 | 切削時の動作を制御 | G98/G99(リトラクト動作)、G73/G83(ドリルサイクル) |
Gコードの主な例
直線移動
G01 X50.0 Y25.0 F100
→ 工具をX=50, Y=25まで送り、送り速度100mm/minで直線移動
円弧補間
G02 X40.0 Y30.0 I10.0 J0.0
→ 現在の位置からX=40, Y=30へ、I=10, J=0の半径で時計回りの円弧移動
座標系設定
G54
→ ワーク座標系1(G54)を使用
Mコード(補助機能)とは
Mコードは工作機械の補助操作を定義するコード で、主軸の回転やクーラントの制御、プログラムの開始・停止などを指示します。
Mコードの主な種類
| カテゴリ | 説明 | 例 |
|---|---|---|
| 主軸制御 | 主軸の回転や停止を制御 | M03(主軸正転)、M04(主軸逆転)、M05(主軸停止) |
| 工具交換 | 工具の交換を制御 | M06(工具交換) |
| クーラント制御 | 冷却水のON/OFF | M08(クーラントON)、M09(クーラントOFF) |
| プログラム制御 | プログラムの終了やサブプログラム呼び出し | M30(プログラム終了)、M98(サブプログラム呼び出し) |
| その他 | ワーク固定や安全対策 | M00(一時停止)、M01(オプションストップ) |
Mコードの主な例
主軸を正転で回す
M03 S1500
→ 主軸を正転(時計回り)で1500rpmに設定
工具交換
M06 T2
→ 工具を2番に交換
クーラントON
M08
→ クーラント(冷却水)をONにする
プログラム終了
M30
→ プログラムを終了し、最初に戻る
座標指定(X・Y・Z)
工具がどの位置に移動するかを指定します。
例:X100.0 Y50.0 Z-5.0
この指定により、工作物の座標上で正確な動きを指示できます。
F・S・Tコード
これらは加工条件を定義するための重要なコードです。
| コード | 意味 | 例 |
|---|---|---|
| F | 送り速度 | F200(200mm/min) |
| S | 主軸回転数 | S1500(1500rpm) |
| T | 工具番号 | T01(工具1番を使用) |
GコードとMコードの違いまとめ
| 項目 | Gコード(準備機能) | Mコード(補助機能) |
|---|---|---|
| 役割 | 工具の動作・軌道を制御 | 機械の動作や補助機能を制御 |
| 具体的な機能 | 位置決め、直線移動、円弧移動、座標設定 | 主軸制御、工具交換、クーラント制御、プログラム制御 |
| 例 | G00(早送り)、G01(直線移動)、G02(円弧補間) | M03(主軸正転)、M06(工具交換)、M08(クーラントON) |
| 制御対象 | 機械の「動き」 | 機械の「補助動作」 |
| 使用頻度 | 加工動作のため頻繁に使用 | 加工の前後に使用されることが多い |
実際のCNCプログラム例
O1000 (プログラム番号)
G21 (ミリメートル単位)
G90 (絶対座標指令)
G54 (ワーク座標系1)
M06 T1 (工具1に交換)
M03 S1200 (主軸正転 1200rpm)
G00 X0 Y0 (早送りで原点移動)
G01 X50 Y50 F200 (送り速度200mm/minで移動)
M08 (クーラントON)
G02 X70 Y70 I10 J0 (時計回りの円弧移動)
G00 Z100 (Z軸を上げる)
M09 (クーラントOFF)
M30 (プログラム終了)
このプログラムの流れ
- 単位をミリに設定(G21)
- 絶対座標モードを設定(G90)
- ワーク座標系1(G54)を適用
- 工具を1番に交換(M06)
- 主軸を1200rpmで正転(M03 S1200)
- 工具をX0, Y0に移動(G00)
- 送り速度200mm/minでX50, Y50へ直線移動(G01)
- クーラントをONにする(M08)
- 円弧移動でX70, Y70へ移動(G02)
- 工具を上げる(G00 Z100)
- クーラントOFF(M09)
- プログラム終了(M30)
まとめ
- Gコード(準備機能) → 「工具の移動・加工経路を指示する」
- Mコード(補助機能) → 「主軸回転やクーラントなどの機械操作を制御する」
CNCプログラムでは、Gコードで「どこにどう動くか」を決め、Mコードで「機械をどう制御するか」を決めるという違いがあります。

