CAMオペレーターが知っていると便利なNCコード

NCデータサンプル

CAMで作成したツールパスをポスト処理をしてNCデータに変換します。NCデータは、NCプログラムという場合もあります。

出力したNCデータは、実加工部分は熟練したマシンオペレータでも読み切ることは不可能ですが、実加工部以外の最初の部分や最後の部分は、ある程度NCコードを覚えていれば、目視チェックが可能になります。

また、複数メーカーのマシニングセンタを保有している場合には、通常その機種用のポストを通す必要があるため、予定変更で加工直前などに機種が変更になった場合ポストを変更してNCデータを出力しなおす必要が出てきます。

しかし、機種が違っていても例えば同じFanucベースのNC装置を使っている場合には、実加工部以外の「プログラム開始から加工開始直前の部分」と「加工終了後からプログラム終了部分まで」を書き換えるだけで対応することが可能な場合がある。

加工開始を必ず「X0 Y0 Z50.0」の位置から開始し、「X0 Y0 Z50.0」の位置で終了するようにプログラムを組むようにすると、実加工部をサブプロとして使用し、メインプログラムで工具呼び出しから加工開始位置までの移動→サブプロ呼び出し(実加工)→加工終了位置から工具を安全に退避させるという流れでくむことでポストの再処理が不要になります。

3軸立形マシニングセンタ用Fanuc系の基本的なNCコードを解説します。
機種により使えるコード・使えないコードがありますので、詳細はマニュアルを確認してください。

NCコードの基本

GコードやMコードなどアルファベット+数値の組み合わせで構成されているにそれぞれ機能があてはめられています。アルファベット+数値をNC用語でワードと呼びます。

それらを1行にまとめた形にします。NC用語では、1行のことをブロックといい、NC装置は、1ブロックごとに処理をしていきます。

各種コードは、前0省略・小数点以下の0省略が可能になっています。
G00とG0は同じコード。M03とM3は同じコード。
X.3は、X0.3の意味。Z50.は、Z50.0の意味になります。
ただし、座標関連XYZなどの数値は、小数点を省略するとマシニングセンタの最小単位基準の数値になります。最小単位が4桁のマシニングセンタの場合、Y3は、Y0.0003と同じ意味になります。

各種コードのアルファベットは大文字を使い、ワードをいくつか続けて書きます。

G01 X15.0 (ワードとワードの間に半角スペース有)
G01X15.0 (ワードとワードの間に半角スペース無)

というように半角スペースの有無はどちらも同じ認識なります。しかし、テキストエディタで編集する場合、間違えて全角スペースが混ざるとエラーになります。

データスタート/データエンド(%)

プログラムの一番初めの行と一番最後の行に「%」が書かれている場合があります。
最初の%はプログラム開始の宣言・最後の%はプログラムの終わりを意味します。

ちなみに1行毎の終わりに「;(セミコロン)」エンドオブブロック(EOB)を書くことになっています。PCなどのテキストエディターでは、改行コードと同じ扱いなのでCAMで出力したNCデータには、EOB(;)は出力されないことが多いです。

プログラム番号(O番号)

O+4桁の数値で表し、%の次にプログラム番号として書かれています。

メモリ上に読み込まれる場合には、番号は重複することはできません。また、9000番台など機種によって使ってはいけない番号もあります。

シーケンス番号(N番号)

N+数値の組み合わせで、目印として使います。
同じ工具内で加工の変わり目や工具交換の直前などに書かれることがあります。

コメント(括弧)

括弧()で囲われた部分は、注釈など入れたい場合に使います。CAMで作ったファイル名や使用する工具名などをわかりやすくするときに使用します。

古い機種だとアルファベットの小文字や日本語(全角文字)や特殊な記号などは、エラーの原因になります。

オプショナルブロックスキップ(/)

行の最初にスラッシュ(/)を付けた場合、機械のほうでオプショナルブロックスキップがONの時、その行を無視します。

/ M00
/ G65 P9000 ・・・・・

などのようにプログラム中に工具計測やワーク計測を行うマクロなどを入れている場合、一度計測をすれば2個目以降は計測不要になるので、オプショナルブロックスキップをONにする。
という形で使用します。

プログラムストップ(M00)/オプショナルストップ(M01)

加工途中に一時停止させる場合に使用します。
工具交換の直後や加工の切り替わりの部分など必要に応じて使います。

