トロコイド切削マクロその2 G02 G03用

さて、次はG02,G03の場合。

(Trochoid-G02G03-Path KUBOTAENGINNERING 2022/03/26)
G17 G54 G40 G49 G80 G90
G21
M3 S2500
G92X0Y0Z20.000
(**********parameter**********)
#3001=0.6(R) #3002=0.8(Pitch)
#2011=150.(Torchoid-G01-feed)
#2012=[#2011]
(############G03-path############)
G00Z0.1
G01Z-2.0 F50
#3101=  0 (Xa) #3102= 0(Ya) #3103= 20.(Xb) #3104=   0 (Yb) #3105= 10.(I) #3106= 0.(J) #3107=-1(G02:- G03:+) M98P7
#3101= 20.(Xa) #3102= 0(Ya) #3103= 30.(Xb) #3104= -10.(Yb) #3105= 10.(I) #3106= 0.(J) #3107= 1(G02:- G03:+) M98P7
G00Z20.000
G00X0Y0
M09
M05
M30

O7(***trochoid-G02G03***)
#1206=SQRT[[#3105]**2+[#3106]**2](Rc) 
#1207=FUP[[0-#3105]/10000.](Xaflag +:1 0,-:0)  #1208=FUP[[0-#3106]/10000.](Yaflag +:1 0,-:0) 
#1211=[ASIN[ROUND[[0-#3106]/#1206*1000]/1000]*#1207*#1208](ThetaA1) 
#1212=[[180-ASIN[ROUND[[0-#3106]/#1206*1000]/1000]]*[1-#1207]](ThetaA23) 
#1213=[[360+ASIN[ROUND[[0-#3106]/#1206*1000]/1000]]*#1207*[1-#1208]](ThetaA4)
#1201=[#1211+#1212+#1213](ThetaA)
#1220=ASIN[ROUND[[#3104-#3102-#3106]/#1206*1000]/1000]  (ThetaB_BASE) 
#1209=FUP[[#3103-#3101-#3105]/10000.](Xbflag +:1 0,-:0)  #1210=FUP[[#3104-#3102-#3106]/10000.](Ybflag +:1 0,-:0)
#1221=[#1220*#1209*#1210](ThetaB1) #1222=[[180-#1220]*[1-#1209]](ThetaB23)
#1223=[[360+#1220]*#1209*[1-#1210]](ThetaB4)
#1202=[#1221+#1222+#1223](ThetaB)
#1214=FUP[[#1206-#3002/2]/10000] (P/2<Rc:1 P/2>=Rc:0)
#1203=[2*ASIN[ROUND[#3002*#1214/2/#1206*1000]/1000]+[180*ABS[#1214-1]]](ThetaPkari)
#1215=[[#1202-#1201]/ABS[#1202-#1201]](a-b_DIRECTION a<b:+1 a>b:-1)
#1216=[[ABS[#1202-#1201]*[#3107*#1215/2+0.5]]+[360-ABS[#1202-#1201]]*[#3107*#1215/-2+0.5]](ThetaAB)
#1204=[FUP[ABS[#1216]/#1203]](n)
#1205=[ABS[#1216]/#1204*#3107](STEP-ThetaP)
#1505=[#1201+#1205](Theta-start)
M98P8L#1204
M99
O8(****trochoid-G02G03-path****)
#1231=[#3101+#3105+#1206*COS[#1505]](Xi)  #1232=[#3102+#3106+#1206*SIN[#1505]](Yi)
#1303=[[#1231-#3101-#3105]/#1206]  (RCX)  #1304=[[#1232-#3102-#3106]/#1206]  (RCY)
#1107=[#1303*#3001*#3107*-1]        (It)  #1108=[#1304*#3001*#3107*-1]        (Jt)
#1103=[#1231+#3107*#1303*#3001](Xsi) #1104=[#1232+#3107*#1304*#3001](Ysi) 
#1105=[#1231-#3107*#1303*#3001](Xei) #1106=[#1232-#3107*#1304*#3001](Yei)
G01 X#1103 Y#1104 F#2011 
G03 X#1105 Y#1106 I#1107 J#1108 F#2012
#1505=[#1505+#1205]
M99
%

上記Gコードによるツールパスは以下

メインルーチンで始点Xa、Ya、終点Xb、Yb、中心位置I、J、G02G03判別用フラグを指定してサブルーチンO7(***trochoid-G02G03***)を呼ぶと、始点終点間角度ThetaABを計算して、トロコイドピッチPitchからステップ角度STEP-ThetaPを計算、ステップ毎にO8(****trochoid-G02G03-path****)を呼んでトロコイドのループの各座標を計算している。

ここで厄介なのが始点A、終点Bを円弧中心からの角度で表す計算。象限によって式が変わるので、条件分岐を使いたいところだが、Mach3のGコードには条件分岐はない。それでは、とそれぞれの式は全部計算しておいて、フラグパラメータをかけて該当しない象限の数値を0にして、全部足す形とした。

また、コード中、例えばASIN(ROUND(-I/Rc*1000)/1000)となっているのは、小数点以下4桁目を四捨五入している。これは、元ネタのGコードが I>Rcとなっていることがあり、I/Rc>1となってASINがエラーになるのを防ぐため。(これは、FreeCADのPath出力では結構頻繁に起きる。)

これで、前回のG01版と合わせて任意の溝堀りをトロコイドパスに変換することができたわけだが、パスデータをぽちぽち手打ちするのはかなりめんどくさい。

で、PYTHONでG01,G02,G03をトロコイドパスデータに変換するプログラムを作った。これは次回にでも解説する。

トロコイド切削マクロその2 G02 G03用” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です