用户宏指令是调用用户宏程序本体的指令,可以采用下列方法调用宏程序:
1)非模态调用(G65);
2)模态调用(G66、G67);
3)使用G代码的宏程序调用;
4)使用M代码的宏程序调用;
5)用M代码调用子程序;
6)用T代码调用子程序。
宏程序调用与子程序调用之间的差别,有如下几点:
1)用G65可以指定自变量,而M98没有该功能;
2)当M98程序段包含另一个NC指令时,在指令执行之后调用子程序,而G65无条件地调用宏程序;
3)当M98程序段包含另一个NC指令时,在单程序段方式中,机床停止,而G65机床不停止;
4)用G65改变局部变量的级别,用M98不改变局部变量的级别。
1.非模态调用(单一调用)(G65)
指一次性调用宏主体,即宏程序只在一个程序段内有效,叫做非模态调用。
(1)指令格式
(2)指令说明
P指定宏程序号;L为重复调用次数(1~9999);自变量赋值是由地址和数值构成的,用以对宏程序中的局部变量赋值。
要向用户宏程序本体传递数据时,由自变量赋值来指定,其值可以有符号和小数点,而与地址无关。自变量赋值有两种类型:
1)自变量赋值Ⅰ:用字母后加数值进行赋值,除了G、L、N、O和P之外,其余所有字母地址都可以给自变量赋值。赋值不必按字母顺序进行,但使用I、J、K时必须按顺序指定,不赋值的地址可以省略。地址与变量的对应关系见表2-1。
2)自变量赋值Ⅱ:除了A、B、C之外,还用10组I、J、K对自变量进行赋值,同组的I、J、K必须按顺序赋值,不赋值的地址可以省略。地址与变量的对应关系见表2-2。
表2-2 地址与变量的对应关系
(续)
注:表中I、J、K的下标,只在表中表示组号,实际指令时不注下标。
注意:
1)自变量赋值Ⅰ和Ⅱ可以共存,此时后者有效。
例:
可以看出,I4.0和D5.0都对#7赋值,此时,后面的D5.0有效,所以,#7=5.0。
2)I、J、K的顺序不可以颠倒,不赋值的可以省略。
例:
(3)编程举例
编制一个宏程序加工圆周(见图2-26)上的孔。圆周的半径为1,起始度为A,间隔为B,钻孔数位H,圆的中心是(X,Y)。指令可以用绝对值或增量值指定。顺时针方向钻孔时,B应指定为负值。
图2-26 用宏程序编制圆周螺纹孔程序
1)调用格式:
G65 P9100 Xx Yy Zz Rr Ff Ii Aa Bb Hh;
X:圆心的X坐标(绝对值或增量值指定)(#24);
Y:圆心的Y坐标(绝对值或增量值指定)
Z:孔深(#26);
R:快速趋近点坐标(#18);
F:切削进给速度(#9);
I:圆半径(#4);
A:第一孔的角度(#1);
B:增量角指定负值时为顺时针(#2);
H:孔数(#11);
2)调用宏程序的程序:
O0002;
G90 G92 X0 Y0 Z100.0;
G65 P9100 X100.0 Y50.0 R30.0 Z-50.0 I100.0 A0 B45.0H5;
M30;
3)宏程序被调用的程序:
O9100;
#3=#4003;储存03组G代码
G81 Z#26 R#18 F#9 K0;钻孔循环,也可以使用L0
IF[#3 EQ 90]GOTO 1;在G90方式转移到N1
#24=#5001+#24;计算圆心的X坐标
#25=#5002+#25;计算圆心的Y坐标
N1 WHILE[#11 GT 0]DO 1;直到剩余孔数为0
#5=#24+#4*COS[#1];计算X轴上的孔位
#6=#25+#4*SIN[+1];计算Y轴上的孔位
G90 X#5 Y#6;移动到目标位置之后执行钻孔
#1=#1+#2;更新角度
#11=#11-1;孔数-1
END 1;
G#3 G80;返回原始状态的G代码
M99;
4)变量的含义:
#3:储存03组的G代码;
#5:下一孔的X坐标;
#6:下一孔的Y坐标;
2.模态调用(G66、G67)
(1)指令格式
G66 P(程序号)L(重复次数)<自变量赋值>;
(2)指令说明
在书写时,G66必须写在<自变量赋值>之前。
L最多可为9999次。
自变量赋值与非模态调用的相同。
G67:取消宏程序模态调用方式。
G66和G67应成对使用。自变量中,可以使用小数点和符号。
模态调用的应用,在宏程序调用方式下,每执行一次移动指令,就调用一次前面所指定的宏程序。
例:钻孔循环
在各定位点执行钻孔循环,如图2-27所示。
G66 P9082 R(R点)Z(Z
图2-27 模态调用
点)X(暂停);在这个区域中,每个移动程序段的终点执行钻孔循环。因M程序段
无坐标移动,故不执行钻孔。
G67;
宏程序:
O9082;
G00 G91 Z#18;
G01 Z#26;
G04 X#24;
G00 X_[ROUNG [#18] +ROUND [#26]];
G90;
M99;
说明:O9082功能与固定循环G82功能相同。
(3)编程举例
用宏程序编制图2-28所示的G81固定循环的操作。加工程序使用模态调用。为了简化程序。使用绝对值指定全部的钻孔数据。
固定循环是由下面的基本动作组成的。
第1步:沿X轴和Y轴定位;
第2步:快速移动到R点;
第3步:切削进给到Z点;(www.xing528.com)
第4步:快速退到R点或I点。
1)调用格式:
G65 P9110 Xx Yy Zz Rr Ff Ll;
X:孔的X坐标(由绝对值指定)(#24);
Y:孔的Y坐标(由绝对值指定)(#25);
Z:Z点坐标(由绝对值指定)(#26);
R:R点坐标(由绝对值指定)(#18);
F:切削进给速度(#9);
L:重复次数。
2)调用宏程序的程序:
O0001;
G28 G91 X0 Y0 Z0;
G92 X0 Y0 Z50.0;
G00 G90 X100.0 Y50.0;
G66 P9110 Z-20.0 R0.0 F500;
G90 X20.0 Y20.0;
X50.0;
Y50.0;
X0.0 Y80.0;
G67;
M30;
图2-28 用宏程序编制G81固定循环举例
3)宏程序被调用的程序:
O9110;
#1=#4001;储存G00/G01
#2=#4003;储存G90/G91
#3=#4109;储存切削进给速度
#5=#5003;储存钻孔开始的Z坐标
G00 G90 Z#18;定位在R点
G01 Z#26 F#9;切削进给到Z点
IF[#4010 EQ 98]GOTO 1;返回到1点
G00 Z#18;定位在R点
GOTO 2;
N1 G00 Z#5;定位在1点
N2 G#1 G#3 F4;恢复模态信息
3.使用G代码的宏程序调用
在参数NO.220~NO.229中设定G代码值,可以调用宏程序O9010~O9019。
G××<自变量赋值>=G65P△△△△<自变量赋值>
式中,××可以从01~255(65~67除外)中选取10个代码值。
在M代码或T代码调用的子程序中,不能指定这些代码。这些代码必须在程序段的开头(N号之后)指令中。
参数号与宏程序号的对应关系,见表2-3。
例:使用G12的顺时针圆孔铣削加工。
参数设置:在NO.220中设置12,即G12=G65 P9010
如图2-29所示,已知圆孔半径为I,刀具偏置号为D,那么宏指令为G12 I(半径)D(刀偏号);
表2-3 G代码调用宏程序参数对应表
图2-29 铣圆孔
程序如下:
O9010;
#1=ABS[#4]-#[2000+#7];刀心半径
IF[#1 LE 0] GOTO 1;孔半径≤刀具半径,则不加工
#2=#1/2;
#3003=3;禁止单段,不等待FIN信号
G91 G01 X#2 Y-#2 R#2;
G17 G02 X#2 Y-#2 R#2;圆弧切入
I-#1;铣加工整圆
X-#2 Y-#2 R#2;圆弧切出
G01 X[#1-ROUND[#2]] Y#2;返回圆中心
#3003=0;恢复单段停止,等待FIN信号
N1 M99;
从上例可以看出,在设置了G代码调用后,使用时与ISO代码无区别。
4.使用M代码的宏程序调用
在参数NO.230~NO.239中设置M代码值,可以调用宏程序O9020~O9029。
M××<自变量赋值>=G65P△△△△<自变量赋值>
式中,××可以从06~255中选取10个代码值。这些代码必须在程序段的开头指令中。
注:在用G代码调用宏程序,或者用M代码或T代码调用子程序时,若指令了这些M代码,则不能进行宏调用,而是作为普通的M代码处理,向机床侧发出MF和M代码。
5.用M代码调用子程序
(1)功能
在参数中设置调用子程序(宏程序)的M代码号,按与子程序调用(M98)相同的方法调用宏程序。
例:
O0001;
M03;调用宏程序转至O9001
M30;
O9001;宏程序
M99;返回主程序
(2)注意事项
1)在参数(NO.6071~NO.6079)中设置调用子程序的M代码(1~99999999),相应的用户宏程序(O9001~O9009)可以用与M98同样的方法调用该代码。
2)参数号和程序号之间的对应关系见表2-4。
3)重复。与非模态调用一样,地址L可以指定1~9999的重复次数。
4)自变量指定。不允许自变量指定。
5)M代码。在宏程序中,调用的M代码被处理为普通的M代码。
6)限制。用G代码调用的宏程序中或用M代码或T代码调用的程序中,不能用M码调用子程序。这种宏程序或程序中的M代码被处理为普通的M代码。
表2-4 参数号与程序号之间的关系
6.用T代码调用子程序
(1)功能
通过设置参数,可使用T代码调用子程序(宏程序),每当在加工程序中指定T代码时,即调用宏程序。
例:
O0001;
T23;调用宏程序转至O9000
M30;
O9000;宏程序
M99;返回主程序
(2)注意事项
1)调用。设置参数NO.6001的五位TCS=1,当在加工程序中指定T代码时,可以调用宏程序O9000。在加工程序中,指定的T代码赋值到公共变量#149。
2)限制。用G代码调用的宏程序中或用M代码或T代码调用的程序中,不能用T代码调用子程序。这种宏程序或程序中的T代码被处理为普通的T代码。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。