NCマクロプログラムについて
このコラムではNCマクロプログラムについて、ブラウザ上で動作するNCプログラムシミュレーションソフト NCVIEW Trial (無料お試し版)を併用しながら解説します。
NCマクロプログラムは、CNCの種類によってはカスタムマクロや、単にマクロとも呼ばれます。
NCデータの検証や、システム変数・マクロ呼び出しの確認にご活用ください。
マクロプログラムとは
マクロプログラム(マクロ)とは、変数や条件分岐などを使用できるNCデータ指令の機能です。サブプログラムを共通化(部品化)できるので、プログラム作成の工数削減や、別の加工への流用が容易になります。
とくに、同じ工程を繰り返し実行する場合や、複雑なNCデータで加工する際に力を発揮します。
※以下の説明ではとくに断らないかぎりファナック(FANUC)を基にして説明します
次の図は、加工Aを3回繰り返すNCデータの例です。
同じ加工データを3回記述するとNCデータが冗長になり、プログラムの修正が面倒になります。
加工Aを3回繰り返すマクロを指令すれば、加工Aの記述は1度で済むようになります。
次の図は
・加工Aとそれに類似した加工A’のデータ
・加工AとA‘に共通したデータ
がある場合のNCデータの処理の流れです。
左側では、AとA’に共通の加工が2個所指令されています。
これらを共通化・処理分岐させて、右側のように加工AとA’をまとめてサブプログラムにします。さらに、サブプロ呼出し時の状況で、マクロを使い処理を分岐させています。
このように、マクロを使えばNCデータを共通化でき、プログラムの使用・作成の効率が上がります。
具体的には、同じ形状の加工が深さを変えながら繰り返すポケット加工やヘリカル加工、また角度を指定する割り出し、加工位置が違うだけの円周加工、ワーク位置計測のプローブ動作で力を発揮します。
NCVIEWはマクロデバッガにより、こうしたマクロ動作の正確なシミュレーションと効率的なデバッグ環境を実現し、マクロによる加工の検証効率を向上できます。
AAC(自動アタッチメント交換)と五面加工
このデータではマクロを使ったAAC(自動アタッチメント交換)と五面加工、3次元座標変換について解説します。
NCデータの概要は、
(1) システム変数にアタッチメントの寸法とワーク座標系の値をセット
(2) Mコードによるマクロ呼び出しで加工面ごとのアタッチメントを装着
(3) Gコードによるサブプロ呼び出しで3次元座標変換を行い五面加工
となります。
一つずつNCVIEW Trial の画面と合わせて説明します。
使うデータ名は[アタッチメント旋回]です。
(1) システム変数にアタッチメントの寸法とワーク座標系の値をセット
NCデータの先頭では#変数に加工に使用する値をセットします。
・3~9行目でアタッチメントの寸法
・10~15行目でワーク座標系の値(G54, G55)
を行っています。
各#変数にセットされた値は[マクロデバッガー] の [システム変数] 欄から確認できます。
(2) Mコードによるマクロ呼び出しでアタッチメントを装着
22行目のM56T1000 で AAC用のマクロ(O9021)を呼び出します。
O9021内では指令されたT番号ごとに処理を分岐しています。このデータではT1000, T1200,T1300のアタッチメント番号を使用しています。それ以外の番号、たとえばM56T1500などと指令すると116行目でNCアラームとなります。
マクロを呼出しした側の引数(T1000)は[マクロデバッガー] の [ローカル変数]で確認できます。(Tは#20の値に入る)
また、[スタック]で呼出し側のプログラム番号や指令を確認できます。
(3) Gコードによるマクロ呼び出しで3次元座標変換を行い五面加工
43行目でG65を使ってマクロ(O9023)を呼び出します。O9023が3元座標変換用のマクロプログラムです。その際にBとCを引数に指令し、加工面を指定しています。
O9023でアタッチメント番号ごとに補正とG68による3次元座標変換を行います。
また[ウォッチ]で任意の変数を入力すれば、#変数の値を確認できます。数式も入力できます。
マクロ多重呼び出し
マクロ内でマクロ呼び出しを行い、マクロ多重呼び出しを指令することも可能です。
例えば
- メインプログラムO9000でG65P9001を指令してマクロO9001を呼び出す(黒線)
- O9001内でG65P9002を指令してO9002を呼び出す(緑線)
- O9002がM99で終了したらO9001へ戻る(黄線)
- O9001がM99で終了したらO9000へ戻りM30で終了
この流れを示したのが次の図です。
多重呼び出しを使うことで計測・プローブ用のマクロ、穴空け用のマクロ、工具交換用のマクロ……など、種々のマクロを組み合わせて指令できます。
マクロ呼び出しの深さはネストと呼ばれます。
以下ではNCVIEW Trialを用いてマクロ多重呼び出しの実例を示します。
使うデータ名は[傾斜面加工]です。
6行目のG65I0.J45.K0.P9002は工具の傾きを指令するマクロです。IJKの引数がそれぞれ傾きを決定します。
O9002内の40行目でさらに穴あけ用のマクロO9003を呼び出します。Tは工具番号、Qはワーク座標系、ZとRは穴あけの位置、I#4 J#5 K#6 には6行目で指令した引数の値(0, 45,0)がそれぞれ入ります。
[マクロデバッガー] の [スタック]で呼び出した引数の値やマクロのネストごとに呼び出した指令を確認できます。O9003がM99で終了すると41行目が実行されます。このように、工具番号や加工面の値が違うけど同じような加工をしたい、というような状況でマクロ呼び出しが力を発揮します。
プローブとワーク座標系
ワーク座標系を手入力するのではなく、ワークの位置や寸法から設定したい場合があります。段取りによるワーク位置の変更や、工程ごとにワーク形状が変わった場合などが例に挙げられます。
NCデータは[プローブ]を使用します。
初めに各座標系の値の初期化を行います。#5221~#5303がG54~G58のXYZの値です。ここではすべて0に初期化します。
次にG31(スキップ)を使ってプローブ工具をワークに接触させます。
24~26行目で、このときの工具位置を対応するワーク座標系のシステムへ値をセットします。
[マクロデバッガー] の [変数スタック] で更新された#変数の前後の値を確認できます。ここでは#5221が0から100(#5061の値)に更新されています。この動作を各ワークの面で繰り返し、G54~G58の値を測定します。測定したワーク座標系の値は [設定]-[ワーク設定]-[ワーク座標系]で値を確認できます。ワーク座標系の表に直接入力し、シミュレーションへ反映することもできます。
OSP(オークマ)のマクロ
OSP(オークマ:以下OSP)でもFANUCと似たような形式でマクロを使えます。
機械によっては「サブプログラム機能」や「ユーザータスク機能」とも呼ばれます。
指令形式がFANUCと若干異なるので、[マクロプログラム(OSP)]を使って見ていきます。
最初の4行でG15H1の座標系に対応するシステム変数へ値をセットして初期化します。(FANUCのG54に相当します)。
NCVIEWではVZOF*(ワーク座標系)のシステム変数のほかに
・VTOFH(工具長補正量)
・VTOFD(工具径補正量)
・VATOL(現在の工具番号)
・VNTOL(次の工具番号)
・VAPA*(工具現在値)
などのシステム変数を使ったシミュレーションに対応しています。
上記のシステム変数は [マクロデバッガー] の [システム変数]欄から値を確認できます。
また、17行目のCALL O1000でサブプロO1000を呼び出しています。
この指令で呼び出したとき、O1000のなかではLXがコモン変数VC1の値、同様にLY,LZの値をVC2,VC3の引数で指定しています。
サブプロ呼び出しの指令は
・CALL
・MODIN
・Gコードマクロ
・Mコードマクロ
などがあります。NCVIEWではこれらの指令にも対応しています。
次に、35行目~40行目のプログラムを見ていきます。
処理の流れは
・36, 37行目でコモン変数に値をセット(36, 37行目)
・セットされた値でG01切削送り(38行目)
・VC15の値を更新(39行目)
・VC15の値がVC12より小さければN003(35行目)へジャンプ
となっています。このようなマクロを指令することで、コモン変数の値を制御しつつプログラムを繰り返すことができます。
[マクロデバッガー] の [ウォッチ] に値を見たい変数を入力することで、各ブロック実行後の変数の値を確認できます。