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

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

1人が「役に立った」と評価
締切済み
※ ChatGPTを利用し、要約された質問です(原文:B軸回転後の座標について)

B軸回転後の座標について

2023/10/17 18:36

このQ&Aのポイント
  • B軸回転後の座標について何点かお聞きします。横型MCのB軸回転後の座標を計算する方法やワーク座標の設定について教えてください。
  • B軸の回転中心はテーブルの中心ですが、ワーク座標を中心にすれば回転中心とワーク座標の中心が一致し楽に計算できます。しかし、テーブル中心とワーク座標の中心が異なる場合、どのように計算するのか疑問です。
  • B軸で角度回転させた場合、ワーク座標と中心をどこに設定すれば計算が楽になるのかについても教えていただけませんか?他の例も交えて説明していただけると幸いです。
※ 以下は、質問の原文です

B軸回転後の座標について

2009/03/24 21:57

横型MCのB軸回転後の座標について何点かお聞きします。
例えば100角の材料を45度回転させてC2削る場合どのようにZ,Xを計算するのですか?マクロで計算するにしても自分の頭でわかっておきたいものなのですが考えていたら頭がこんがらがりました(笑)
B軸の回転中心は当然テーブルの中心ですよね?
そこで材料をテーブルのど真ん中に取り付けしたとしてワーク座標を
中心にすれば回転中心とワーク座標の中心が一致し楽に計算できると
思うのですがテーブルのど真ん中にワーク座標をもっていくなんてそんな
手のかかること汎用でもないのにしてられませんよね!
なのでテーブル中心とワーク座標の中心とが違うのにどのようにして
計算するのか?という疑問とB軸で角度回転させたときは上記の例でいえば
中心をワーク座標にするのが楽なのか、そうでなければ
どこをワーク座標にするのが楽なのか?などを教えていただけないでしょうか?あと他にも例をあげて説明していただけたら幸いです!

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

2009/03/28 17:27
回答No.4

回答(3)さんの書かれた内容について、幾つか補足させて頂きます.

1)
カスタムマクロのMコード呼び出しは、
NCのパラメータの設定が必要となります.
例えば、今回の様にO9028をMコードで呼び出す場合、
“カスタムマクロ本体O9028を呼び出すMコード”というパラメータ
(例えば、OMCの場合、パラメータNo.0238“UMMCD12”)が
どこかしらにありますので、M88で呼び出すならそこに“88”を設定します.
メーカーの仕様でM88に何かしらの機能を実装している場合、
この設定によりM88がオーバーライドされてしまいますので、
何か別の番号を使用して下さい.
なお、わざわざマクロのMコード呼び出しをしなくても、
G65P9028で同じ様にO9028を呼び出す事ができます.

2)
システム変数#4102は、Bコード(第2補助機能)の読み取りです.
B軸が付いているからと言って、
必ずしも第2補助機能として実装されているとは限りません.
各軸のブロック終点座標は、システム変数#500x(xは1~9)に出力されます.
例えば、B軸が第2補助機能ではなく
NCの第4軸として実装されているであれば、
#5004がB軸のブロック終点座標になります.
第5軸であれば#5005です.
また、第2補助機能としてのBコードは、3桁または6桁で、
指令値と実際の割り出し位置の関係が機械メーカーに委ねられています.
例えば、6桁の第2補助機能を使って0.001度割り出しを実現する場合、
90度という指令がB090000となる事も考えられます.

3)
ワーク原点オフセットのシステム変数#5201~#5328は、
古いNCにはありません.
例えば、0MCでは#2500~#2806で
ワーク原点オフセットにアクセスできますが、
軸と変数の番号の関係が違っています.

補足

2009/03/28 21:12

なるほど!少しずつ理解できそうです!あとひとつ質問がありますが
modの使い方をよく理解していないので教えていただけないでしょうか?
あと(3)さんの書いていただいたマクロ内容を一行ごとにどのような
動作をしているのか解説をお願いできますか?

質問者

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

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

質問する
2009/03/27 18:59
回答No.3

