ラベル

2017年5月12日金曜日

Gコードのこと M0、M98、関数

XM-20をCNC化した当初は、CADの吐き出したDXFからNCVCでGコードを生成していた。
ところが、CADとの相性の問題か、変換がうまくいかないケースが多いため、一回り分をNCVCで生成してから手直しを掛けて、Z方向のステップ回数分コピーしていた。手間がかかるのでEXCELを使ったりもしたが、やはりめんどくさい。FOR~NEXTみたいなのがあれば便利なのに、とずっと思っていたが、目の前の作り物に追われて、NCVCがデフォルトで吐き出すコード以外は使わずにいた。最近になって、MACH3のGコードの勉強と検証を始めたら、色々便利な発見があった。折角なので、ここの所新しく覚えた、MACH3のGコードの解説を例を挙げて書いておく。

X軸の真直度を測定する時に書いたコードはこんな感じ。
(例1)
%
(2017/04/25)
#1001=0(X-Now)
#1002=0(X-Start)
#1003=228(X-End)
#1004=38(X-Step)
#1005=FIX[[#1003-#1002]/#1004](X-Times)
#1006=1(Counter)
G90G92X0.Y0.Z0.
M98P1L#1005 (x-houkou)
G00X0Y0Z0A0
M30
O1(***X-SUB***)
#1006=[#1006+1]
G00A#1006
#1001=[#1004+#1001]
G00X#1001Y#1011
M0
M99
%

・M0 一時停止、サイクルスタートボタンで再開 測定、タップ立て、ドリル交換など。
 上の例ではX軸を38mmピッチで移動させて停止したところでピックテストの値を読む。

・M1 オプショナルスイッチオンの時一時停止。使ったことがない。デバック用か?

・M98 サブルーチンの呼び出し
 M98P~L~
 Pにサブルーチン番号、Lに繰り返し回数を入れる。~はパラメータ可。(整数のこと)
 サブルーチンにはラベルO~(オー、ゼロではない)をつける。

・M99 サブルーチンからのリターン

・A軸 A軸を使っていない場合、表示を利用してカウンタに使ったり、パラメータの内容を覗いたり。
 上のコードでは、G00A#1006 でカウンタに使っている。
 これを使うために、Mach3のA軸のMotor Turning and SetupはSteps per:50Velocity:30000
 Acceleation:5000 という爆速設定になっているが、それでもレスポンスがちょっと遅れる。
 問題になるようなら、表示を1/100にする、等の工夫が必要。

・ABS(絶対値)、FIX(切り捨て)、FUP(切り上げ)、ROUND(四捨五入)
 FIX、FUPは負の数の扱いに注意。
 FIX[2.5]=2、FUP[2.5]=3だが、FIX[-2.5]=3、FUP[-2.5]=2となる。
2017年8月27日修正 失礼、誤記です。FIX[-2.5]=-3、FUP[-2.5]=-2ですね。

他、ACOS、ATAN、COS、EXP、LN、SIN、SQRT、TAN、MOD(余り)、**(べき乗)が使える。
また、論理演算として、OR、XOR、ANDがあるが、使ったことはない。

・パラメータ
 #に続けて1から10320の間の整数を入れる。数字の部分をパラメータにするのも可。
 例えば ##1 とすると、#1の内容に応じたパラメータを指定できる。便利そうだけど使ったことは 
 ない。
 5000番台にはシステム関係のパラメータあり、触っちゃまずそうなので使わないようにしている。

下記はフライカッターで旋盤アリ溝を修正した時のGコード。(左側面用)
(例2)
%
(2017.4.12)
G90G54G92X0.000Y0.000Z0.000
M08
S800M03
#1001=0.(Z zahyou)
#1002=0.025(X kirikomi)
#1003=0(X zahyou)
#1004=0.5(Z step)
#1005=13(Z times)
M98P01L[#1005]
G01X0.Y0.Z0.
M09
M05
M30

O02(***sub-left***)
#1003=[#1001*-0.57735+#1002]
G01X[#1003]Z[#1001]F50.
G01Y115.F50
G00X[#1003-0.5]
G01Y0.F500
#1001=[#1001+#1004]
M0
M99
%



#1003=[#1001*-0.57735+#1002]で Z座標=X座標/tan60°+切り込みとしている。
このやり方で疑似3次元切削的なものが色々やれそう。

・その他
G40、G41、G42 (カッター径補正)
 これは曲者だが、便利。
 同一のパスから荒取りと仕上げを行ったり、千鳥に掘っていったり。
 もちろん、本来のカッター径補正にも使う。これは別途まとめる。

G68、G69座標系の回転およびリセット
 G68 A~ B~ I~ R~ Rが角度(deg、+がCCW)
 これもカッター径補正と一緒に書く。

0 件のコメント:

コメントを投稿