NCプログラム/工具径補正

NC

前回、図形を定義する基本的なGコードの説明をしました。
これで、工具経路の輪郭の定義はできるようになると思います。
ただ、これは工具中心経路の定義なので、実際の加工を想定すると工具径も考慮する必要があります。
また、マシニングセンターのような工具を自動で交換する機械の場合には、使用工具の長さも考慮しなければいけません。
前回までのGコードで、工具径や工具長まで考慮してNCプログラムする事は可能ですが、使用工具を変更するたびに移動座標を修正する必要があり、実用的ではありません。
基本的な工具経路の輪郭を定義したNCプログラムを利用して、補正をかける事で加工に使用できるようになります。

工具補正指令 / 工具径・工具長

NCプログラムは、既存の輪郭指令を利用して制御機側の設定で補正をかける事ができます。
この機能により、NCプログラムの修正なしに、使用工具や加工状況に合わせた経路で動作させる事が可能になります。
ただし、補正をかけるコードは、互換性があまりありません。
ファナック系とOSPでも違いますし、ハイデンハインやレダースでは工具管理方法の違いから、補正値を設定しておく補正番号などありません。
まずはファナックでの説明を元に、他の制御機にも触れていこうと思います。
補正には、工具径補正と工具長補正があります。
工具径補正は工具の径方向(製品のサイズ)の調整用です。
工具長補正は工具の長さ(製品の深さ)の調整用です。

工具径補正

図面を描く場合と違って、加工しようとすると、工具の径を考慮する必要があります。
工具径が事前にわかっている場合には、上図青線のように仕上がり寸法に対して、工具半径分オフセットした輪郭を定義する事で加工は可能になります。
ところが、工具径が不明な場合や加工精度が必要な場合には加工時の環境に合わせる必要があります。
その都度データを修正していたのでは大変なので、機械コントローラ側で調整できる仕様を工具径補正といいます。
工具径補正ができる仕様の制御機では、基本輪郭データは適当でいいことになりますが、一般的には2種類の方法で輪郭データを作成します。
一つは、 工具径を考慮しない 仕上がり寸法(図面通り)でデータを作成する方法です。
この場合、加工時の補正は、使用工具半径を入力する事になります。
二つ目は、予定の基本工具径を考慮して、その工具半径分オフセットした形状でデータを作成する方法です。
この場合、データ作成時の基本工具径と使用時の工具径の差を補正として入力します。
ここでは、前者の方法で、図面寸法でデータを作成する方法で説明します。

G41/G42/G40 / 工具径補正指令

補正を使用する際には、工具の進行方向を考慮する必要があります。
加工する場合の工具をイメージして、工具の進行方向の左側に工具が来るような補正には「G41」、工具進行方向の右側に工具が来る場合には「G42」の指令を使用します。
「G41/G42」は指定されたブロックから、次のブロックを先読みし移動方向(ベクトル)を認識してその方向に対して「右側・左側」へオフセットした工具経路が自動的に計算されます。
この工具経路のオフセットされた輪郭は「G40」コードが指令されるまで制御機により自動的に生成されます。
この指令により、「G41/G42」から「G40」までの工具経路は、補正として自動調整された経路となります。

「Gコード グループ07」
・G41 : 工具径補正左
・G42 : 工具径補正右
・G40 : 工具径補正キャンセル

では、補正量はどのようにして決定するのでしょうか?
これは、ファナック系とハイデンハイン・レダースでは方法が異なります。
ファナック系の場合は、「D」+「数字」で指令し、制御機で設定します。
例えば、「G01 G41 X10.0 Y20.3 D01F2000」の指令では、制御機の補正設定画面の「D01」の設定箇所に設定されている数値が補正量となります。
ハイデンハインやレダースでは、工具管理方法が違うので、工具が呼ばれた時点で工具径を認識するようになっています。
したがって、補正番号をわざわざ指定する必要はありません
「G01 G41 X10.0 Y20.3 F2000」でいいことになります。

スタートアップ・キャンセル/工具径補正

工具径補正は、「G41/G42」が指令されたブロックから次のブロックのベクトル(進行方向)を認識しそのベクトルの法線方向に工具補正量だけオフセットされたパス(経路)を自動生成します。
その時に注意が必要なのは、補正指令ブロックの直前の位置が重要です。
補正モードでない場合には、指令の座標位置へ移動しますが、補正モードではオフセットされた座標となりますから指令と違う座標へ移動するので思わぬ干渉が起きる場合があります

