本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:MDIにおけるG90とG91)

MDIにおけるG90とG91

2023/10/17 15:20

このQ&Aのポイント
  • 機械の種類によっては古いマシニングセンターではMDIでのG90やG91の動作が正確にはできないため、パラメータの設定が重要です。
  • MDIでの動作確認やワーク座標系や工具補正の確認にはG90やG54G0X0Y0などの設定が必要です。
  • MDI設定をG90にしている場合、うっかり原点復帰を行うと工具が下がってから原点に復帰するという危険があります。メーカーの提案として、座標確認用のプログラムを作成し、必要に応じて編集してメモリ運転で確認する方法があります。
※ 以下は、質問の原文です

MDIにおけるG90とG91

2009/06/15 23:50

今の機械はMDIでもG90G91は打ちこんだGコードどうり
動くと思いますが、
会社にある

マシニングセンターが古いため、
MDIではG90やG91をうっても、そのとおり動くわけではなく

MDIでの動きをG90かG91かを決めるパラメータの部分がありそこの設定によってきまります。たとえばそこをG91にしていたら、

MDIでG90G0X0とうっても→G91G0X0という動きをします。この場合はインクリで0だから動かないですが。

ワーク座標系を設定したあとにワークのXYの0の位置があっているか確認
するのにMDIで確認したり、この場合G90でG54G0X0YOが必要
工具長補正とワーク座標系のZの関係が合っているかの確認をしたり
この場合もG90でG54G43Z100H○などを使う。
ので、MDIの設定をG90にしていたら、いいかと思いましたが、
うっかりMDIで原点復帰
G91G28Z0をうったら→G90G28Z0の意味になるからワーク原点まで工具が
下がってから原点に復帰するという危険なことになってしまいます。

メーカーがいうには、MDIはインクリにしておいて、
座標確認用のプログラムを作って、必要に応じてそのプログラムの
補正番号などを編集してメモリ運転で実行して確認を
やった方がいいということで以下のサンプルプログラムをもらいました。

G91G28ZO
T5M6
G90G54G0X0Y0
G43Z150H5
M30
ということですが、
まずこのプログラムだとワーク原点を確認したいだけなら
G43Z150H5の部分も実行されるとじゃまだし
工具長補正とワーク座標系Zの関係を確認したいだけの時には
G90G54X0Y0がじゃまになります。

スラッシュをどちらかにいれてブロックスキップで対処しようとしても
どちらかは必ず実行されてしまいますので、だめですし、
O0001
G90G54G0X0Y0
M30

O0002
G0G43Z150H5
M30

に分けてプログラムを作るしかいい方法はないでしょうか?
なにかいいアイデアがあったら教えていただけないでしょうか。

回答 (5件中 1~5件目)

2009/06/21 01:19
回答No.5

FANUC系の経験が少ないので「何となく程度」ですが、

逆の発想で原点復帰をメモリ運転ですることは出来ないものなのでしょうか?

それが出来れば、MDIの設定は「G90」でもいいような…。

原点復帰以外にも問題がある場合はこの限りではありませんが。

参考になれば幸いです。

補足

2009/06/21 08:55

ありがとうございます。
確かにそうですよね。

MDIではG90の方がよく使いますよね?

MDIでG91ってみなさんどんな時に使うのでしょうか?

原点復帰についてはわざわざMDIでやらなくても原点復帰モードで
やってもいいですし。

MDIの設定をG91にしているのは

うっかりMDIで原点復帰したときに


G91設定になっていたら問題ないけど、

G90設定だとドカンといく可能性があるからです。
まあドカンといっても
(プログラム面のとり方によりますが、)
ワーク上面まで刃先が早送りで下がるだけですが。

ワーク上面までなら早送りで当たってもたいしたことない
でしょうか?

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2009/06/17 08:02
回答No.4

アイデアだけで申し訳ないですが、
カスタムマクロが付いていなくて、
ブロックスキップのみで切り替えされたいという条件で、

1案(M30はブロックスキップ不可でしょうか?)
O0001
/G90G54G0X0Y0
/M30
G0G43Z150H5
M30