M00(プログラムストップ)は、必ず一時停止させるとき、
M01(オプショナルストップ)は、機械のほうでオプショナルストップがONになっているときに一時停止します。

M01は、複数個加工するときなど一個目の加工はポイント毎に確認しながら進めるのでオプショナルストップをONにし、2個目以降は連続加工させるためにオプショナルストップをOFFにする。
という形で使用します。

加工開始前までによく使われるコード

各種Gコードのリセット

Gコードには、指定したブロックでのみ有効なワンショットなGコードと同一グループの別なGコードが指示されるまで有効なモーダルなGコードがあります。
モーダルなGコードは、それ以降継続する場合は、省略することができることになっています。

マシニングセンタの電源をONにしたときは、必ずリセットがかかります。
また、M02やM30などプログラム終了コードを読み込むとリセットがかかるコードがありますが、電源ON状態には戻り切らないコードがあります。
加工途中でプログラムを終了した場合は、電源ON状態には戻り切らないコードがあります。

そのため、工具交換より前に各モーダルなGコードを初期状態に戻すため、

G21 G00 G17 G40 G49 G80 G90

というように1ブロックにまとめて指示を出します。

  • G21=メトリック入力 (G20=インチ入力)
  • G00=位置決め (G01=直線補間・G02/G03円弧補間)
  • G17=XY平面 (G18=XZ平面・G19=YZ平面)
  • G40=工具径補正キャンセル (G41/G42工具径補正)
  • G49=工具長補正キャンセル (G43/G44工具長補正)
  • G80=固定サイクルキャンセル (各種固定サイクル)
  • G90=アブソリュート指令 (G91=インクレメンタル指令)

主だったものを列挙しています。また、順番は問いません。機種によって過不足が変化します。
しかし、例えば、起動直後の加工はうまくいくのに、2個目の加工でエラーが出たり、ドライランで確認し途中で止めて、実加工に移るとエラーが出る場合など、必須な項目を調整します。

リファレンス点復帰(G28)

3軸立形マシニングセンタでは、多くの機種で各軸の可動範囲のプラス端を機械座標系の原点としています(右奥の上に主軸がある状態が多く、ATCの位置などにより原点位置が違う場合もあります)。
機械座標系の原点をリファレンス点とよび、原点に移動させることをリファレンス点復帰といい、G28を使います。

G91 G28 Z0.
G91 G28 X0. Y0.

G28は、正式には、経由点を通り原点に移動するということになるので、一般的には、相対座標(G91)でZ0.を同時に指定し、経由点を0距離に指定します。
XY方向も同様に経由させたい点はないので座標値は基本「0」で指定します。

工具がどのような位置にあったとしても、Z方向を上側に動かす分には、どこにも干渉しないはずなので、Zをまず原点復帰させ、Z軸が機械原点にある場合、XY方向は自由に動けるはずなので、その後XY軸を原点復帰させるように動かします。

基本的には、慣用句的にこの2行は工具交換前やプログラム終了前に指示を出します。
G28の行にG90を使うとワーク座標系の原点を経由することになり、加工物にぶつかる可能性が出てきますので、必ずG91を使い、2行目のG28でもG91は省略しないほうがいいかもしれません。

機械座標系の原点と工具交換位置が別な場合などでは、第2原点として登録し、G30(第2リファレンス点復帰)で指示します。

工具交換(M06)

工具交換をするときは、M06を指示ます。
単独指示をした場合、ATC(オートツールチェンジャー)の工具交換待機位置にある工具と現在主軸についている工具を交換します。

一般的にはT(工具番号)コードとセットで使用します。Tコードは、単独指示した場合、ATCの工具待機位置に工具番号で指示した工具を移動させます。

T** M06

というようにセットで指示を出すことが一般的で、主軸に指定した工具番号の工具がついている場合は、工具交換は省略されます。

機種によりTコードにマクロを適用させていたり、M06にマクロを適用させている場合は、挙動が異なりますので、マクロの内容を確認してください。

主軸正転(M03)

工具交換後に主軸を時計回りに回転させるときにM03を使用します。あまり使いませんが、逆回転させるときはM04を指示します。

S**** M03

S(主軸回転速度)コードで指示された回転速度で回転します。Sコードの単位は、1分間あたりの回転数(/min=min-1=rpm)になります。加工途中で回転速度を変える場合は、単独指示をします。

主軸の回転を止める場合は、M05を使用します。

ワーク座標系(G54-G59)

