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

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

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

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

noname#230358
noname#230358

みんなの回答

noname#230359
noname#230359
回答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で ワーク原点オフセットにアクセスできますが、 軸と変数の番号の関係が違っています.

noname#230358
質問者

補足

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

noname#230359
noname#230359
回答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とも +入力とのことでしたので、このような訂正になりました。 訂正前は、-入力と考え組んでありました。

noname#230358
質問者

お礼

回答ありがとうございました!大変勉強になります。わからないところがあるのでいくつか質問します。まずM88というMコードを探したのですがFANUCの本をみてもみあたりません。 あと45度のときはなぜ-45という指令になるのですか? あともうひとつは#4102とはBの現在角度ということですか? すいません!まだ勉強しはじめたばかりなので分からないことだらけです。 なにとぞよろしくお願いします!

noname#230359
noname#230359
回答No.2

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

noname#230359
noname#230359
回答No.1

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

関連するQ&A

  • 回転後の座標について 5軸加工機

    今年中に、OKKの縦型マシニング機械(三菱Neomatic)に日研のNCインデックス(角度と回転ができる仕様)を載せる予定です。 使いやすくするため、テーブル回転後の座標を、変数で計算ができるプログラムを作っているのですが、うまくいかず頭をかかえてる毎日であります。 そこで、皆様の力をお願いしたく質問させていただきます。 私の希望としては、 #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) 上記、G54座標中心からずれた数値(#101から#103)から、回転&角度(#104、#105)の数値を変更するだけで、ひねった後の座標を計算し、その答えをG55の座標系に入れるプログラムを作っているのですが、いくつか問題がある為うまくいきません。 ◎G54のワーク座標がテーブル回転中心ではない。 ◎G54のワーク座標の中心位置から、さらにずらした位置を回転させたい。 ◎X,Y,Z及び、回転軸C、角度軸A 共にプラス数値とマイナス数値があり計算が困難。 ◎回転軸C、角度軸A 共に90度以上回る。 この様な原因があり、電卓で計算した数値と変数で計算させた数値が違い、困った次第であります。 機械の特徴としては、 ◎機械座標はマイナス数値 ◎テーブル回転中心座標は#501=X #502=Y #503=Z に登録済み。 ★☆まとめ☆★ #5221=G54X座標 #5222=G54Y座標 #5223=G54X座標 を使い #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) で移動させた数値の答えを #5221=G54X座標 #5222=G54Y座標 #5223=G54Z座標 に登録したい。 文章が下手で申し訳ありませんが、どなたか変数を使い回転後の座標が計算できるプログラムをお教え下さい。 不明な点等ございましたらお教え下さい。 大変困っているので宜しくお願いします。 まとめの部分を下記の様に修正いたします。 ★☆まとめ☆★ #5221=G54X座標 #5222=G54Y座標 #5223=G54X座標 を使い #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) で移動させた数値の答えを #5241=G55X座標 #5242=G55Y座標 #5243=G55Z座標 に登録したい。

  • 回転した座標系を基準とし、再回転したときの回転行列について

    x軸、y軸、z軸が互いに直角に交わる座標系を考えます。(これを座標系Aとします) 座標系Aを、原点を中心とし、各軸ごとにθxa,θya,θzaだけ回転させた座標系を座標系Bとします。 さらに、座標系Bを基準とし、各軸ごとにθxb,θyb,θzbだけ回転させた座標系を座標系Cとします。 このとき、座標系Aから見た座標系Cの回転角は、どのように計算すればよろしいでしょうか? 座標系Aを基準とした回転角で座標系Bを計算し、さらに座標系Aを基準とした回転角で座標系Cを計算し……という問題であれば、単純に回転行列を掛けていけばいいと思うのですが、 「1つ前の座標を基準とした回転角を与えられたとき、全体でどれだけ回転したか?」 を表現する方法がわからなかったので、ご教示いただければ幸いです。 何卒よろしくお願いいたします。

  • B軸回転後の座標を求めるソフトを探しています。

    マシニングセンタにB軸回転機能があり、 B軸0度の時に芯だしをして、 例えばB軸を25度回転させた時の機械座標を簡単に求められるソフトを探しています。

  • 回転した座標軸と一致させるための回転軸と角度の算出

    こんにちは。お知恵をお借りしたく質問致します。 プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。 ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。) 図のように、xyz座標を回転してXYZ座標の向きに一致させたいと考えています。 また、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数があるので、それを活用しようと考えています。α,β,γはコサイン値(方向余弦)です。回転方向は、ベクトルの向きに時計回り…右ネジの法則みたいな感じです。 x軸から見たXの角度(θxX), y軸からのX(θyX), z軸からのX(θzX) 同様にx軸から見たY(θxY),θyY,θzY、θxZ,θyZ,θzZ といったように、それらの角度(コサイン値)は分かっています。 (=xyz座標からみたXベクトルの方向余弦、Yベクトルの方向余弦、Zベクトルの方向余弦が分かっている。) z軸とZ軸の外積を取ったベクトルを回転軸として、θzZが分かっているのでその角度で回転することでZ軸は一致しますけど、XY軸は合いません。(当然ですが…) そのXY軸を合わせるためにまた回転するというのも遠回りで、任意の軸1本を中心に何度か回転するだけ(上記関数を1度使用するだけ)で、必ず向きが一致する解があると思うのですが、その任意軸と角度を算出する方法が分かりません。 一般にどういう計算をするのでしょうか。アドバイスいただければ幸いです。 なお、上記関数を用いない方法でも構いません。 「X軸(Y軸、Z軸)を回転軸としてφ度回転する」という関数もあるので、オイラー角を求める方法でも構いません。 その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。 どうかよろしくお願いいたします。

  • 横型のフライス、またはマシニングについて

    横型の汎用機(安田工業)を今使っているのですが、回転テーブルの軸をB軸とすると0°90°,180°,270だけ考えるとして、一般的にG54~G59の座標の取り方はどのようにしますか?例えば、反時計まわりに0°をG54,90°をG55, というように割り振りしていくのか、時計回りにしていくのかなどです。 うちの汎用機はオペレータがZ軸のプラス側からマイナス側を見ている向きに立っているとしたら、ワークの中心をXのワーク原点とするとワーク原点より左側方向に主軸が動くとワークのX数値がプラスになり、ワーク原点の右側に主軸が動くとマイナスになります。これはどの横型でもこのような構成なのでしょうか? オペレータの視点を変えてZ軸のマイナス側からプラス側をみると、確かに縦型のフライスと軸の構成が同じなのですが、やはり操作する側からみた視点で分かりやすい軸構成のほうが使いやすく思えるのですが一般的にはどうなのでしょうか?どなたか教えていただけないでしょうか?

  • 3次元座標を原点中心に回転したい

    任意のゼロでないベクトル(a,b,c)を原点中心に回転し、z軸に合致させるとする。同じ回転移動を3次元座標上の任意の点(x,y,z)に対して行った時の移動後座標が知りたいのです。 計算と結果を教えて下さい。

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • エクセルで回転する座標の出し方

    エクセルで回転する座標の出し方 (例) 座標X100、Y100の点から好きな角度を回したときのX、Yの座標の求め方 回転中心はX0、Y0 回転方向は反時計回り 例で言えば X141.421、Y0  が0度       X0、Y141.421  が90度       X-141.421、Y0 が180度       X0、Y-141.421 が270度 エクセルでの問題点は 1.角度計算がラジアンになる デグリも関数はあるけど書式がわからない  無理やり(PI()/180)などを使ってるがアークタンジェントでは書式がわからない 2.正と負の計算式・答えが負になるときの処理ができない  回転角度が270度とか 今電卓で打っているのは 100/100=ATAN ----------------------最初の角度 100*100+100*100の答えのルート--------回転中心からの直線距離 最初の角度+動かしたい角度------------求めたい座標の角度 SIN求めたい座標の角度*直線距離-------Y座標 答え COS求めたい座標の角度*直線距離-------X座標 答え 最初のX、Y座標と 動かしたい角度を入れると答えが出るような 物が作りたいです よろしくお願いします エクセル2000 WINXP

  • 球座標の回転角の取り方について

    極座標系の一種に、「球の半径 r 、 z 軸からの回転角(0からπ)、x 軸からの回転角(0から2π)」の3つを用いて座標を記述する、球座標というものがありますが、なぜ z 軸からの回転角なのでしょうか? 表現としては x - y 平面からの回転角(-π/2からπ/2)でもいいように思います。 (ほかに、もっといい例があるかもしれませんが一応) 個人的考えてみた結果、「z 軸からの」という表現になっている理由として (1)多次元への拡張を考慮したから(球座標系はもう使えませんが) (2)「x軸からの」という言い回しとの対応を図りたかったから (3)回転角の範囲が-π/2からπ/2、となって扱いにくいから(よく考えてないのでわかりませんが、場合によっては便利な場合もあるかもしれません) の3点が関係しているのかなと思いました。 定義だからそうなんだと言われればそれまでですが、皆さんはどのように考えますか? また、球座標に関して、z 軸からの回転角以外などの設定の仕方もあるのでしょうか?(先ほどの例のように) 信用はできないかもしれませんが、Wikipediaにはz軸設定でしか載っていませんでしたので。 回答よろしくお願いします。

  • 5軸マシニングセンタ、同期5軸加工でのワーク座標…

    5軸マシニングセンタ、同期5軸加工でのワーク座標設定について 5軸マシニングセンタ、同期5軸加工でのワーク座標設定についてA,(B)軸(ゆりかご)を+-0.01ほどどちらかに強制的にずらして(角度を傾けて)ワーク座標設定をし同期5軸加工を行う方法について問題があるのか?? どなたかご存知の方おられましたら教えていただきたいです。 (補足、今回はEXTの5軸すべて0とし、加工物平面を0としたいがために強制的にA,(B)軸をずらすとする。加工前の校正は行う。もし絶対座標のA(B)軸が0ならば機械座標は+-0.01と表示されています) すみませんが回答のほどよろしくお願いします。