O9028(HMC WORK OFFSET)
(M88 I-K-B-;)
#8=500(X AXIS TABLE CENTER)
#24=#5221-#8
#26=#5223
#12=SQRT[#24*#24+#26*#26]
#1=ATAN[#26]/[#24]
#3=0
#9=270
(/)IF[[#4NE#0]OR[#6NE#0]]THEN#2=#4102(B CODE)
IF[[#2MOD90]NE0]THEN#7=4(G59)
IF[#2NE#0]]THEN#3=#2
IF[#2NE#0]]THEN#9=#2
IF[#4EQ#0]THEN#4=0
IF[#6EQ#0]THEN#6=0
WHILE[#3LE#9]DO1
IF[#7NE4]THEN#7=ROUND[#3/90]
#[5221+20*[1+#7]]=#12*COS[#1-#3]+#4+#8
#[5223+20*[1+#7]]=#12*SIN[#1-#3]+#6
#3=#3+90
END1
IF[#2EQ#0]GOTO99
G[55+#7]
N99 M99

こんな感じのマクロを FANUC で組んでみました。
考え方は、B0 でワークを平行段取り
その時の任意座標を G54のワークオフセット X、Zに基準座標として設定
その座標をもとに M88; と書き込めば
B00 ⇒G55
B90 ⇒G56
B180⇒G57
B270⇒G58
に設定されます。
また 90度毎以外の時(45度とか)は M88 B-45; のように入力すると
B45 ⇒G59
に設定されます。
次に、加工のための Z0 は当然 手前面にするでしょう。
M88 I-K-; (I- は X方向、K- は Z方向)でOKです。
言うまでもなく I-K- は G54の X0Z0 を絶対座標とし、回転した時の図面寸法です。
B-、I-(K-) が入力された時、ワーク座標も変化させています。
I-(K-)が入力された時は、B-を入力しなくても Bのシステム変数 #4102 を参照します。
システム変数 B の有無は取説をご参考ください。( 11M にはありませんでした)
座標設定に問題が無くなりましたので、作業し易い場所に段取りしましょう。

あくまで制御が FANUC として話します。(「FANUCの本をみても」とありますので)

M88 とは 
Mコードマクロと言い、自分で決めた数値です。メーカーで決められた Mコードではありません。
取説のカスタムマクロを参照ください。
ここでの M88I-10K-100B90; は G65P9028I-10K-100B90; と同じです。

-45度は
たとえばワークをテーブル B0 で向かって左端に段取りすれば、当然テーブルを左回転して加工面と向合いますね。
テーブルの右回転が 90度、180度、270度とすれば、加工面と向合う角度は 315度です。(質問のワークの場合)
角度計算上 315度と -45度は同じです。

#4102とは
B90 と指令しテーブルを回転させると、システム変数というのがあってそこの 4102番地に 90という数字が書き込まれます。
ですから逆に、#4102をみれば Bの値(テーブル回転角度)が解るわけです。
よって、M88I-200B90; と指令しなくても M88I-200; だけでOKとなります。(プログラム内部で読まれているから)

勉強頑張って下さい。楽しい仕事ですからね。

訂正
上記 -45度について
三角関数では 315°=-45°ですが、Bコード指令としては B-45がOKか疑問になりました。(-符号が)
B-45 は B315 に訂正します。

訂正-2

上記プログラム O9028 の 18、19行目を訂正します。
訂正前
#[5221+20*[1+#7]]=#12*COS[#1-#3]+#4+#8
#[5223+20*[1+#7]]=#12*SIN[#1-#3]+#6
訂正後
#[5221+20*[1+#7]]=#12*COS[#1+#3]+#4+#8
#[5223+20*[1+#7]]=#12*SIN[#1+#3]+#6

Zのオフセットが気になりチェックしましたら、X、Y、Zとも +入力とのことでしたので、このような訂正になりました。
訂正前は、-入力と考え組んでありました。

お礼

2009/03/27 20:51

回答ありがとうございました!大変勉強になります。わからないところがあるのでいくつか質問します。まずM88というMコードを探したのですがFANUCの本をみてもみあたりません。
あと45度のときはなぜ-45という指令になるのですか?

あともうひとつは#4102とはBの現在角度ということですか?

すいません!まだ勉強しはじめたばかりなので分からないことだらけです。
なにとぞよろしくお願いします!

質問者
2009/03/25 08:11
回答No.2

あまり深く考えないように.

ワークの「どこ」を中心に回っているのかだけを考えましょう.
逆に そこが判らないと答えはありません.

2009/03/25 08:08
回答No.1

三角関数を使えば簡単に出来ると思います。
弊社ではそれを使ったマクロを利用しています。
5軸の割り出し加工もそれでやっています。
マクロの内容は教えることは出来ませんが、
テーブル中心の機械座標値でひとつのワーク座標を使い、
ワーク原点でもう一つ使います。
テーブル中心からみたワーク原点の位置をsinやcosを使い計算すれば
結果は出ますよ。
がんばってチャレンジしてみてはいかがですか?

お礼をおくりました

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

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