先介绍下G65非模态宏程序调用(以法拉克为例)
格式:G65 P(子程序名)L(调用次数,1~9999次,省略默认为1次) (对自变量赋值)

例如:G65 P0049 A30.0 B5.0;
子程序:G0 X#2;

G1 Z-#1;
M99;
其中A30.0是对#1进行赋值,意思就是#1=30。下面会举出实例。
下面是自变量指定Ⅰ的对照表,Ⅱ的就不发了;
 
下面举个Tr40x7的例子;
O0001;(主程序)
T0101;
M3 S300;
G0 X45 Z10;(定位
G65 P0002 A40.0 B7.0 C-100 I1.8 J1.6;调用O0002程序1次,并对子程序中#1赋值40.0,#2赋值7.0,#3赋值-100.0 #4赋值1.8 ,#5赋值1.6)
G0 X200 Z300;退刀
M30;
O0002;(子程序
#6=0.25; (牙顶间隙为0.25
IF [#2GE6]THEN#6=0.5;(当螺纹大于或等于6时,牙顶间隙为0.5
IF [#2GE14] AND [#2LE44]THEN#6=1;(当螺距大于等于14且小于等于44时,牙顶间隙为1
#7=0.5*#2+#6;(单边牙高
#8=#1-2*#7;(小径值
#9=0.336*#2-0.536*#6;(槽底宽度,2*TAN[15]=0.536
N1 #10=#7*TAN[15]-0.03;(每层的右端起点Z值,留0.03mm余量
#11=-#10-#9+0.06;(每层左端的终点Z值,要减一个刀宽
#12=#10-#4; (刀具的实际Z值
N2 G0 X[#1+5] Z[#12+10];(定位到螺纹起点
G92 X[#8+#7*2] Z#3 F#2;(这里用G92就行了
IF [#12EQ#11]GOTO3;(如果Z到每层的左端尺寸则跳转到N3处
#12=#12-#5;(刀具每次Z方向进刀后的Z值
IF[#12GE#11]GOTO1;(如果每层没车到终点尺寸则返回N1处继续加工
#12=#11;(把Z值设为每层的终点Z值
GOTO2;(跳转到N2处加工每层的最后一刀
N3 #7=#7-0.1;(每层的X进刀量,半径值
IF[#7GE0]GOTO1;(如果没车到牙底则返回N1处继续加工
#7=0;(最后赋值修两边
G0 Z[#10-#4+10.03];
G92 X#8 Z#3 F#2;
G0 Z[#11+9.97];
G92 X#8 Z#3 F#2;
G0 X100;
M99;

这个子程序把所有数据都参数化了,以后只要用G65调用这个子程序对螺纹的尺寸进行赋值就行了

发表回复

电子邮件地址不会被公开。 必填项已用*标注

Protected by WP Anti Spam
QQ交谈
联系电话
微信联系

扫一扫
添加微信

联系电话
13068869296