2案(M99で下に飛ばせないでしょうか?)
O0001
/G90G54G0X0Y0
/M99N1
G0G43Z150H5
N1M30

実機で確認していませんので、試される場合は充分注意して下さい。

見直したところ、間違えていました。(^^;

誤…/M99N1
正…/M99P1

補足

2009/06/17 23:36

アイデアをありがとうございます。

一案はブロックスキップ有効なら工具長補正だけの動作
ブロックスキップを無効にしていたらXYの原点に移動したとこで、
M30により終了になり工具長補正動作は行わないということですね。

なるほど思いつきませんでした。

質問者
2009/06/16 23:56
回答No.3

危険だと思うなら、手動で確認。
大賛成です。
ただプログラムを無理やり1つにする必要はないと思います。
下記でも言っておられる様に
プログラムは単純であれば単純なほど、理解しやすいので

作るのであれば

O0001
G90G54G0X0Y0M5
(G91G28X0Y0Z0M19)
M30

O0002
G90G54G0G43Z150H5
(G91G28X0Y0Z0M19)
M30

に分けてプログラムを作るのがいい方法とおもいます。
O0001→位置決め用PRO
O0002→工具長補正用PRO
プログラム番号で使い分け!

1つにまとめることは可能ですが、
その分(入力事項・理解等が)複雑になります。
プログラムの見た目は専門職ぽく格好がいいですが、
単純な作業で正確というのが一番だと思います

補足

2009/06/17 23:42

ありがとうございます。

それはそうですね。

質問者
2009/06/16 12:25
回答No.2

まず、ご自身でプログラムは組めますか?

次に、GOTO文、サブプログラム、変数のどれか使える機能はありますか?

変数とGOTOが使えれば、調べたい項目を変数化し、その変数に値が入れば、そこへ飛ぶようにすれば良し。

GOTOだけなら、何パターンかを作っておいて、用途に応じてGOTOで飛ばせば良し。

サブプログラムが使えるなら、ご質問にあるメインをサブにして、用途に応じて呼びだせばいいのでは?

ただ・・・あなたが休みの時に誰が扱ってもわかるように、ご質問にあるようなメインを数パターン作っておいて、対応表のようなフローチャートを機械に貼り付けておくのが一番安全なんじゃないですか?
プログラムは単純であれば単純なほど、理解しやすいので。

ファナックで、呼出し前に基準工具かなにかが、予めついた状態を想定しています。

飛ばしたい方には、0を入力。
#1=0だと長補正のみチェック
#2=0だと基準工具で原点位置のみをチェック
↓の状態だと、#2の工具で原点位置をチェック

O1001
#1=54
#2=5

G91G28Z0
IF[#2EQ0]GOTO1
T#2M06
IF[#1EQ0]GOTO3
GOTO2
N1
IF[#1EQ0]GOTO4
N2
G90G#1G00X0Y0
IF[#2EQ0]GOTO4
N3
G43G00Z150.H#2
N4
M30

動作確認したわけじゃないので、あってるかわかりませんが・・・。
ちなみに、#1=54を工夫すればMDI入力にしたり、使用していない補正番号などシステム変数の数値を利用するといった、色んな方法ができますけどね。
ただ、その場合は、#1=0と#1=#0の違いを理解しておいてください。

ところで、たったこの程度のプログラムでも当初より、かなり複雑だと思います。
ですから、最初に述べた方法をお勧めしますけど・・・。

補足

2009/06/17 23:40

ありがとうございます。
GOTO文、サブプログラム、変数機能すべて使えます。


プログラムは組めます。
ただGOTOと変数は 習ったことはあるけど、忘れているので、見直さないと
いけないですね。

>変数とGOTOが使えれば、調べたい項目を変数化し、その変数に値が入>れば、そこへ飛ぶようにすれば良し。
>GOTOだけなら、何パターンかを作っておいて、用途に応じてGOTO>で飛ばせば良し

もしよろしければ一例を載せていただくことはできますか?

そうですね。。

サンプルを書いていただきありがとうございます。

質問者
2009/06/16 10:45
回答No.1

危険だと思うなら、手動で確認。

G91G28Z0で、Zの原点に、行きますよね。(工具交換位置でも、ありますが)
Z0の原点位置。
工具長補正は、加工物の上面を0にあわせた場合、マイナスいくつと、なりませんか?その値を補正値として、工具番号に入力していますが。
補正をかけて、もしワーク面位置がプラスだとすると、Z軸は、加工物に、ぶつかります。面よりも下が0ですから。
Z0の位置を、海水面と仮定すると、加工は、全て海の中で行うと言う事です。
海抜0以下での、加工です。陸上では、しないと言う事です。
穴あけ、エンドミル加工等、全て、マイナス側での
加工ですよね。
指定点戻りとかZを上げる時は、陸上での移動になりますが。

金型加工等で、例えば、板厚の下側の面を0にして加工する
場合は、全て、プラス側での加工になりますが。

何か、よく判らないな?
G43Z100H1で、ワーク面から100になっていれば、良いのでは?
G54だろうがG55~G59だろうが、工具長は、変わらない筈。

補足

2009/06/17 23:48

ありがとうございます。

XYの原点設定があっているかは
手動でパネルを見ながら絶対座標系のXYが0になるところまで動かしたら位置がわかりますね。


工具長補正の方は手動では工具長補正が掛からないから、
(工具長補正をバイス上面までの移動量でとっているので、マイナスの値なので、)

ワーク上面を0とプログラムしているとすると

手動モードで工具先端をワーク上面に当てた時、

のZの座標値は0でなくプラス工具長補正値のプラス値になっていたら
あっているということになりますか?

ありがとうございます。
お返事遅くなりすいません。

今バイス上面の位置で工具長補正をとっています。

T1の工具を例にするとT1の工具がバイス上面に当たる時の機械座標
Zがー150だとすると-150をT1の工具長補正量へいれています。

ワークをバイスに掴んだ時、ワーク上面を0にする時、
工具長補正の基準であるバイス上面から
ワーク上面までの相対値を 今度G54などのワーク原点オフセット量Zへ
入れています。 この相対値がプラス30だとすると、


工具長補正をかけてワーク上面Z0を指定したとき、
G43Z0H1
-150+30イコールー120に機械座標がなったときに工具刃先はワーク上面にきているということですよね?

G43Z100H1なら
-150+30+100イコール-20に機械座標にがなったときに
工具刃先はワーク上面プラス100の位置になるということですよね。


手動モードでワーク座標系zの設定と工具長補正値の関係があっているかを
確認するにはT1工具をワーク上面プラス100の位置まで
もって行ったときの機械座標が-20になっているかどうかの確認になりますか?

これを機械座標の画面ではなくてG54の座標での画面で確認するなら

手動モード中は工具長補正が掛かっていないから
ワーク上空プラス100の位置へ手動モードで工具先端をもっていったとき、G54座標のZ値はいくらになっていたら

工具長補正値とワーク原点オフセットのZの設定共に合っているという
ことになるのでしょうか?

ありがとうございます。
G43Z100H1を使えたら、そこでスケールでワーク上面から
刃先まで計って工具長補正とワーク原点オフセットのZの関係が
あってるかすぐわかるけど、

MDIでG90が使えない場合にMDIでG43Z100H1ができないから
(Z100はG90での位置なので。)

パルスハンドルの手動モードで
Zを動かして 工具長補正とワーク原点オフセットのZの関係が合っているかを確認するという場合の話ですよね?

パルスハンドルで動かす前にG90が関係ない
G43H1をMDIで実行して工具長補正をかけたあとに
パルスハンドルにしてG54座標系の画面がZ100になるまで動かしたあと
スケールでワーク上面から刃先まで計って100なら
ワーク原点オフセットのZの設定も間違っていないと
確認するということでしょうか?

あ、工具長補正はZがないと
入らないのでしたよね?
だから
G43H1でZをとばして
MDIで工具長補正だけするというのはできなかったですよね?

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。