NCプログラム入門「オークマ(OSP)編」

NCプログラム

この記事は

  • NCプログラムって取説を見ても、よくわからない!
  • とりあえず機械を動かせるようになりたい!
  • オークマ(OSP)の機械はじめて使う!

そんな人にNCプログラムをわかりやすく解説します。この記事を読むと、簡単なNCプログラムを自分で作れるようになります

NCは、数値制御という意味の英語「Numerical Control」の頭文字をとったものです。

CNCは、コンピュータ数値制御のことです。最近の工作機械はCNCになりますが、当サイトではNCで統一します。

この記事ではオークマのNC装置「OSP」のプログラムの説明をします。

NC言語について

NC言語は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コードに比べ覚えやすくなります。

ニーモニックの注意点

ニーモニックの後にコードを続ける場合はスペースで区切ってください。

間違い例 ✖→ CALLO2110
見た目もわかりにくいですし、アラームになります。

正しい例 ○→ CALL O2110
ニーモニックの「CALL」 の後にスペースを入れてワード「O2110」が入力されている。

ブロック

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行目がらプログラムコードを書いていきます。

機械を動かすそう!

機械を動かすときは、次の内容を決める必要があります。

  1. 原点(基準の位置)
    • G15 H1~H200の中から加工原点を指定します。 

  2. 動かすモード(削るか 削らないか)
    • G0 削らないとき 早送り
    • G1 直線で削るとき 切削送り

       
  3. 位置指令のモード(絶対値か 相対値か)
    • G90 絶対値指令 原点からの位置
    • G91 相対値指令 現在地からの距離

  4. 位置指令(ディメンションアドレスとデータ)
    • 移動させるX Y Z の位置

プログラム例

G15 H1
G0 G90 X100 Y100

「原点 オフセット H1 を使って、早送りで、絶対値で座標X100 Y100 に移動しなさい。」という意味になります。

G15H1、G90、 G0 はいずれも一度指令されると同じグループのGコードが指令されるまで保持されます。これを「モーダル」と呼びます。この機能により同じコード何度も記述の必要がありません。

G0 G90 X100 Y100
G0 G90 X125 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 については後らか説明します。
上のプログラム例だと

  1.  X100 Y100
  2.  X200 Y100
  3.  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の加工しません。

  1.  X200 Y100
  2.  X400 Y200

2か所にG81の加工をします。

OSPの固定サイクルでの注意
通常OSPの固定サイクルはR点(レファレンス)復帰です。安全な工具の高さ(指定点)まで復帰させるためにはMコードとGコードの入力が必要です。

コード説明
M54R点復帰 (初期状態)
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
補正番号について

補正番号は工具番号「T」と揃えるのが一般的です。

サブプログラムを使おう!

同じプログラムを繰り返すときは「サブプログラム」を使うと効率的にプログラムを作れます。

  • 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プログラムを打ち込むとなると難しいと思います。

基本的には以下の順番で記述すればOKです。

 工具交換
  ↓
 加工開始位置に移動
  ↓
 加工開始
  ↓
 終了、または工具交換

これを終わるまで繰り返します。

工具交換
T_ M6

加工開始位置
G15H_
G0G90X100Y20
G56Z100H_

加工開始するときは
S_M3 ;
穴の加工ならM53G71_ / G81などの固定サイクル
同じ工具経路を繰り返すならサブプログラムを使いましょう。

工具交換の前は必ずキャンセルしましょう
G80 穴加工キャンセル
G40 径補正キャンセル

この手順でNCプログラムを作って行きます。

ザックリとした説明ですが、いかがでしたか?
基本を押さえたら実践あるのみです。
参考にしていただければ幸いです。