NCプログラムとは

NCプログラムは、コンピューター制御された機械によって実行される作業手順の指示のことを指しています。一般的には、CADソフトウェアで設計された部品のモデルを基に、CAMソフトウェアを使用してNCプログラムが作成されます。
NCプログラムには、加工操作の順序、切削パス、切削速度、送り速度、工具の選択などが含まれます。これらのプログラムは、工作機械のコントロールシステムによって読み取られ、実際の作業を行うための命令として解釈されます。
NCプログラムの基本構成
- ヘッダー部分
- プログラムの開始や、使用する単位、座標系などを設定します。
- 例:
G21(ミリメートル単位に設定)
- 加工指示部分
- 実際の加工を行うためのGコードやMコード、工具の移動指示などを記述します。
- 例:
G1 X100 Y50 Z-10 F100(X軸100mm、Y軸50mm、Z軸-10mmに移動、送り速度100mm/min)
- ツールチェンジや機械の操作
- 必要に応じてツールの変更や機械の状態変更(スピンドルのオン/オフ、冷却装置のオン/オフなど)を指示します。
- 例:
M6 T1(ツール番号1を使用)、M3(スピンドルの回転開始)
- プログラム終了部分
- プログラムの終了を示し、機械を安全な状態に戻します。
- 例:
M30(プログラム終了)
Gコード
Gコードは、コンピュータ数値制御(CNC)機械の制御に使用される一連の命令です。これらの命令は、工具の移動、切削速度、回転速度、工具の交換など、CNC機械が行う操作を指示します。Gコードは、通常、プレーンテキスト形式で記述され、各行に1つの命令が含まれます。
工作機械の制御システムにGコードは解釈され、実際の作業を実行するための指示として処理されます。例えば、G01は直線補間を表し、工具の移動を直線的に行うことを指示します。G02とG03は円弧補間を表し、工具の移動を円弧状に行います。
Gコードには、ワーク座標系の設定、工具の選択、加工条件の設定、サブルーチンの呼び出し、パレットの操作など、さまざまな機能が含まれます。これらの命令を組み合わせて、CNC機械はCADモデルに基づいて部品を正確に製造します。
工作機械の種類やメーカーによって若干異なることがありますが、基本的な機能と命令は共通しています。 CNCプログラミングにおいて、Gコードを理解し、適切に使用することが重要です。
Gコード一覧
| コード | 機能 |
|---|---|
| G00 | 位置決め |
| G01 | 直線補間 |
| G02 | 円弧補間/ヘリカル補間 CW |
| G03 | 円弧補間/ヘリカル補間 CCW |
| G02.2 | インボリュート補間 CW |
| G03.2 | インボリュート補間 CWW |
| G02.3 | 指数関数補間 CW |
| G03.3 | 指数関数補間 CWW |
| G04 | ドゥエル、イグザクトストップ |
| G05 | 高速サイクル加工/高精度輪郭制御 |
| G06.2 | NURBS補間 |
| G07 | 仮想軸補間 |
| G07.1 | 円筒補間 |
| G08 | 先行制御 |
| G09 | イグザクトストップ |
| G10 | データ設定 |
| G10.6 | 工具退避および復帰 |
| G11 | データ設定モードキャンセル |
| G12.1 | 極座標補間モード |
| G13.1 | 極座標補間モードキャンセル |
| G15 | 極座標指令キャンセル |
| G16 | 極座標指令 |
| G17 | XY平面 |
| G18 | ZX平面 |
| G19 | YZ平面 |
| G20 | インチ入力 |
| G21 | メトリック入力 |
| G22 | ストアードストロークチェックオン |
| G23 | ストアードストロークチェックオフ |
| G25 | 主軸速度変動検出オフ |
| G26 | 主軸速度変動検出オン |
| G27 | リファレンス点復帰チェック |
| G28 | リファレンス点への自動復帰 |
| G29 | リファレンス点からの自動復帰 |
| G30 | 第2、第3、第4リファレンス点復帰 |
| G30.1 | フローティングリファレンス点復帰 |
| G31 | スキップ機能 |
| G33 | ねじ切り |
| G37 | 工具長自動測定 |
| G39 | コーナオフセット円弧補間 |
| G40 | 工具径補正キャンセル |
| G41 | 工具径補正左 |
| G42 | 工具径補正右 |
| G40.1 | 法線方向制御キャンセルモード |
| G41.1 | 法線方向制御左オン |
| G42.1 | 法線方向制御右オン |
| G43 | 工具長補正+ |
| G44 | 工具長補正− |
| G45 | 工具位置オフセット 伸張 |
| G46 | 工具位置オフセット 縮小 |
| G47 | 工具位置オフセット 2倍伸張 |
| G48 | 工具位置オフセット 2倍縮小 |
| G49 | 工具長補正キャンセル |
| G50 | スケーリングキャンセル |
| G51 | スケーリング |
| G50.1 | プログラマブルミラーイメージキャンセル |
| G51.1 | プログラマブルミラーイメージ |
| G52 | ローカル座標系設定 |
| G53 | 機械座標系選択 |
| G54 | ワーク座標系1選択 |
| G54.1 | 追加ワーク座標選択 |
| G55 | ワーク座標系2選択 |
| G56 | ワーク座標系3選択 |
| G57 | ワーク座標系4選択 |
| G58 | ワーク座標系5選択 |
| G59 | ワーク座標系6選択 |
| G60 | 一方向位置決め |
| G61 | イグザクトストップモード |
| G62 | 自動コーナオーバライドモード |
| G63 | タッピングモード |
| G64 | 切削モード |
| G65 | マクロ呼び出し |
| G66 | マクロモーダル呼び出し |
| G67 | マクロモーダル呼び出しキャンセル |
| G68 | 座標回転 |
| G69 | 座標回転キャンセル |
| G72.1 | 回転コピー |
| G72.2 | 平行コピー |
| G73 | ペックドリリングサイクル |
| G74 | 逆タッピングサイクル |
| G75 | プランジ研削サイクル(0-GSC) |
| G76 | ファインボーリングサイクル |
| G77 | プランジ直接定寸研削サイクル(0-GSC) |
| G78 | 連続送り平研削サイクル(0-GSC) |
| G79 | 間欠送り平研削サイクル(0-GSC) |
| G80 | 固定サイクルキャンセル/外部動作機能キャンセル |
| G81 | ドリルサイクル、スポットボーリング/外部動作機能 |
| G82 | ドリルサイクル、カウンターボーリングサイクル |
| G83 | ペックドリリングサイクル |
| G84 | タッピングサイクル |
| G85 | ボーリングサイクル |
| G86 | ボーリングサイクル |
| G87 | バックボーリングサイクル |
| G88 | ボーリングサイクル |
| G89 | ボーリングサイクル |
| G90 | アブソリュート指令 |
| G91 | インクレメンタル指令 |
| G92 | ワーク座標系の変更/主軸最高回転数クランプ |
| G92.1 | ワーク座標プリセット |
| G94 | 毎分送り |
| G95 | 毎回転送り |
| G96 | 周速一定制御 |
| G97 | 周速一定制御キャンセル |
| G98 | 固定サイクルイニシャルレベル復帰 |
| G99 | 固定サイクルR点レベル復帰 |
| G107 | 円筒補間 |
| G150 | 法線方向制御キャンセルモード |
| G151 | 法線方向制御左側オン |
| G152 | 法線方向制御右側オン |
| G160 | インフィード制御機能キャンセル |
| G161 | インフィード制御機能 |
Mコード
Mコードは、コンピュータ数値制御(CNC)機械において、機械の動作や機能を制御するための命令です。Gコードが工具の移動や切削速度などの工作に関する命令を担当するのに対し、Mコードは機械そのものの動作や機能を制御します。
Mコードは、機械の起動や停止、冷却液の供給、工具の交換、スピンドルの回転速度の変更、ツールチェンジャーの動作などの機能を指示します。これらの命令は、CNCプログラム内の特定の位置に配置され、機械が必要なタイミングで適切な動作を行うようにします。
例えば、M03はスピンドルを正回転させる命令であり、M05はスピンドルを停止する命令です。M08は冷却液を供給する命令であり、M09は冷却液の供給を停止する命令です。
Mコードは、機械の種類やメーカーによって若干異なることがありますが、一般的な機能と命令は共通しています。
Mコード一覧
| コード | 機能 |
|---|---|
| M00 | プログラムストップ |
| M01 | オプショナルストップ |
| M02 | エンドオブプログラム |
| M03 | 主軸時計方向回転 |
| M04 | 主軸反時計方向回転 |
| M05 | 主軸停止 ※1 |
| M06 | 工具交換 |
| M07 | クーラント2 |
| M08 | クーラント1 |
| M09 | クーラント停止 |
| M10 | クランプ1 |
| M11 | アンクランプ1 |
| M13 | 主軸時計方向回転及びクーラント |
| M14 | 主軸反時計方向回転及びクーラント |
| M15 | 正方向運動 |
| M16 | 負方向運動 |
| M19 | 主軸オリエンテーション |
| M30 | エンドオブデータ |
| M31 | インターロックバイパス |
| M36 | 送り範囲1 |
| M37 | 送り範囲2 |
| M38 | 主軸速度範囲1 |
| M39 | 主軸速度範囲2 |
| M40〜45 | 歯車選択 |
| M48 | オーバーライド無視のキャンセル |
| M49 | オーバーライド無視 |
| M50 | クーラント3 |
| M51 | クーラント4 |
| M55 | 位置1への工具の直線シフト |
| M56 | 位置2への工具の直線シフト |
| M60 | 工作物交換 |
| M61 | 位置1への工作物の直線シフト |
| M62 | 位置2への工作物の直線シフト |
| M68 | クランプ2 |
| M69 | アンクランプ2 |
| M71 | 位置1への工作物の旋回シフト |
| M72 | 位置2への工作物の旋回シフト |
| M78 | クランプ3 |
| M79 | アンクランプ3 |
応用プログラム
プログラムは上から順番に下に向かって読み込んで行きますので、同じ工作物であれば同じプログラムを使い続けることができます。 しかし、ほんの少しだけ違う工作物の場合(例えば大きさや材質)わざわざプログラムを書き換えることをしなければなりませんが、条件付きNCプログラムを作成することで同じプログラムを使い続けることができます。
IF文
エクセルで数式を作ったことがある人ならすぐにわかる内容ですが、「IF文」は、プログラミングにおいて条件分岐を実現するための制御構造の一つです。一般的に、「もし〜ならば」という意味で用いられます。プログラムの中で特定の条件が成り立つ場合に、ある一連の命令を実行したり、別の条件が成り立つ場合には別の一連の命令を実行したりするために使用されます。
簡単な例を挙げると
#200=0 (材質がSSの場合0を代入)
IF[#200EQ0]GOTO5 (材質が0なのでN5に飛ぶ)
M3
S1200
N5
IF[#200GT0]GOTO6 (材質が0以上ならN6に飛ぶ)
M3
S2500
材質によって回転数を変えることができます。応用しながらどの工作物が来ても対応できるNCプログラムを作成できます。
比較演算子のコードは次のようになります。
| NCコード | 意味 |
|---|---|
| EQ | 左辺と右辺が等しい (=) |
| NE | 左辺と右辺が等しくない (≠) |
| LT | 左辺が右辺より小さい (<) |
| LE | 左辺が右辺以下である (<=) |
| GT | 左辺が右辺より大きい (>) |
| GE | 左辺が右辺以上である (>=) |
まずは簡単なところからチャレンジしてみてください。



