本帖最后由 tstec* 于 2017-12-24 14:18 编辑
螺旋铣削宏优化(第五版,最终版!)本版本之后若无重要错误则不再更新了。
本次更新修正了多处错误,功能上不变。
历史版本此次就不再添加传送链接了。毕竟历史版本有错误。使用以本次版本为最好。
使用格式:G133X_Y_Z_R_Q_C_D_K_F_
使用说明:
1. 支持Z值与R值,高低位置不限定。均从R值起始螺旋。
2. Q值为固定螺距,不必区分螺距整除。
3. K值有四种状态可选:K02,K03,K12,K13
十位为0表示螺纹末尾添加清理刀路为1表示不添加
个位为2表示顺时针螺旋,为3表示逆时针螺旋
当K值缺省时,则默认K03即逆时针螺旋带清理刀路
4.F值可以指定也可以继承模态
调用示例:
G54G43 G90G0Z50
M3S1000F2000
G133 X100 Y0 Z-20 R3 C20 D30 Q1 (D20的铣刀做30的圆20个深)
G133X0(X0Y0位置做50的圆)
G133D50(X0Y0位置做50的圆)
M5
M30
G133自定义指令设定方法:
确认参数#3202的NE9为0,(为1,则隐藏并保护O9000~O9999,不能修改或者添加9000号开始的程序。若不能修改为0,提示写保护。则需要在#3211里输入机床密码,若需要解密码可以留言,探讨)
在参数#6050~6059设置G代码调用宏程序的数字,6050~6059分别对应程序号O9010~O9019。
导入该宏程序到机器内改名为O9010~O9019。
例如:在参数#6054里面输入133(0~255之间的数字),则调用O9014程序。 把宏程序改名为O9014即可。
注意:
G133这样的自定义指令,不能像G81等循环指令一样。需要每行首加G133
欢迎不吝测试指正,补全完善。本人期待能与G81等循环一样调用。
附:
宏变量说明:
#24 X #25Y #26 Z
#3 C #7 D #6 K
#9 F #17Q #18R
%
O9014( G133 XYZRCDQKF )
#102=60*FIX[#3012/10000]+FIX[#3012/100]-100*FIX[FIX[#3012/100]/100]
#100=0
IF[#510EQ#0]THEN#510=#102
IF[[#102-#510]LT0]THEN#100=1
IF[[#102-#510]GE60]THEN#100=1
G04
IF[#100EQ1]THEN#500=#0
IF[#100EQ1]THEN#501=#0
IF[#100EQ1]THEN#502=#0
IF[#100EQ1]THEN#503=#0
IF[#100EQ1]THEN#504=#0
IF[#100EQ1]THEN#505=#0
IF[#100EQ1]THEN#506=#0
IF[#100EQ1]THEN#507=#0
IF[#100EQ1]THEN#508=#0( TEMP CLEAN )
#510=#102( SET CLEAN LABEL )
#500=#5003(START POIT Z )
IF[#24EQ#0]THEN#24=#501
IF[#24EQ#0]THEN#24=#5001( GET X )
IF[#24NE#0]THEN#501=#24( SET TEMP X )
G04
IF[#25EQ#0]THEN#25=#502
IF[#25EQ#0]THEN#25=#5002( GET Y )
IF[#25NE#0]THEN#502=#25( SET TEMP Y )
G04
IF[#26EQ#0]THEN#26=#503
IF[#26EQ#0]THEN#26=#5003( GET Z )
IF[#26NE#0]THEN#503=#26( SET TEMP Z )
G04
IF[#18EQ#0]THEN#18=#504
IF[#18EQ#0]THEN#18=#5003( GET R )
IF[#18NE#0]THEN#504=#18( SET TEMP R )
G04
IF[#3EQ#0]THEN#3=#505
IF[#3EQ#0]THEN#3000=133( NEED SET C)
IF[#3NE#0]THEN#505=#3( SET TEMP C )
G04
IF[#7EQ#0]THEN#7=#506
IF[#7EQ#0]THEN#3000=133( NEED SET D)
IF[#7NE#0]THEN#506=#7( SET TEMP D )
G04
IF[#6EQ#0]THEN#6=#507
IF[#6EQ#0]THEN#6=03( CUSTOM SET K=13 )
IF[#6NE#0]THEN#507=#6( SET TEMP K )
G04
IF[#17EQ#0]THEN#17=#508
IF[#17EQ#0]THEN#3000=133( NEED SET Q)
IF[#17NE#0]THEN#508=#17( SET TEMP F )
G04
IF[#9EQ#0]THEN#9=#4109( GET F )
#101=15
IF[#4017EQ16]THEN#101=16( CHECK G15/G16 )
G#101
G90G00X#24Y#25
G15
#24=#5001
#25=#5002
IF[#18LT#26]THEN#17=-#17
#31=ABS[FIX[[#18-#26]/#17]]
#32=ABS[#18-#26]-#31*#17
#33=[#7-#3]/2
#27=360*ABS[#32/#17]
IF[#31EQ0]THEN#27=360*ABS[[#18-#26]/#17]
IF[[#6-10*FIX[#6/10]]EQ3]THEN#28=#24-#33*SIN[#27]
IF[[#6-10*FIX[#6/10]]EQ2]THEN#28=#24+#33*SIN[#27]
#29=#25+#33*COS[#27]
IF[#33LT0.1]THEN#3000=133( ROTATE LE 0.1 )
IF[[FIX[#6/10]]NE0]GOTO2
#6=#6-10*FIX[#6/10]
G90G00Z#18
G01Y[#25+#33]F#9
#30=1
WHILE[#30LE#31]DO1
G#6Z[#18-#17*#30]I0.J-#33
#30=#30+1
END1
G#6X#28Y#29Z#26I0.J-#33
G#6X#28Y#29Z#26I[#24-#28]J[#25-#29]
G01X#24Y#25
GOTO99
N2
#6=#6-10*FIX[#6/10]
G90G00X#24Y#25
G00Z#18
G01Y[#25+#33]F#9
#30=1
WHILE[#30LE#31]DO2
G#6Z[#18-#17*#30]I0.J-#33
#30=#30+1
END2
G#6X#28Y#29Z#26I0.J-#33
G01X#24Y#25
GOTO99
N99
G90G00Z#500
G#101
M99
%
补充内容 (2018-6-15 20:12):
功能介绍上漏交代 了,这个宏也可以支持极坐标。
但是不支持G91Y45K7这样的增量格式
G54G43 G90G0Z50
M3S1000F2000
G15
G133 X100 Y0 Z-20 R3 Q1 C20 D30
G133 Y45
G16
M5
M30
补充内容 (2018-6-15 20:16):
补充内容的示例程序上G15和G16写反了!特此声明!
不过宏的极坐标功能验证无误。 |