- 締切済み
B軸回転後の座標について
- B軸回転後の座標について何点かお聞きします。横型MCのB軸回転後の座標を計算する方法やワーク座標の設定について教えてください。
- B軸の回転中心はテーブルの中心ですが、ワーク座標を中心にすれば回転中心とワーク座標の中心が一致し楽に計算できます。しかし、テーブル中心とワーク座標の中心が異なる場合、どのように計算するのか疑問です。
- B軸で角度回転させた場合、ワーク座標と中心をどこに設定すれば計算が楽になるのかについても教えていただけませんか?他の例も交えて説明していただけると幸いです。
- みんなの回答 (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で ワーク原点オフセットにアクセスできますが、 軸と変数の番号の関係が違っています.
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とも +入力とのことでしたので、このような訂正になりました。 訂正前は、-入力と考え組んでありました。
お礼
回答ありがとうございました!大変勉強になります。わからないところがあるのでいくつか質問します。まずM88というMコードを探したのですがFANUCの本をみてもみあたりません。 あと45度のときはなぜ-45という指令になるのですか? あともうひとつは#4102とはBの現在角度ということですか? すいません!まだ勉強しはじめたばかりなので分からないことだらけです。 なにとぞよろしくお願いします!
あまり深く考えないように. ワークの「どこ」を中心に回っているのかだけを考えましょう. 逆に そこが判らないと答えはありません.
三角関数を使えば簡単に出来ると思います。 弊社ではそれを使ったマクロを利用しています。 5軸の割り出し加工もそれでやっています。 マクロの内容は教えることは出来ませんが、 テーブル中心の機械座標値でひとつのワーク座標を使い、 ワーク原点でもう一つ使います。 テーブル中心からみたワーク原点の位置をsinやcosを使い計算すれば 結果は出ますよ。 がんばってチャレンジしてみてはいかがですか?
補足
なるほど!少しずつ理解できそうです!あとひとつ質問がありますが modの使い方をよく理解していないので教えていただけないでしょうか? あと(3)さんの書いていただいたマクロ内容を一行ごとにどのような 動作をしているのか解説をお願いできますか?