機械座標系とは、別にセットしたワークを基準としたワーク座標系を設定することができます。
代表的なワーク座標系はG54~G59を使います。省略した場合は起動直後はデフォルトの座標系、もしくは、最後に使用した座標系が適用されます。
(デフォルトの座標系は多くの場合G54になります。)

工具長補正+(G43)

エンドミルは、突き出し長さが違っています。エンドミルを把持するホルダーもいろいろなサイズのものがありますが、どのような工具を用いた場合もワーク座標系でZ0.の場所は工具先端位置になるように工具長補正+(プラス)を使います。

工具長補正をかける場合は、安全な位置に移動させるときに同時に指示します。

G54
G90 G00 X0. Y0.
G43 H** Z50.

H(工具長補正番号)コードは、一般的には使用しているT番号と同じ番号にします。
ワーク座標系の最初に工具を下降させたい位置まで移動後に、Zで指示した位置まで工具長補正をかけながら移動させます。

マイナス側に工具長補正をかける場合は、G44を使用します。
また、工具長補正をキャンセルする場合は、G49を使用します。

オイルミストON(M07)/クーラントON(M08)

機種により仕様が異なりますが、エンドミルの冷却用にオイルミストやエアーを吐出させる場合はM07、オイルクーラントを吐出させる場合はM08を使用します。

どちらも停止させる場合は、M09を使用します。

加工終了後によく使われるコード

M09
M05
G91 G28 Z0.
G91 G28 X0. Y0.
M30
%

加工物とエンドミルが接触していない安全な位置に移動後、クーラントOFF(M09)や主軸回転停止(M05)などMコード関連の停止やリファレンス点復帰(G28)を行い、最後にプログラム終了コードを出力します。

プログラム終了コード(M02/M30)

プログラム終了コードを実行すると機種により異なりますが、いくつかのリセット処理を実行します。
M02とM30と2種類ありますが、M02はプログラム終了のみで、カーソルがM02の行にいる状態になります。M30はプログラム終了後頭出しを行うので、そのまま起動ボタンを押すと加工が開始されます。

大昔、NCデータは紙テープに印字されていて、頭だしをするかしないかは、続けて加工するときに重要な時代がありましたが、現在は頭出しの有無は作業場たいした差異はなくなったので、基本M02とM30の違いは意識しなくなってきています。

サブプログラムを使用する場合は、メインプログラムで「M98 P****」でサブプログラムを呼び出します。その時サブプログラムの最後は、M99を使用することで、メインプログラムに戻ります。

主なGコード

移動系のGコード(G00/G01/G02/G03)

  • G00=早送り補間→機種で設定されている最高速度で終点座標値に移動
  • G01=直線補間→Fコードで指示されている送り速度で直線状に移動
  • G02=円弧補間(時計回り)→Fコードで指示されている送り速度で時計回りに円弧状に移動
  • G03=円弧補間(反時計回り)→Fコードで指示されている送り速度で反時計回りに円弧状に移動

G00の移動で斜めに移動させるとき、線上を通過する補償はされていません。

送り速度はF***で指示し、1分間あたりの送り量(mm/min)で指示します。

円弧補間(G02/G03)を使用するときに3軸同時に指示をするとヘリカル補間に切り替わります。

円弧補間(G02/G03)では、円弧の中心位置を円弧の始点位置から相対座標(I/J)で指示か、R指定で半径値を指示します。
I/J指示をした場合、円弧の終点座標値の誤差がCAM上の許容値と加工機上での許容値が違いによりエラーが出る場合があります。機種で決められた回避行動をとる場合もあり、全然違う挙動をする場合は、食い込みが発生します。

CAMオペレータとしては、正確な動きの判別は必要ありません。
ある程度、加工物にたいして安全に近づいているかの判別が重要になる

  • 工具長補正G43の行にあるZの値とHの値は適切か
  • その後の動きで早送りで加工物に近付きすぎていないか
  • G01/G02/G03の時のFの値は適切か
  • 工具径補正は、G01の行に出力されているか、Dの値は適切か
  • 一連の加工終了後に適切に加工物から離れているか

などをまずは判別できるようになることだと思いますので、正確な動き方の解説は省略します。

平面指定(G17/G18/G19)

円弧補間(G02/G03)を使う場合に、円弧が動く平面を指定することができます。

  • G17=XY平面 (円弧の中心は、X→I・Y→Jを使用)
  • G18=ZX平面 (円弧の中心は、X→I・Z→Kを使用)
  • G19=YZ平面 (円弧の中心は、Y→J・Z→Kを使用)