この例では、「P1 ⇒ P2 ⇒ P3 ⇒ P4 ⇒ P1」で製品の輪郭として定義してます。
加工に入る前に「P0」位置で工具を降し「P0 ⇒ P1」で工具径補正(G41)を指令します。
「P0」位置からいきなり製品輪郭へ移動させてます。
そうすると、 「P0 ⇒ P1」 へ移動する途中で制御機は次の動作(P1 ⇒ P2)の方向を先読みしその法線方向の座標を計算し、「P1」の座標を自動補正します。
これをスターアップ動作と呼びますが、スタート位置によっては、思わぬ食込みが発生する場合があります。
これは、「G40」を指令するキャンセルブロックでも同様で、キャンセル位置によっては食込みが発生します。
これをさける為には、オフセット決定する法線方向側の離れた位置をスタート位置(キャンセル位置)にするか、食込みが発生しないように、スターアップを考慮して輪郭を延長させたり、要素を追加したりします。

上図でNCプログラムを作成してみます。

%
 O1000
 G17G90G00
 G00X0Y0Z50.0
 X62.0Y0           (P0)
 Z5.0
 G01Z-10.0F300
 G41D01X24.0Y25.0F500 (P1)
 X40.0Y80.0        (P2)
 X70.0Y60.0        (P3)
 X75.0Y25.0        (P4)
 X24.0Y25.0        (P1)
 G40X62.0Y0        (P0)
 M30
 %

TRYCUTと言うソフトで、シミュレーションしてみます。
TRYCUTの補正設定画面にも工具径補正「D01」に、使用工具の半径を設定しています。

予想通り、「P0 ⇒ P1」のスタートアップ動作で「P1」付近で食込んでしまいました。

 X0Y0           (P0) 

スタート位置を「X0Y0」に修正し、もう一度シミュレーションかけてみます。

今度は、食込みませんでした。
このように、工具径補正を使用する場合には、スタートアップ(キャンセル)を意識する必要があります。
一般的には、輪郭要素へ直接アプローチせずに、進入円弧などを使用してスタートアップしたほうが安全です。
CAMによっては、補正を利用する場合、進入指令が必須なCAMもあります。

%
 O1000
 G17G90G00
 G00X0Y0Z50.0
 X49.5Y15.0      
 Z5.0
 G01Z-10.0F300
 G41D01X59.5Y15.0F500  (スタートアップ)  
 G03X49.5Y25.0I-10.0    (進入円弧)
 G01X24.0Y25.0F500 
 X40.0Y80.0        
 X70.0Y60.0        
 X75.0Y25.0        
 X49.5        
 G03X39.5Y15.0J-10.0    (退出)
 G01G40X49.5Y15.0       (キャンセル)
 G00Z50.0
 M30
 %

工具径補正番号指令

工具径補正を利用する場合、その補正量を設定する必要がありますが、その設定方法は、コントローラによって違いがあります。
ここでは、もっとも一般的はファナック系とハイデンハイン、レダースでの設定方法を簡単に説明します。

ファナック/工具径補正番号

ファナック系では、前述のように、「G41またはG42」と共に「D」+「数字」(D番号)で設定します。
D番号は、制御機側にD番号の設定テーブルが用意されていて、そこに補正量を設定しておきます。
工具径補正指令があった場合、その補正量を参考にオフセット経路を自動計算します。
このように、ファナックでは使用工具と工具径補正の関連性はなく、D番号により管理されています。
これにより、NCプログラムでD番号を変更する事で自由に補正量も変更できますが、D番号を間違えたり、設定値の入力ミスがあった場合には大変です。

ハイデンハイン・レダース/工具径補正

ハイデンハインやレダースは、工具管理にファナックよりも複雑なデータバースを使用しています。
このデータベースには、いろいろな情報が含まれていますが、必須な情報として「工具の長さ」「工具直径」が含まれています。
使用工具に対してこの情報を持っているため、工具径補正においてもファナックのようなD番号により補正量の設定は必要ありません。
また、「工具長」や「工具径」の情報は基本的に、自動工具測定装置から自動的に設定されます。
国産機と違いヨーロッパでは 自動工具測定装置は必須の考えがあるようです。
また、使用工具情報を元にする事から、自動工具交換装置「ATC」付きマシン(マシニングセンター)がターゲットだと思われます。

ハイデンハイン iTNC530 の工具径補正指令

ハイデンハインでは、「G41/G42」の代わりに「RL」(G41)、「RR」(G42) の指令を使用します。
R0」が補正モードキャンセルです。
また、補正番号などはありません。
補正量は、呼び出した工具の管理テーブルに情報があります。
工具テーブルの「R」項目に基本的には工具半径が入力されていて、制御機はその値をもとにオフセットします。
さらに「DR」項目で追加の補正量を設定できます。
さらに、工具を呼び出すコマンド「TOOL CALL」行に「DR」で直接数値を追加できます。
補正量=「D : Tool table」+「DR : Tool Table」+「DR : Tool Call」となりTool Table からだけでなく、工具交換指令のNCプログラムからでも調整できます。
上のファナックのGコードを、ハイデン言語で表してみます。

