この記事は
そんな人にNCプログラムをわかりやすく解説します。この記事を読むと、簡単なNCプログラムを自分で作れるようになります。
NCは、数値制御という意味の英語「Numerical Control」の頭文字をとったものです。
CNCは、コンピュータ数値制御のことです。最近の工作機械はCNCになりますが、当サイトではNCで統一します。
この記事ではオークマのNC装置「OSP」のプログラムの説明をします。
NC言語について
NC言語はNC工作機械を動かすためのプログラミング言語です。
NC装置のメーカーや製造時期によっても違うので個別に覚える必要があります。
ワード
NC言語はアルファベットと数値の組合せて1つの命令になります。
アルファベットをアドレス、数値をデータと呼びます。
アドレスとデータをあわせて、「ワード」ができます。
(例) G91
「G」→アドレス 「91」→データ 「G91」→ワード になります。
アドレスに使うアルファベット
アドレスは用途にって決まっています。
アドレス | 用途 |
O | プログラム名(※1) |
N | シーケンス名(※1) |
G | 準備機能 |
M | 補助機能 |
X Y Z | ディメンションアドレス(※2) |
F | 送り機能 |
S | 主軸機能 |
T | 工具機能 |
D H | 補正機能 |
P R Q | その他 |
※1 数字でなくてもOKです。アルファベット、数字の順でを組み合わせて使えます。
(例)OMIAN、OS10、NSTART、NST10など
※2 軸を表します。工作機械の仕様によります。U、V、W、A、B、Cを使うこともあります。
ニーモニック
OSPの最大の特徴としてニーモニックコードが使われていることが挙げられます。他のNC言語ではあまり使われませんが、アルファベットだけのコードで、意味を連想しやすくなります。
ニーモニック | 用途 | 参考 |
NCYL | 固定サイクルの実行しない | ノーサイクル |
CALL | サブプログラム単純呼び出し | コール |
RTS | サブプログラムの終了 | リターンサブ |
MODIN | サブプログラムの軸移動時呼び出し”入” | モードイン |
MODOUT | サブプログラムの軸移動時呼び出し”切” | モードアウト |
このようにGコードやMコードに比べ覚えやすくなります。
ブロック
G15 H1 G0 G90 X100 Y-50.6 G56 Z100 H60 M30
4行のプログラムですが、この行のことをNC言語では「ブロック」と呼びます。
ブロックは1つ以上のワードで作られてます。
とりあえず、これだけは覚えよう!「最低限必要なのNCプロクラムコード」
OSPはパソコンのファイルのように用途に応じて拡張子を使います。
ファイルの拡張子について
ファイル名の例
NCFILE.MIN
NCFILEがファイル名で.MINが拡張子
通常作ったNCプログラムを動かすために使う拡張子は .MIN です。メインファイル(MAINの略)で覚えましょう。
ファイルの1行目がらプログラムコードを書いていきます。
機械を動かすそう!
機械を動かすときは、次の内容を決める必要があります。
- 原点(基準の位置)
- G15 H1~H200の中から加工原点を指定します。
- G15 H1~H200の中から加工原点を指定します。
- 動かすモード(削るか 削らないか)
- G0 削らないとき 早送り
- G1 直線で削るとき 切削送り
- 位置指令のモード(絶対値か 相対値か)
- G90 絶対値指令 原点からの位置
- G91 相対値指令 現在地からの距離
- 位置指令(ディメンションアドレスとデータ)
- 移動させるX Y Z の位置
プログラム例
G15 H1 G0 G90 X100 Y100
「原点 オフセット H1 を使って、早送りで、絶対値で座標X100 Y100 に移動しなさい。」という意味になります。
G15H1、G90、 G0 はいずれも一度指令されると同じグループのGコードが指令されるまで保持されます。これを「モーダル」と呼びます。この機能により同じコード何度も記述の必要がありません。
G0 G90 X100 Y100G0 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」でキャンセルされます。
G15H1 G0 G90 X100 Y100 Z100 S1000 M3 M53 G71 Z100 G81Z-5 R5 F100 X200 X400 Y200 G80 M5
M53 G71 Z100 については後からか説明します。
上のプログラム例だと
- X100 Y100
- X200 Y100
- X400 Y200
3か所にG81の加工をします。
「ノーサイクル NCYL」について説明します。
G15H1
G0 G90 X100 Y100
Z100
S1000M3
M53 G71 Z100
NCYL G81 Z-5 R5 F100
X200
X400 Y200
G80 M5
上のプログラム例は固定サイクルの前に「NCYL 」というワードを加えました。
※NCYL の後にスベースを忘れないようにしてください。
最初のX100 Y100 の位置では「ノーサイクル NCYL」が働きG81の加工しません。
- X200 Y100
- X400 Y200
2か所にG81の加工をします。
OSPの固定サイクルでの注意
通常OSPの固定サイクルはR点(レファレンス)復帰です。安全な工具の高さ(指定点)まで復帰させるためにはMコードとGコードの入力が必要です。
コード | 説明 |
M54 | R点復帰 (初期状態) |
M53 | 指定点復帰 |
G71 | 指定点の指定 |
つまり固定サイクルのたびに安全な工具の高さに戻すためには特別にコードを入力する必要があります。初期状態ではM54(R点復帰)なので安全な工具の高さを指定して指定点まで戻りましょうというコードが必要です。そのコードは下のように入力します。
- M53 G71 Z100
固定サイクルの後はZ100 まで戻るという意味です。リセットするとM54に戻るため固定サイクルの前は毎回 M53 G71 Z_ の入力します。
補正機能を使おう!
工具の長さや工具の径は変化することが多いので補正機能を使うことにより同じプログラムを使うことができます。
原点 G15 H1~H200 も補正機能(オフセット)の1つです。
NCの工作機械は不変的な機械座標系があります。ワークをセットする場合、毎回取り付け位置が変わります。それを補正するワーク座標系(原点 H1~H200)の設定です。
同様に工具の長さは工具により違います。その補正機能が工具長補正「G56」です。工具の長さを測定してあらかじめ「H番号」に設定しておきます。
G15 H1 G0 G90 X0 Y0 G56 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
サブプログラムを使おう!
同じプログラムを繰り返すときは「サブプログラム」を使うと効率的にプログラムを作れます。
- CALL O [プログラム名] Q [繰り返し回数] (繰り返さないときは [Q1] 省略可)
- RTS メインプログラムに戻る
G15 H1 原点オフセットH1番を選択 G0 G90 X60 Y20 加工スタート位置に移動 G56 Z100 H21 Z位置決め(工具長補正) S500 M3 回転数500 正転 Z10 加工開始高さ CALL O101 Q5 サブプログラム呼び出し G0 Z100 M5 回転停止 M30 プログラム終了 O101 プログラム名 (サブプログラム) G1 G91 Z-2F300 切込 G90 X160 F500 加工経路 G0 G91 Z20 G90 X-60 スタート位置へ戻す G91 Z-20 G90 RTS サブプログラムの終わり(メインへ)
上のプログラムは Z8 Z6 Z4 Z2 Z0 で5回サブプログラムを実行します。
プログラムが短くて済みますね。
次は穴加工の例です。
G15 H1 T1 M6 工具交換 N10 (CENTER) シーケンス番号(コメント) G0 G90 X0 Y0 G56 Z100 H1 S1000 M3 ; M53 G71 Z100 固定サイクル指定点戻し NCYL G81 Z-2 R3 F100 CALL O201 サブプログラム G80 T2 M6 工具交換 N20 (DRILL) シーケンス番号(コメント) G0 G90 X0 Y0 G56 Z100 H2 S1200 M3 M53 G71 Z100 NCYL G83 Z-20 R3 Q3 F120 CALL O201 サブプログラム G80 M30 O201 サブプログラム X10 Y20 X20 Y25 X-30 Y-31 RTS
穴位置を入れるため穴加工でもサブプログラムはよく使います。
サブプログラムのメリット
- NCプログラムが短くできる。
- NCプログラムの確認が少なくできる。
- NCプログラムの記述ミスの簡単に直せる。
まとめ
NCプログラムは、
- アドレスとデータをセットにして意味を持つ「ワード」ができます。
- ワードのは別にニーモニックと呼ばれるアルファベットのみで構成されるコードがあり、主にGコード、Mコードと同じように扱われる。
- ワードを1つ以上並べ「ブロック」を作りる。OPSの場合はブロックは改行単位になります。
- NCのプログラムはブロック単位で実行されます。
実際にNCプログラムを打ち込むとなると難しいと思います。
これを終わるまで繰り返します。
工具交換は
T_ M6
加工開始位置は
G15H_
G0G90X100Y20
G56Z100H_
加工開始するときは
S_M3 ;
穴の加工ならM53G71_ / G81などの固定サイクル
同じ工具経路を繰り返すならサブプログラムを使いましょう。
工具交換の前は必ずキャンセルしましょう。
G80 穴加工キャンセル
G40 径補正キャンセル
この手順でNCプログラムを作って行きます。
ザックリとした説明ですが、いかがでしたか?
基本を押さえたら実践あるのみです。
参考にしていただければ幸いです。