アブソリュート指令(G90)/インクレメンタル指令(G91)

移動させるときの座標値を指示するときに、
ワーク座標系の座標値を指示(絶対座標指示)する場合は、アブソリュート指令(G90)を使います。
現在の工具位置から移動する量を指示(相対座標指示)する場合は、インクレメンタル指令(G91)を使います。

ワーク座標系(G54~G59)

ワーク座標系は、代表的な座標系として6個設定することができます。デフォルトは多くの機種でG54になります。

相対座標G91でプログラムを作成した場合に時々G92(ワーク座標系の変更)を使います。

G92 X0. Y0. Z50.

現在のワーク座標系を書き換えるコードになります。上記の場合、現在工具がある位置を「X0.0 Y0.0 Z50.0」に書き換えをします(移動は行いません)。
ワーク座標系を書き換えるコマンドになるので、通常NCデータとしては、無駄な行になります

目視確認用に使いう場合、行の最初にブロックスキップ(/)を付けたり、行を括弧()で囲ったりして実行しないようにしておく場合もあります。

工具径補正(G41/G42)

プログラム経路の進行方向に対して工具を左側にDで指定された量分をオフセットさせる場合はG41を使います。右側にオフセットさせる場合はG42になります。

工具径補正値は、CAMでの作り方により半径値の場合とゼロ(0)の場合があります。

主軸の回転方向がM03(時計回り)の時に輪郭加工でダウンカットする場合は、G41を使います。

G41 D** X10. Y10.

工具径補正は、G01直線補間の行に出力します。移動しながら工具径補正をかけていくので、実加工部以外のアプローチさせる箇所にします。また、G02/G03の行では、エラーになります。
(参考:輪郭加工のアプローチ)
(参考:2次元輪郭加工のNCデータサンプル)

D(工具径補正番号)コードは、一般的には使用しているT番号と同じ番号にしますが、DとHの区分のない機種の場合は、別番号になります。

高精度輪郭制御(G05)/先行制御(G08)

CAMでツールパスを作成した場合、3Dツールパスでは、G01連続線でのNCデータになることが多い。G01のつながりの箇所では、加減速が発生するので予定加工時間に対して、実加工時間が大幅に遅れる場合がある。

この加減速を調整するのが、各メーカーにより表現名が異なりますが、高精度輪郭制御(G05)をつかい加減速を調整します。

実加工開始の前の行に「G05 P10000」を追加し、実加工終了後の行に「G05 P0」を出力します。
高精度輪郭制御に対応していない機種の場合は、「G08 P1」~「G08 P0」に変更します。

多少経路を外れても加減速を抑える設定や加減速は多少発生しても経路を守る設定など、各メーカーで特色を持たせていることが多いので、実際の書式は、加工機付属のマニュアルを参照してご使用ください。

G05やG08で加減速の効果が出ない場合やメモリの容量不足などの場合は、CAM側で円弧フィルター処理を行いG01をG02/G03に結合させます。

固定サイクル

ドリル加工など一連の穴加工をするための一連の動きが登録されていて、固定サイクルとよびます。機種ごとに対応の可否や独自サイクルなど準備されているので、加工機付属のマニュアルを参照してご使用ください。
参考:マスターキャムで穴加工

NCコード一覧

主なGコード

Gコードの正式名称は「準備機能」

G00モーダル位置決め  (早送り)
G01直線補間
G02円弧補間/ヘリカル補間  (時計回り)
G03円弧補間/ヘリカル補間  (反時計回り)
G04ワンショットドゥエル (XやPで指定した時間分一時停止)
G05ワンショット高速サイクル加工
G08ワンショット先行制御
G10ワンショットデータ設定  (XY方向の追込み加工などに利用)
G11ワンショットデータ設定モードキャンセル
G17モーダルXY平面  (円弧補間に使用 デフォルト)
G18ZX平面  (円弧補間に使用)
G19YZ平面  (円弧補間に使用)
G28ワンショットリファレンス点復帰
G30ワンショット第二原点復帰
工作機械で設定されている第二原点へ移動
G40モーダル工具径補正キャンセル
G41工具径補正左  (D番号に格納されている値分オフセット)
G42工具径補正右
G43モーダル工具長補正+  (H番号に格納されている値分オフセット)
G44工具長補正−
G49工具長補正キャンセル
G52ワンショットローカル座標系設定
現在設定されているワーク座標の原点をXYで指定した分オフセット
G53ワンショット機械座標系選択
機械座標の指定した位置に移動
G54モーダルワーク座標系1選択
G55ワーク座標系2選択
G56ワーク座標系3選択
G57ワーク座標系4選択
G58ワーク座標系5選択
G59ワーク座標系6選択
G65ワンショットマクロ呼び出し
G66モーダルマクロモーダル呼び出し
G67マクロモーダル呼び出しキャンセル
G90モーダルアブソリュート指令
G91インクレメンタル指令
G92ワンショットワーク座標系の変更

