本帖最后由 tstec 于 2017-9-20 09:10 编辑
本次更新内容如下:
1,修正判断空变量的程序结构。(之前会把0也识别为空变量,从而导致异常。) 2,修正了模态值缓存的清空程序。(原先有时并不能正确清空缓存,导致下道工序时依然沿用的是许久之前定义的变量。)
欢迎各种挑毛病,提要求。本人会持续维护该螺旋宏的更新活动。
使用格式: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 )
#99=60*FIX[#3012/10000]+FIX[#3012/100]-100*FIX[FIX[#3012/100]/100]
IF[[#99-#999]LE0]THEN#100=1
IF[[#99-#999]GE60]THEN#100=1
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 )
#999=#99( 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
%
补充内容 (2017-11-14 08:55):
代码开头有三处#99变量,这个变量在系统中是无法调用的。需要改成#102,就可以正常上机运行了。之前由于疏忽,只是软件模拟运行成功就发布了,确实抱歉。
补充内容 (2018-2-9 14:13):
本帖已完结,各位请下载最终版本。
http://www.ugsnx.com/thread-190807-1-1.html |