同じ番号のmコードでも、機械メーカーが違えばまったく別の動作をするので、流用は機械停止どころか破損につながります。

NCプログラムは大きく分けて、工具の移動経路を制御する「Gコード(準備機能)」と、それ以外の機械動作を制御する「Mコード(補助機能)」の2種類で構成されています。Gコードが「どこへ、どのように動くか」を指令するのに対し、Mコードは「何をONにするか、何をOFFにするか」という機械側のスイッチ操作に相当します。
具体的には、主軸を回転させる・切削油(クーラント)を吐出する・工具を自動交換する・プログラムを停止するといった動作がMコードの役割です。これらは工具経路とは独立した動作ですが、切削加工を安全かつ正確に完了させるためには欠かせない指令です。つまりGコードとMコードはセットで機能します。
Mコードの表記形式はシンプルです。アドレス「M」に続けて2桁の数字を記述するのが基本で、例えば「M03」「M08」のように書きます。1つのブロック(1行)に対してMコードは原則1つのみ指令できます。1ブロックに複数のMコードを入力するとプログラムエラーが発生し、機械が停止するケースもあるため注意が必要です。
Mコードの範囲はM00〜M99が標準的ですが、機械の構成によってはM100以上の3桁コードが使われることもあります。全コードを暗記する必要はありません。まず現場でよく使う10〜15個を押さえることが基本です。
以下は現場でとくに使用頻度が高いMコードを一覧表にまとめたものです。ファナック(FANUC)系のNCを基準にしていますが、メーカーによって細部が異なる場合があるため、必ず使用機械の取扱説明書と照合してください。
| Mコード | 機能名 | 説明 |
|---|---|---|
| M00 | プログラムストップ | プログラムを強制的に一時停止。起動ボタンで再開。主軸・クーラントも停止する。 |
| M01 | オプショナルストップ | 機械パネルのM01スイッチがONの時だけ停止。OFFなら読み飛ばされる。 |
| M02 | プログラムエンド | プログラムを終了。カーソルはM02の行に留まる。頭出しは行わない。 |
| M03 | 主軸正転 | 主軸を時計回りに回転。S指令(回転数)と併用する。 |
| M04 | 主軸逆転 | 主軸を反時計回りに回転。タップ加工の戻し動作などで使用。 |
| M05 | 主軸停止 | 主軸の回転を停止する。 |
| M06 | 工具交換(ATC) | ATCマガジンの工具と主軸工具を自動交換。T番号指令と組み合わせる。 |
| M08 | クーラントON | 切削油(クーラント)を吐出開始。 |
| M09 | クーラントOFF | クーラントの吐出を停止。 |
| M10 | チャック閉・クランプ | チャックや治具をクランプ状態にする。 |
| M11 | チャック開・アンクランプ | チャックや治具をアンクランプ状態にする。 |
| M19 | 主軸オリエンテーション | 主軸を指定の角度位置で固定停止。ボーリングバーの逃がし動作などに使用。 |
| M30 | プログラムエンド+頭出し | プログラムを終了し、先頭に戻る(リワインド)。M02との大きな違いはここ。 |
| M98 | サブプログラム呼び出し | M98P〇〇〇〇でサブプログラムを呼び出す。繰り返し加工の効率化に有効。 |
| M99 | サブプログラム終了 | サブプログラムを終了してメインプログラムに戻る。M98とセットで使用。 |
ここで押さえておきたいのが、M02とM30の違いです。どちらも「プログラム終了」ですが、M30は終了後にプログラムの先頭へ自動的に戻る「頭出し(リワインド)」が行われます。連続加工ラインで使うのはほぼM30です。M02を連続加工プログラムの末尾に入れてしまうと、次のワークの加工前に手動でカーソルを先頭に戻す操作が必要になり、時間ロスが生じます。M30が原則です。
また、M01(オプショナルストップ)は非常に実用的なコードです。最初のワークだけ確認したい場面で、パネルのM01スイッチをONにしておくだけで途中停止が実現できます。2個目以降はスイッチをOFFにすれば機械は止まらずに流れます。これを知らないと、毎回M00で止めてしまい、生産効率を下げる原因になります。
株式会社ファクト CAD/CAMコラム:Mコードの基礎知識と一覧表・使用時の注意点
先ほどの一覧表に掲載したコードはほとんどの現場で登場しますが、ここでは「知っていると差がつく」コードをさらに深掘りします。
M07(ミストクーラントON) は、M08とは異なるクーラントの出力方法です。M08はフラッド(液体をかけ流す)なのに対し、M07はミスト(霧状に噴霧)を指令します。アルミや非鉄金属の仕上げ加工では、フラッドより霧状のほうが仕上げ面の品位を保ちやすい場面があります。これは使えそうです。ただし、機械によってM07を別の用途に割り当てているケースもあるため、機械メーカーのマニュアル確認が必須です。
M19(主軸オリエンテーション) は、主軸を特定の角度位置で停止させる指令です。ボーリングバーを使った内径仕上げ加工では、切削後に工具を逃がす際に主軸を定位置で停止させないとワーク内面を傷つけてしまいます。M19を正しく使えるかどうかが、内径加工の品質に直結します。初心者が見落としやすいコードです。
M49(送りオーバーライドキャンセル) は少し上級のコードです。機械操作盤の送り速度オーバーライドつまみを操作しても、その設定を無視してNCプログラムで指定した送り速度を強制的に守らせる指令です。精密な仕上げ面が必要な加工では、作業者が無意識にオーバーライドを操作してしまうことで寸法不良や面粗度の悪化につながることがあります。M49はそのリスクを防ぐ手段になります。M48は、このM49の設定をキャンセルする指令です。
これらのコードは頻出ではないものの、必要な場面で知らないと代替手段が見当たらず、加工ミスや工数増加につながります。困った場面が来る前に知っておくことが大切です。
CNCフライスとFusion360で遊ぶ:Mコード一覧と各コードの詳細解説
ここが、現場で最もトラブルになりやすいポイントです。
Mコードは、NC装置のメーカー(ファナック・メルダス・ヤスナック・シーメンスなど)よりも、工作機械メーカー(機械本体のメーカー) によって番号の意味が変わります。M03(主軸正転)やM08(クーラントON)など一部のコードはほぼ業界共通ですが、M10以降の番号になると機械によって内容がまるで違うことが珍しくありません。
例えば、A社の機械でM20が「エアブロー開始」だとしても、B社の機械では「自動電源遮断」に割り当てられている場合があります。同じファナック系NCを積んでいる機械でも、機械メーカーが異なれば同じ番号のMコードが別の動作をするということです。これが原則です。
この問題が実際のリスクになるのは、転職・部署異動・機械の更新・CAMで出力したプログラムの流用といった場面です。以前の職場や旧機械で使っていたプログラムをそのまま新しい機械に使うと、意図しない機械動作が起きることがあります。チャックが誤って開閉したり、クーラントでなく別のアクチュエーターが動いたりするリスクがあります。痛いですね。
実務上の鉄則は「機械を変えたら必ず取扱説明書のMコード表を確認する」ことです。コードを転記する際は、機械名・メーカー名・NC装置名をセットで記録しておくと、後の確認が格段に楽になります。特に複数台の異なるメーカーの機械が並んでいる職場では、機械別のMコード対応表を1枚作っておくことが生産トラブルの防止に直結します。
合同会社ゴードー CAD/CAMコラム:MコードはGコードと何が違うか・機械メーカーによる違いの解説
Mコードの中でも、生産性に直結する使い方として注目したいのがM98とM99のサブプログラム機能です。この2つは「知識として知っている」だけでなく「実際に使いこなせているか」で現場の効率がかなり変わります。
M98はメインプログラム実行中に別のプログラムを呼び出す指令で、書式は「M98 P〇〇〇〇」です。〇〇〇〇には呼び出したいサブプログラムのO番号を記入します。さらに「L〇〇」を追加すると、指定した回数だけサブプログラムを繰り返し実行できます。例えば、XY平面上の同一加工パターンをZ方向に5段繰り返す加工では、サブプログラムにX・Y軸の加工経路を書き、メインプログラムでM98を使って5回呼び出すだけで済みます。同じ内容を5回分書く必要がなくなるということですね。
この方法が活きる典型例は段付き穴の加工、複数段の溝加工、同一形状のポケットが複数並ぶ治具プレートへの加工などです。プログラムが短くなるだけでなく、修正が必要になったときにサブプログラム側だけ変更すれば全体に反映されるため、ミスも減ります。
M99はサブプログラムの最後に配置し、メインプログラムへ戻るための指令です。M98とM99は必ずセットで機能します。M99を忘れるとプログラムが終わらずに機械が止まります。M98とM99はセットで覚えることが条件です。
なお、ファナック系では繰り返し回数の書式に「M98 P〇〇〇〇 L〇〇」を使いますが、機械によっては「M98 P〇〇〇〇〇〇〇〇(上4桁が繰り返し回数・下4桁がO番号)」という記述方式を採る場合があります。こちらも機械仕様の確認が欠かせません。
NCプログラム基礎知識サイト:M98・M99(サブプログラム呼び出し・終了)の詳細と使用例
mコード一覧を「知識として持つ」ことと「現場で確実に運用できる」ことの間には、意外なギャップがあります。ここでは、そのギャップを埋めるための実践的な管理の視点を紹介します。
まず重要なのは、「Mコード表を機械ごとに1台1枚作成して現場に貼る」という運用です。工場内に複数の機械がある場合、それぞれの機械のMコード表を手元ですぐ参照できる状態にしておくことで、プログラム転用による誤操作リスクを大幅に下げられます。A3用紙1枚に機械名・NC装置名・主要Mコードと機能を一覧化し、ラミネート加工して機械そばに貼るだけで、特に新入社員や応援作業者が混乱するケースが激減します。これは使えそうです。
次に、CAMソフトを使ってNCデータを出力している場合は「ポスト設定のMコード割り当て」を一度見直すことをすすめます。CAMのポストプロセッサは使用機械に合わせてMコードを自動出力しますが、デフォルト設定のまま使っていると、実際の機械のMコードとズレが生じていることがあります。例えばクーラントのON/OFFコードが実機と異なる状態で加工を流すと、切削中に切削油が出ないまま加工が続くといった事態が起きます。工具の異常摩耗や焼けによる製品不良につながるため、ポスト設定の確認は非常に重要です。
さらに、M00とM01の使い分けは生産現場でのテンポに直結します。M00は問答無用で機械を止めます。対してM01はパネルスイッチがOFFなら読み飛ばされます。治具確認や初物検査はM01にしておき、量産段階でスイッチをOFFにするだけで流れるようにしておくのが現場の定石です。M01が条件です。
最後に、Mコードに関する知識は取扱説明書だけでなく、FANUCのプログラミングマニュアルや機械メーカーの技術資料も合わせて参照すると深く理解できます。日本では特にファナック系NCの普及率が高く、ファナックの公式マニュアルは基準として機能します。ただしメーカー独自コードについては機械の仕様書が最優先の情報源です。
monoto:Mコードとは|NCプログラムで補助動作を指示するコードの基本解説
これで十分なリサーチが集まりました。記事の内容を構築します。

HiKOKI(ハイコーキ) 18V インパクトドライバー FWH18DA 2.0Ah バッテリー1個・充電器・ケース付 充電式 電動ドライバー FWH18DA(BG)