主なMコード

Mコードの正式名称は「補助機能」

M00プログラムストッププログラムの一時停止
M01オプショナルストップオプショナルストップONの場合プログラムの一時停止
   
M03主軸正転主軸を時計回りに回転
M04主軸逆転主軸を反時計回りに回転
M05主軸停止主軸を停止
   
M06工具交換主軸についている工具と待機位置の工具を交換
   
M07オイルミストONミストを吐出
M08クーラントONクーラントを吐出
M09クーラントOFFクーラントを停止
   
M02プログラムエンドプログラム終了
M30プログラムエンドプログラム終了と頭出し
   
M98サブプログラム呼び出しM98 P**** でサブプログラムを呼び出し
M99サブプログラム終了サブプログラム終了後メインプログラムに戻る

その他のコード

O****プロブラム番号 
N****シーケンス番号
T**工具番号工具交換位置に移動
D**工具径補正番号工具の半径値が格納されている番号
(モーダル)
H**工具長補正番号工具ごとの長さの差異が格納されている番号
(モーダル)
S****主軸回転速度1分当たりの回転数を指定  (min-1=/min=rpm)
(モーダル)
F***送り速度1分当たりの送り量を指定  (mm/min)
(モーダル)

CAMから出力したNCデータがうまく動かないとき

CAM上で動作確認をして問題ないのに実加工時に削りすぎやエラーで動かない場合

確認箇所

  • ボスなどがある形状でボスよりも低い位置でG00で移動している
  • G02/G03のI/Jの値と終点が離れている→(Iの2乗)+(Jの2乗)=(Rの2乗)
    マシニングセンタによって終点誤差の許容値は違います
    同様にCAMによっても終点誤差の許容値は違います
  • G02/G03の平面(G17/G18/G19)があっていない
  • G41/G42がG02/G03の行に出力されている
  • 工具長補正値(H)や工具径補正値(D)が指定した番号に対して違う数値になっている
  • ブロックスキップ(/)の行が実行されている
  • Fanuc系で出力したNCデータをオークマ系の工作機械で動かしている

補足

日本産業規格(JIS)では、
JIS B 6315-1「 産業オートメーションシステム及びその統合-機械の数値制御-プログラムフォーマット及びアドレスワードの定義-第1部:位置決め,直進運動及び輪郭制御システム用データフォーマット」
で代表的なGコードやMコードを定義しています。

各メーカーごともしくは機種ごとに機能の仕様が異なります。使用可否などは、加工機付属のマニュアルをJIS規格よりも優先して確認することをお勧めします。

立形マシニングセンタの軸の方向は、マシニングセンタ正面から上下に動く軸が主軸でZ軸(上方向がプラス)・左右に動く軸がX軸(右方向がプラス)・前後方向に動く軸がY軸(奥方向がプラス)になります。付加軸に関しては、・X軸を基準に回転する軸をA軸・Y軸を基準に回転する軸をB軸・Z軸を基準に回転する軸をC軸と呼びます。

右ねじの法則
右手で親指がX軸・人差し指がY軸・中指がZ軸のプラス方向

横型のマシニングセンタや5軸のマシニングセンタの軸のプラス方向を確認する場合は、
右手の親指と人差し指をLの形にして中指を立てた時(右手フレミングの法則と同じ)、親指がX軸・人差し指がY軸・中指がZ軸のプラス方向になります。
回転軸は右手を握った状態で親指を立てた時、親指がXYZ軸のプラス側に向けるとその他の指の向きが回転軸のプラス方向になります(右ねじの法則と同じ)。

(JIS B 6310 産業オートメーションシステム-機械及び装置の制御-座標系及び運動の記号)
(基本的なNC旋盤は、左右方向が主軸でZ軸・前後方向に動く軸がX軸になります。)

Back to top