下記で説明しましたが、ファナック言語で位置を司令するには「G90:絶対座標系」と「G91:相対座標系」の2種類の方法があります。
通常は、図面を見ながらプログラムする場合など、「G90:絶対座標系」のほうが分かりやすいので、こちらを使用する場合が多いと思いますが、同じ形状が並んでいる場合や、穴やポケット加工など一つの輪郭加工を汎用的に配置したい場合には、「G91:相対座標系」でサブプログラム化すると便利な場合があります。
G91:相対座標系の利用方法
同じ形状が複数ある場合
このイメージのように、同じ形状が複数ある場合、もちろんCAMでモデリングして一気に計算してもいいですが、加工位置や個数が多種類ある場合は、その都度モデリングするのも面倒な作業です。
このように、絶対座標系原点でNCデータを作成し、そのデータを各加工位置へ移動複写する方法が便利です。
この場合も、CAMの機能で移動複写できる場合もありますが、原点中心の一カ所のNCデータをG91でサブプロとして作成し、メインプログラムで加工箇所へ移動した後、そのサブを呼び出す方法があります
絶対座標系の原点でNCデータを作成
まずは、G90モードでデータを作成してみます
% O1001 (D=10.000) G90 G00 X0 Y0 Z30. G00X2.Y0. Z5. G01 Z1. F60. Z-5. G41 Y-8. D01 F300. G03 X10. Y0. J8. X-10. I-10. X10. I10. X2. Y8. I-8. G01 G40 Y0. G00 Z30. M30 %
これをG91モードへ書き直してみます
だたし、G91モードは相対的に移動位置を指令する方法なので、スタート位置がわからないと、実際の加工はできません。
スタート位置を明示するために、絶対座標(G90)でスタート位置を設定しておく必要があります。
% O1001 (D=10.000) G90 G00 X0 Y0 <--- スタート位置はG90で指定 Z30. <--- スタート高さ G91 <--- ここからG91へモードへ変換 G00X2.Y0. Z-25. G01 Z-4. F60. Z-6. G41 Y-8. D01 F300. G03 X8. Y8. J8. X-20. I-10. X20. I10. X-8. Y8. I-8. G01 G40 Y-8. G00 Z35. M30 %
シミュレーションで見てみましょう
メイン・サブ方式へ変更してみます
上記のデータを複数個所へ、「移動・コピー」したい場合には、「メイン・サブ構成」にしたほうが便利です。
加工位置指令をメインプログラムで受け持ち、スタート地点に移動した後は、
「相対座標系:G91 指令」のサブプログラムで加工するような構成にします。
(--- メインプログラム ---) % O1000 G90G00 G90 X0. Y0. <--------- 加工位置へ移動 M98 P1001 <--------- サブプロで加工させる M30 % (--- サブプログラム ---) % O1001 (D=10.000) G90 G00 <--- スタート位置はメインで指示しているので削除 Z30. <--- スタート高さは、サブのほうが安全 G91 <--- ここからG91へモードへ変換 G00X2.Y0. Z-25. G01 Z-4. F60. Z-6. G41 Y-8. D01 F300. G03 X8. Y8. J8. X-20. I-10. X20. I10. X-8. Y8. I-8. G01 G40 Y-8. G00 Z35. M99 <---- サブプログラムなので M99 に変更 %
一か所だけの場合には、こんな感じになりますが、メインプログラムのスタート位置指令の部分を編集追加する事で、複数個所加工できるようになります。
(--- メインプログラム ---) % O1000 G90G00 G90 X30. Y30. <--- 一か所目 M98 P1001 G90 X-30. Y30. <--- 二か所目 M98 P1001 G90 X-30. Y-30. <--- 三か所目 M98 P1001 G90 X30. Y-30. <--- 四か所目 M98 P1001 M30 %
シミュレーションしてみましょう!
このように、同じ加工を複数個所行いたい場合には、G91モードのメイン・サブ構成にする事でスマートになります。
G66:マクロモーダル呼出しを利用すれば、固定サイクルを自作できる。
さらに、マクロ機能が使用できる機種であれば、「G66:モーダル呼出し」を使用すれば、穴加工などの固定サイクルと同様の構成にできます。
(--- メインプログラム ---) % O1000 G90G00 G66P1001 X30. Y30. X-30. Y30. X-30. Y-30. X30. Y-30. G67 M30 %
このように、穴以外でも、真円や□ポケット、ヘリカルタップなどよく利用する加工は自作の固定サイクル的に作成しておくと便利です
ちなみに、ハイデンハイン制御機は最初からかなりのサイクルが用意されています。
ちょっとした加工であれば、CAMがなくても加工できます。
こんなところも、ユーザー思いのコントローラだと思います
G90⇒G91変換ソフト
輪郭だけでなく、ポケットの無垢からの掘込みや等高線加工などは、手打ちでは無理です。CAMで作成する場合でも、一般的にはG90モードが多いと思います。
G91のポストを用意するのも面倒なので、変換ソフトを作成しました。
フリーソフトとして公開いたします。
現状のバージョンでは、工具交換には対応していませんが、
ちょっと複雑な自作サイクルを作成したい場合などには、G91へ変換したデータを若干の手直しで使用できると思います
フリーソフトとして公開
ベクターに登録しました
コメント
細かいことですけど
Z高さが同じときにはサブのなかでG90G0Z30.としても
いいですけど
z高さが違うときはメインでZ高さ+100(いくつでもいいけどわかりやすい数値)
で位置決めしてサブではインクレだけ
というようにっ使用してました
あまりサブは使わずマクロで組んでしまうのが多っかったです
いろいろ融通が利くので。。
繰り返しのプログラムは数が多くなれば
やはりcamよりも手組のほうがいいです
途中で刃物が折れてしまったときにも途中から再スタートしやすいですね
乱造さん、コメントありがとうございます
そうですね。
メインでZ指定すれば、汎用性はふえそうですね。
でも、今回は同じ形状を、複数個所とのイメージで作成しました。
G91は、現在位置からスタートするので、Z方向のミスはちょっと怖い気もします
メインでの入力間違いも怖いので、今回はなるべく単純で書いてみました。
マクロであれば、切込みスタート位置の項目を追加する感じでしょうか?
同一平面であれば、Z指定はサブですね。
解説の流れをよめばそう分かったっはずなのに
ちょっと突っ込んでしまいました
マクロであれば、ドリル固定サイクルのようにR点Z点指定かな
乱造さん、ありがとうございます。
どしどし、突っ込んでください。
昔のBBSのように、それがまた楽しいです
ハイデンハインのサイクルを見たとき、こんなサイクルを
ファナック機にも用意したいな!と思った事もありました。
乱造さんなら、かなりのマクロを作っていたのでしょうねぇ!
今度、ハイデンハインのサイクルのマクロ化、公開でもやりましょうか?
最近は簡単な加工でもほとんどCAMでやるので、マクロ作成できる人も少なくなりました。
G90G90Convert Ver1.2の画面にどのように入力して結果を得ているのかわかりません。要するにこのソフトの使い方が分からないのです。入力一例の画像でも添えてくだされば助かるかもしれません。
伊倉建一さん、こんにちは
まず、G90とG91 の理解はお済でしょうか?
もしまだ、あいまい、でしたら、このコメントの上側(記事ページの下部)の
「NCプログラムの記事」に、関連記事のリンクリストがありますから
そちらを覗いてみてください。
G90とG91に関しては、こちらに書いています
https://www.kazuban.com/blog/nc-gcode-02/
他にも、ネット上で「ファナック、G90 G91」などのキーワードで
検索すると、結構ヒットすると思います
理解ができているとすれば、このソフトは、
G90のデータをG91に変換するだけのソフトです
したがって、まずは、G90モードのNCデータが必要になります
そのデータは、CAD/CAMで作成するか、簡単な形状であれば
手打ちでも作成できます。
手打ちの場合、下記のソフトが使えるかもしれません
https://www.kazuban.com/blog/nc-check-to-dxf/#DownLoad
そのようにしてまずは、G90のNCデータを用意します
そのデータを、このソフトにドロップすれば
G91のデータに変換できます
G91データは、同じ形状が、任意な複数個所に配置されている
ような場合に、便利です。
一つの方法をしては、変換したG91データをサブプログラムとして
利用できるように、すこし自分で編集を加えます
その後、各加工位置へ移動後、このサブプログラムを読み出すような
メインプログラムをやはり自分で作成します
このように、G90とG91の理解は必須なうえに
メインとサブは自分で作成する必要があります
このソフトは、G90モードをG91モードへ変換するだけの
ソフトです