0 BEGIN PGM 1001 MM
 L X+0 Y+0 R0 FMAX
 L Z+50 R0 FMAX
 L X+49.5 Y+15 R0 FMAX
 L Z+5 FMAX
 L Z-10 F300
 L X+59.5 RL F500
 CC X+49.5 Y+15
 C X+49.5 Y+25.0 DR+
 L X+24 Y+25
 L X+40 Y+80
 L X+70 Y+60
 L X+75 Y+25
 L X+49.5
 CC X+49.5 Y+15
 C X+39.5 Y+15.0 DR+ F1000
 L X+49.5 Y+15 R0
 L Z+50 FMAX
 END PGM 1001 MM

ハイデンハインでは、直線補間は「L」で指令しますので、G言語に対してL言語と呼ばれることもあります。

レダース RMS6 の工具径補正指令

レダース言語の、プログラム構文は上の二つとは全く違います。
NCプログラムと言うよりは、プログラミング言語の「VB」や「JavaScript」に似ているように思います。
ただ、工具経路を指令する移動の指令は、ファナックのGコードとハイデンハインのL言語の両方を理解できます。
したがって、座標系や工具交換、などの準備機能をレダース言語で指令すれば、加工の工具移動指令は、ファナックかハイデンハインのコードを若干編集する程度で使用できます。
下記では上のファナックのGコードを、レダースが動作する言語で表してみます。

 G17 G90 G00
 SH
 CCI
 G00 X49.5 Y15.
 Z50.
 Z5.
 G01 Z-10. F300.
 G41 X59.5 F500.
 G03 X49.5 Y25. I-10.
 G01 X24.
 X40. Y80.
 X70. Y60.
 X75. Y25.
 X49.5
 G03 X39.5 Y15. J-10. F1000.
 G01 G40 X49.5
 G00 Z50.
 SH
 CCA
 M30

このように、ほとんどファナックと同様のコードが使用可能です。
これが、ハイデンハイン言語も同様に使用可なのは驚きです。
ただファナックと違うのは、工具径補正番号がありませんね。
こちらも。ハイデンハインと同様に工具管理データベースに工具径も登録されていて、補正は使用工具により自動的に設定できるためです

この仕様によって、工具交換後「Tdm -auto」の指令だけで補正量は決定されます。
補正量は、「G41/G42」指令により自動的に工具半径分がオフセットされます。
また、「G41 -R=0.02」のように、工具半径に補正量を追加することもできますし、工具半径が不明な場合には、その値が直接使用されます。
さらに、「SET_OFFSET_R」という指令を使うと、オフセット量を直接指定できます。
直接「 SET_OFFSET_R =5.02 -abs」とできますし、変数も使用可能です。
「$DIAM_」というシステム変数で、スピンドルにある実際の工具径がわかるので、その1/2に調整量を付加することで、補正量を調整したりできます。

・
・
$Offset_C = ($DIAM_)/2 + 0.05
SET_OFFSET_R=$Offset_C -abs
G01 G41 X59.5 Y0.0 F1000 
・
・

この指令で、実際の「工具半径 + 0.05」の補正を設定できます。

補正量をプログラムで管理する

このように、ハイデンハインやレダースの言語を見てみると、補正量はNCプログラムで定義するのが基本的な考え方のように思います。
対して、ファナック系では、コントローラ側の補正画面で設定するのが一般的です。
後者の場合、自由度はあがりますが入力忘れや入力ミスの場合、大きな被害がでる場合が考えられます。
特に、NCデータ作成側と、機械操作側が違う担当者の場合には、補正番号の伝達方法は重要になりますね。
完全でなくても、安全率を見込んだ補正量はNCプログラムに定義しておいたほうが安心だと思います。
もちろん、ファナックの場合でも、システム変数を利用すれば同様の事ができます。
具体的には、「G10」のコードや「#11001~」や「#2201~」のシステム変数に代入することで定義できます
ただし、この大事な変数が制御機のバージョンやオプションによって番号が変わってしまうは、困ったもんです。

まとめ

今回は、工具径補正の説明をしました。
ファナック系だけではく、ハイデンハインやレダースの指令も簡単に紹介しました。
一番の違いは、工具径補正番号(D番号)の有無ですね。
利用方法によって、いろいろな意見があると思いますが、自動化を目指そうと思うと、工具を持ってきただけで、基準の補正量が決定できる仕様が有利だと思っています。

[adchord]

NCプログラムの記事

1 2 3 4 5 6 7

コメント

タイトルとURLをコピーしました