この記事は
そんな人にNCプログラムをわかりやすく解説します。この記事を読むと、簡単なNCプログラムを自分で作れるようになります。
NCは、数値制御という意味の英語「Numerical Control」の頭文字をとったものです。
CNCは、コンピュータ数値制御のことです。最近の工作機械はCNCになりますが、当サイトではNCで統一します。
この記事では「ファナック(FANUC)」の説明をします。
NC言語について
NC言語はNC工作機械を動かすためのプログラミング言語です。
NC装置のメーカーや製造時期によっても違うので個別に覚える必要があります。
ワード
NC言語はアルファベットと数値の組合せて1つの命令になります。
アルファベットをアドレス、数値をデータと呼びます。
アドレスとデータをあわせて、「ワード」ができます。
(例) G91
「G」→アドレス 「91」→データ 「G91」→ワード になります。
アドレスに使うアルファベット
アドレスは用途にって決まっています。
- O プログラム番号
- N シーケンス番号
- G 準備機能 (Gコード)
- M 補助機能 (Mコード)
- X Y Z ディメンションアドレス (軸)データには小数点が必要です。
- F 送り機能
- S 主軸機能
- T 工具機能
- D H 補正機能
- P Q R その他
ブロック
O1000 ; G0 G90 G54 X100. Y-50.6 ; G43 Z100. H60 ; M30 ;
4行のプログラムですが、この行のことをNC言語では「ブロック」と呼びます。
ブロックは1つ以上のワードで作られてます。
行の終わりの「;」セミコロンを「EOB」(End Of Block エンド オブ ブロック)と呼びます。「EOB」によって改行されます。
とりあえず、これだけは覚えよう!「最低限必要なのNCプロクラムコード」
まずNCプログラムの最初の部分はプログラム名です。
O2020(PROGRAM NAME)
カッコはコメントです。機械動作には影響しません。分かりやすくするためのメモに使います。
機械を動かすそう!
機械を動かすときは、次の内容を決める必要があります。
- 原点(基準の位置)
G54~G59の中から加工原点を指定します。 - 動かすモード(削るか 削らないか)
G0 削らないとき 早送り
G1 直線で削るとき 切削送り
- 位置指令のモード(絶対値か 相対値か)
G90 絶対値指令 原点からの位置
G91 相対値指令 現在地からの距離 - 位置指令(ディメンションアドレスとデータ)
移動させるX Y Z の位置 (データに小数点が必要です)
プログラム例
G54 G0 G90 X100. Y100. ;
「原点G54、早送りで、絶対値で座標X100.Y100. に移動しなさい。」という意味になります。
G54 G90 G0 はいずれも一度指令されると同じグループのGコードが指令されるまで保持されます。これを「モーダル」と呼びます。この機能により同じコード何度も記述の必要がありません。
G54 G0 G90 X100. Y100. ;G54 G0 G90X125. Y135. ; 上のブロックで指令があるので省略できる
穴をあけるなら!
穴の加工には「固定サイクル」が用意されています。
主なものを挙げます。
- G81 単純な穴加工
G81 Z-10. R3. F100 - G73 高速で深い穴の加工(切りくずを切る動きをする)
G73 Z-25. R3. Q3. F100 - G83 深い穴の加工(切りくずを切る動きをする)
G83 Z-50. R3. Q3. F100 - G84 タップの加工
G84 Z-25. R3. F300
固定サイクルは「モーダルなGコード」なので、下のブロックに座標位置を記述すれば穴の加工を繰り返してくれます。「G80」でキャンセルされます。
G54 G0 G90 X100. Y100. ; G81Z-5. R3. F100 ; X200. ; X400. Y200. ; G80 ;
上のプログラム例だと
- X100.Y100.
- X200.Y100.
- X400.Y200.
3か所にG81の加工をします。
「ノーサイクル K0」について説明します。
G54 G0 G90 X100. Y100. ;
G81Z-5. R3. F100 K0 ;
X200. ;
X400. Y200. ;
G80 ;
上のプログラム例は2ブロック目に「K0」というワードを加えました。
最初のX100. Y100. の位置では「ノーサイクル K0」が働きG81の加工しません。
- X200.Y100.
- X400.Y200.
2か所にG81の加工をします。
補正機能を使おう!
工具の長さや工具の径は変化することが多いので補正機能を使うことにより同じプログラムを使うことができます。
原点G54~G59も補正機能(オフセット)の1つです。
NCの工作機械は不変的な機械座標系があります。ワークをセットする場合、毎回取り付け位置が変わります。それを補正するワーク座標系(原点 G54~G59)の設定です。
同様に工具の長さは工具により違います。その補正機能が工具長補正「G43」です。工具の長さを測定してあらかじめ「H番号」に設定しておきます。
G54 G0 G90 X0 Y0 ; G43 Z100. H10 ; 工具長補正機能 H10の補正
工具径は工具径補正機能でGコードは「G41又は G42」で、工具径の値を「D番号」に設定しておきます。「G40」でキャンセルされます。
G41は進行方向に対して左側補正、G42は進行方向に対して右側補正です。ダウンカット(正転M3の時はG41)をオススメします。
G0 G90 X-20. Y15. ; Z-10. ; G1 G41 X0. Y-5. D10 F1000 ; 工具径補正 ON D10の補正 X5. Y0 ; G40 X25. Y20. ; 工具径補正 OFF
サブプログラムを使おう!
同じプログラムを繰り返すときは「サブプログラム」を使うと効率的にプログラムを作れます。
- M98 P [プログラム名] L [繰り返し回数] (繰り返さないときは [L1] 省略可)
- M99 メインプログラムに戻る
O100 ; プログラム名 (メインプログラム) G0 G90 X60. Y20. ; 加工スタート位置に移動 G43 Z100. H21 ; Z位置決め(工具長補正) S500 M3 ; 回転数500 正転 Z10. ; 加工開始高さ M98 P101 L5 ; サブプログラム呼び出し G0 Z100. M5 ; 回転停止 M30 ; プログラム終了 O101 ; プログラム名 (サブプログラム) G1G91Z-2.F300 ; 切込 G90 X160. F500; 加工経路 G0 G91 Z20. ; G90 X-60. ; スタート位置へ戻す G91 Z-20. G90 ; M99 ; サブプログラムの終わり(メインへ)
上のプログラムは Z8 Z6 Z4 Z2 Z0 で5回サブプログラムを実行します。
プログラムが短くて済みますね。
次は穴加工の例です。
O200 ; T1 ; 工具呼び出し M6 ; 工具交換 N10 (CENTER) ; シーケンス番号(コメント) G54 G0 G90 X0 Y0 ; G43 Z100. H1 ; S1000 M3 ; G81 Z-2. R3. F100 K0 ; M98 P201 ; サブプログラム G80 ; G91 G28Z0 M5 ; 原点復帰 T2 ; 工具呼び出し M6 ; 工具交換 N20 (DRILL) ; シーケンス番号(コメント) G54 G0 G90 X0 Y0 ; G43 Z100. H2 ; S1200 M3 ; G83 Z-20. R3. Q3. F120 K0 ; M98 P201 ; サブプログラム G80 ; G91 G28Z0 M5 ; M30 ; O201 ; サブプログラム X10. Y20. ; X20. Y25. ; X-30. Y-31. ; M99 ;
穴位置を入れるため穴加工でもサブプログラムはよく使います。
サブプログラムのメリット
- NCプログラムが短くできる。
- NCプログラムの確認が少なくできる。
- NCプログラムの記述ミスの簡単に直せる。
まとめ
NCプログラムは、
- アドレスとデータをセットにして意味を持つ「ワード」ができます。
- ワードを1つ以上並べ「ブロック」を作り、「EOB」でブロックの終わりが認識されます。
- NCのプログラムはブロック単位で実行されます。
実際にNCプログラムを打ち込むとなると難しいと思います。
これを終わるまで繰り返します。
工具交換は
T_ ;
M6 ;
加工開始位置は
G54G0G90X100.Y20.
G43Z100.H_ ;
加工開始するときは
S_M3 ;
穴の加工ならG81などの固定サイクル
同じ工具経路を繰り返すならサブプログラムを使いましょう。
工具交換の前は必ずキャンセルしましょう。
G80 穴加工キャンセル
G40 径補正キャンセル
この手順でNCプログラムを作って行きます。
ザックリとした説明ですが、いかがでしたか?
基本を押さえたら実践あるのみです。
参考にしていただければ幸いです。