前回は「工具径補正」について説明しました。
これは、定義されている輪郭(工具経路)を制御機に再定義(オフセット)させる指令です。
この機能により、使用工具径や加工状況に合わせて「輪郭」を再定義し直す処理が省略できます。
ただし、あくまでも定義輪郭に対して「オフセット」させる機能なので、横縦の比率など「輪郭形状自体 」 を変形させる事はできません。
今回は、工具軸方向(ここではZ軸) 縦型マシニングセンター の補正・工具長補正の説明をします。
工具長補正の概要
この指令は「ATC / 自動工具交換」装置を持つNC工作機械(マシニングセンター)には必要な機能です。
工具径補正は、加工においては必須ではありませんが、工具長補正はマシニングセンターで自動工具交換させて加工する場合には必須となります。
最近ではほとんど見なくなりましたが、手動で工具交換を行う「NCフライス盤」や逆に最近普及してきた趣味レベルでも人気な「卓上CNCフライス盤」には必ずしも必要な機能ではありません。
工具先端位置を機械に教える
工具で加工する場合、工具先端位置と加工物(ワーク)の位置関係は非常に重要です。
例えば、ワークの最上面を「Z0.000」でプログラムした場合、「G01 Z0.000」の指令では工具先端がワーク最上面まで確実に移動しなければいけません。
通常「NCフライス盤」ではこの設定を手動で行います。
方法はいろいろあると思いますが、一つの方法としては、厚さが分かっているブロック(ゲージ)をワークの上面に載せて、そのブロックに工具を近づけていき、ギリギリ接触する高さの位置を、ブロックの厚さと同じ数値に設定します。
この例では、50mm厚のブロック(ゲージ)に接触する位置へ工具先端を移動させた位置を「Z50.000」に設定します。
この設定で 「G90 G01 Z0.000」 のプログラム指令を実行するすれば、工具先端はワークの最上面に移動する事になります。
マシニングセンターはすべての工具を合わせる
一本ごとに手動で工具取付を行う、NCフライス盤の場合は上記のような方法での加工が一般的です。
自動で工具交換(ATC)を行うマシニングセンターの場合でも、工具交換だけ装置にやらせて、工具先端位置設定はその都度行う事で加工は可能です。
ただしこれでは、マシニングセンターの真骨頂である、多数の工具を自動交換しながら自動加工する事ができませんね。
この自動加工を実現するには、使用するすべての工具先端位置を合わせる必要があります。
これを実現する機能が、工具長補正指令です。
工具長補正値
工具長補正の基本的な考え方は、「各工具の長さの差」を登録しておき、その「差」をもとに工具が下りてくる量を自動調整する事です。
では、登録する「長さの差」を算出する基準長さはどこでしょうか?
実はこれは、長さを測定する基準位置が同じであれば、どこでもいいです。
長さを測定する方法は、いくつかあります。
- 機械の任意の位置へ、各工具先端が到達した位置座標から求める
- 基準になる工具(マスター工具)との長さの差から求める
- 主軸端面から各工具先端までの長さの差から求める
思いつくところでは、この3種類でしょうか?
1.は 自動工具長測定装置がこのイメージですが、主軸端面位置と自動工具長測定装置の位置差を考慮すれば、3.と同じ数値になります。
2.は基準工具との差になります。
いずれにしても、各工具の「長さの差」がわかれば補正はできます。
ここで重要なのは、「差」を計算する場合、どこを「0」にするか?です。
主軸端面であれば、主軸端面。マスター工具であればマスター工具先端。
次にこの「0」にする基準を決定したら、その基準位置とワーク(加工物)基準位置を合わせます。
これは、上記のNCフライスと同様の方法で設定できると思います。
工具基準と使用工具との「差」を求め、工具基準と加工基準を合わせる事によって、いろいろな長さの工具を使用してもその「差」で調整が可能となります。
ただし、マスター工具を基準とした場合、工具長の差で工具長補正値は「プラス・マイナス」混同する可能性がでてきます。
これは、後々混乱する原因になりやすいので、私の意見では、「主軸端面」をお勧めします。
主軸端面を最短のマスター工具と考えれば、全ての工具の補正値の「符号」は同じになります。
工具長補正の測定方法
最近では、自動工具長測定装置がついている機械が多くなってきていますから、こちらに任せるのが一番簡単ですが、手動で測定する事も可能です。
自動の場合には、主軸端面と自動測定装置の位置をパラメータとして登録しておくことで可能となります。
おそらく機械納入時には機械メーカーが設定済みだと思います。
手動の場合には、「機械座標系」を使用する方法があります。
機械座標は、機械の決められた場所(機械原点)からの絶対座標です。
この機械座標系を利用して、主軸端面と工具先端までの距離を求めます
求める時には、制御機で「機械座標系」が表示される画面にしておいて、主軸端面と工具先端が同じ基準高さの位置に来た時の機械座標を読み取り引き算する事で求められますが、重要な事が一つあります。
上にも書きましたが「工具長補正値」の「符号」です。
主軸端面を基準とした場合、引き算する順序で「+・-」は変わってきますが、順序を同じにすれば必ずどちらかに統一されるばずです。
この「符号」によって、先に説明する「工具長補正指令(G43,G44)」コードが変わってきます。
この作業を使用工具本数分行います。
ここで求めた工具長さを制御機の工具径補正設定画面に設定します。
工具長補正値の登録
工具径補正と同様に、指令的に工具長補正の方法は、「ファナック系」と「ハイデンハイン・レダース」では違います。
ファナック系では、「H」+「数字」(H番号)で設定します。
H番号は、制御機側にH番号の設定テーブルが用意されていて、そこに補正量を設定しておきます。
工具長補正指令があった場合、その補正量をもとに工具の下りてくる量が調整されます。
このように、ファナックでは使用工具と工具長補正との関連性はなく、H番号により管理されています。
これにより、NCプログラムでH番号を変更する事で自由に補正量も変更できますが、H番号を間違えたり、設定値の入力ミスがあった場合には大変です。
ハイデンハイン・レダース/工具長補正
ハイデンハインやレダースは、工具管理にファナックよりも複雑なデータベースを使用しています。
このデータベースには、いろいろな情報が含まれていますが、必須な情報として「工具の長さ」「工具直径」が含まれています。
使用工具に対してこの情報を持っているため、工具長補正においてもファナックのようなH番号の指令は必要ありません。
また、「工具長」や「工具径」の情報は基本的に、自動工具測定装置から自動的に設定されます。
国産機と違いヨーロッパでは 自動工具測定装置は必須の考えがあるようです。
工具長補正 / ファナック
工具ごとの工具長補正の指令は、ファナック系だけに必要な指令です。
上記のように、工具データベースで工具長を管理している「ハイデンハインやレダース」では必要ありません。
ハイデンハインでは、工具交換した時点で工具長補正は完了していますし、レダースではどの工具を持ってきても「Tlc -auto」の指令で完了します。
G43/G44/G49 / 工具長補正指令
「G43/G44」指令と共に、補正値が設定されている「H番号」で指令します。
ここで、上記の工具長補正値の「符号」が重要になってきます。
「G43」指令は、「工具長補正+」なので、補正値の「符号」がそもまま使用されます。
具体的には、補正値が「+」の場合には、Z軸上昇方向に補正します。
逆に「G44」を使用すると、下降し最悪突っ込みます。
したがって、主軸端面から工具先端までを補正値として「+」符号で登録している場合には「G43」を使うのが一般的な仕様となります。
「Gコード グループ08」
・G43 : 工具長補正+
・G44 : 工具長補正−
・G49 : 工具長補正キャンセル
具体的な指令の例では、「G00 G43 Z50.0 H01」のように指令します。
この例では、「Z50.0」まで移動する間に、「H01」に設定されいる設定値の「+」方向に補正され工具先端が「Z50.0」位置で完了となります。
この補正は、「G49」でキャンセルされるまで有効となります。
「G28」などの原点復帰指令でもキャンセルされますが、古い機種などとの汎用性やキャンセルさせた!の気持ちも込めて私は多少冗長でも「G49」指令は使用する事にしています。
「G49」キャンセル指令には注意点があります。
最近はほとんど動作なしで補正をキャンセルしてくれると思いますが、古い機械ではキャンセルに動作を伴う機種があったように記憶しています。
具体的には、「G43」で「+」補正させた場合、「G49」キャンセルでは補正を無効にするため、「ー」方向に移動する可能性があります。
例えば、長さが「50mm」の工具を補正した場合、Z軸上方向に「50mm」上がります。
この補正をキャンセルした場合、「50mm」下降する可能性があります。
これはキャンセル位置によっては加工物に突き刺さる事になりかねません。
移動動作のないキャンセルが一般的かと思いますが、安全を考慮してZ軸は安全位置まで上昇させた後の「キャンセル」指令をお勧めします。
G28 / リファレンス点(機械原点)復帰
「Gコード グループ00」
・G28 : リファレンス点自動復帰
「G28」指令は、指定軸、指定座標を中間点としてその位置へ移動後、指定軸の機械原点へ移動させる指令です。
Z軸の機械原点が、機械最上部の安全位置にある場合には、この指令を使用して退避させるのが簡単で確実です。
ただし、機械によっては、必ずしも機械原点が安全位置に設定されていない場合もあるので事前の調査は必要です。
「G91 Z0」の指令で 「現在のZ位置から」の意味になりますから、この指令と「G28」を組み合わせる事で「現在位置からZ軸機械原点へ移動」と言う意味になります。
この指令で退避させた後に、工具長キャンセルしたほうが安全です。
G17G90G00 T01 M06 G91G28Z0 ( Z軸機械原点へ移動 ) G90X0Y0 G43Z50.H01 ( H01 の補正量で 工具先端が Z50.まで移動 ) ・ ・ ( 加工 ) ・ G91G28Z0 ( 加工終了後 Z軸機械原点へ移動 ) G49 ( 工具長補正キャンセル ) ・ ・
工具長補正と工具長キャンセルの指令は、こんな感じでしょうか。
ところで、オークマOSPの場合の工具長補正は「G43」でなく「G56」で、機械原点移動の指令はありません。
ただし、機械のリミットオーバーの場合でもアラームにならないため、とりあえず退避させたい場合には、大きな数値で退避させるのも一つの方法です。
「G91Z1000.0」の感じです。
このように、工具長補正指令は工具径補正よりも互換性は低いですね。
工具長補正 /ハイデンハイン・レダース
工具径補正の記事でも書きましたが、ハイデンハインやレダースでは工具の長さは工具データベースで管理されています。
したがって、制御機は工具を交換した時点でその長さ情報を把握していますから、ファナック系のように、「H01」のような補正番号は必要ありません。
特に、ハイデンハインの場合は工具交換が完了した時点で工具長補正は完了しています。
完了しているので、プログラム指令だけでなく、ハンドルモード(手パ)でも工具長補正が適応された座標系で作業できます。
ファナック機の場合、プログラムで補正をかけてもハンドルモードに切換えるスイッチでモード切換えを行うと、工具長補正がリセットされてしまう機械もあります。相対座標位置をプリセットする事で代用できますが結構面倒ですね。
まとめ
今回は、工具長補正の説明をしました。
ファナック系だけではく、ハイデンハインやレダースの指令も簡単に紹介しましたが、やはり大きな違いは工具径補正と同様で、工具長補正番号(H番号)の有無ですね。
工具径補正と違い、マシニングセンターにおいては工具長補正は必須ですから、その必須な項目に対して、NCプログラム工程と加工工程と言う別の工程において「補正番号」を合わせなければならないのは、仕様的にどうかと思います。
やはり、使用工具を持ってきたら 長さぐらいは、 制御機が把握している仕様が一般的だと思いますが、皆さんはどう思われるでしょう?
もしかしたら、ファナック系の制御機を使っていても、別のソフトでカプセル化して、ハイデンハインのような仕様を実現している機械もあるかもしれません。
すでにこのような基本NCのデメリットを隠蔽してユーザーが使いやすいようなソフトでカバーする制御機も増えてきていると思います。
コメント
fanucの機械では手組でプログラムしてたときは
Mコードマクロ呼び出しで補正を自動で入れられるようにしてました
でもほかの機械を使うときは面倒でした
OSPではG56G0Z100HAということで現在のツールナンバーと同じ補正番号を使うことができます
あとでツール番号を変えても補正番号までかえなくていい
これって説明書にないんですけど
58歳のときに入った会社で初めて知りました
なんでこんな便利な機能を隠しコマンドにしてるんでしょうねえ
乱造さん、ありがとうございます。
これは、知りませんでした。
ここまでいったら。G56も省略してほしいですね!
肝心なことを忘れた。
機械の破損させる90%以上は工具長補正のミスですから
測定から補正まで機械に管理させるのが一番です
制御機も正常進化してほしいですね
そうですね。
その工具で加工するのだから、やっぱり工具ごとの管理のほうがわかりやすいと思いますね
マキノのprofessionalのコントローラも、工具管理画面で工具単位で管理できますけど
結局、ファナック側の補正番号にMコードで転送する仕組みです
これはこれで、面倒です