首页 理论教育 宏程序调用中的小数点兼容性与调用规则

宏程序调用中的小数点兼容性与调用规则

时间:2023-06-25 理论教育 版权反馈
【摘要】:在宏程序调用中,使用小数点可使程序兼容性好。图1-8 圆周螺纹孔3)宏程序每调用1次,局部变量级别加1。4)当宏程序执行M99时,控制返回到调用程序。此时,局部变量级别减1,并恢复宏程序调用时存储的局部变量值。取消 指定G67代码后,其后面的程序段不再执行模态宏程序调用。3)在只有诸如辅助功能,但无移动指令的程序段中不能调用宏程序。

宏程序调用中的小数点兼容性与调用规则

(1)宏程序调用方法

978-7-111-33271-8-Chapter01-44.jpg

(2)宏程序调用和子程序调用之间的差别 宏程序调用(G65)不同于子程序调用(G98),如下所述:

1)G65可以指定自变量(数据传送到宏程序),M98没有该功能。

2)当M98程序段包含另一个NC指令(例如:G01 X100.0 M98 Pp)时,在指令执行之后调用子程序。相反,G65无条件地调用宏程序。

3)当M98程序段包含另一个NC指令(例如:G01 X100.0 M98 Pp)时,在单程序段方式中,机床停止。相反,G65机床不停止。

4)用G65,改变局部变量的级别;用M98,不改变局部变量的级别。

1.非模态代码调用(G65)

当指定G65时,以地址P指定的用户宏程序被调用。数据(自变量)能传递到用户宏程序体中。

指令格式:G65 Pp L978-7-111-33271-8-Chapter01-45.jpg<自变量表>;

其中:p为要调用的程序号978-7-111-33271-8-Chapter01-46.jpg为重复的次数(默认值为1),自变量为传递到宏程序的数据。

例如:下列程序中#1=1.0,#2=2.0。

978-7-111-33271-8-Chapter01-47.jpg

(1)调用

1)在G65之后,用地址P指定用户宏程序的程序号。

2)当要求重复时,在地址L后指定从1~9999的重复次数。省略L值时,认为L等于1。

3)使用自变量指定,其值被赋到相应的局部变量。

(2)自变量指定 可用两种形式的自变量指定。自变量指定Ⅰ使用除了G、L、O、N和P之外的字母,每个字母指定一次。自变量指定Ⅱ使用A、B、C和Ii、Ji、Ki(i为1~10)。根据使用的字母,自动决定自变量指定的类型。

1)自变量指定Ⅰ

978-7-111-33271-8-Chapter01-48.jpg

a)地址G、L、N、O和P不能在自变量中使用。

b)不需要指定的地址可以省略,对应于省略地址的局部变量为空。

c)地址不需要按字母顺序指定,但应符合字母地址的格式。I、J和K需要按字母顺序指定。

举例:B__A__D__…J__K__正确

B__A__D__…J__I__不正确

2)自变量指定Ⅱ:使用A、B和C各1次,I、J、K各10次。自变量指定Ⅱ用于传递诸如三维坐标值。I、J、K的下标用于确定自变量指定的顺序,在实际编程中不写。

978-7-111-33271-8-Chapter01-49.jpg

(3)格式 任何自变量前必须指定G65。

(4)自变量指定Ⅰ、Ⅱ混合使用CNC内部自动识别自变量Ⅰ和自变量Ⅱ。如果自变量指定Ⅰ和自变量指定Ⅱ混合使用,后指定的自变量类型有效。举例如下:

978-7-111-33271-8-Chapter01-50.jpg

本例中,I4.0和D5.0自变量都分配给变量#7,后者D5.0有效。

(5)小数点的位置 不带小数点的自变量,其数据单位为各地址的最小设定单位。传递不带小数点的自变量,其值会根据机床实际的系统配置变化。在宏程序调用中,使用小数点可使程序兼容性好。

(6)调用嵌套 调用可以嵌套4级,包括非模态代码调用(G65)和模态代码调用(G66),但不包括子程序调用(M98)。

(7)局部变量的级别

978-7-111-33271-8-Chapter01-51.jpg

1)局部变量嵌套从0到4级。

2)主程序是0级。

978-7-111-33271-8-Chapter01-52.jpg

图1-8 圆周螺纹

3)宏程序每调用1次(用G65或G66),局部变量级别加1。前1级的局部变量值保存在CNC中。

4)当宏程序执行M99时,控制返回到调用程序。此时,局部变量级别减1,并恢复宏程序调用时存储的局部变量值。

(8)程序示例 编制一个宏程序加工轮圆上的圆周螺纹孔(图1-8)。圆周上的半径为I,起始角为A,间隔为B,钻孔数为H,圆的中心是(X,Y)。指令可以用绝对值或增量值指定。顺时针方向钻孔时,B应指定负值。

1)调用格式。

G65 P9100 Xx Yy Zz Rr Ff Ii Aa Bb Hh;

X:圆心的X坐标(绝对值或增量值指定)(#24)

Y:圆心的Y坐标(绝对值或增量值指定)(#25)

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 F500 I100.0 A0 B45.0 H5;

M30;

变量的含义:

#3:储存03组的G代码

#5:下个孔的X坐标

#6:下个孔的Y坐标

3)宏程序(被调用的程序)。

O9100;主程序名

#3=#4003;储存03组G代码

G81 Z#26 R#18 F#9 K0;钻孔循环(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;

2.模态代码调用(G66)

一旦发出G66,则指定为模态代码调用,即在指定轴移动的程序段后调用宏程序。G67为取消模态代码调用。

指令格式:G66 Pp L978-7-111-33271-8-Chapter01-53.jpg<自变量表>;

其中:p为要调用的程序号,978-7-111-33271-8-Chapter01-54.jpg为重复的次数(默认值为1),自变量为传递到宏程序的数据。

(1)调用

978-7-111-33271-8-Chapter01-55.jpg

978-7-111-33271-8-Chapter01-56.jpg

图1-9 G81固定循环

1)在G66之后,用地址P指定模态代码调用的程序号。

2)当要求重复时,在地址L后指定从1~9999的重复次数。

3)与非模态代码调用(G65)相同,自变量指定的数据传递到宏程序体中。

(2)取消 指定G67代码后,其后面的程序段不再执行模态宏程序调用。

(3)调用嵌套 调用可以嵌套4级,包括非模态代码调用(G65)和模态代码调用(G66),但不包括子程序调用(M98)。

(4)模态代码调用嵌套 在模态代码调用期间,指定另一个G66代码,可以嵌套模态代码调用。

注意:

1)在G66程序段中,不能调用宏程序。

2)G66必须在自变量之前指定。

3)在只有诸如辅助功能,但无移动指令的程序段中不能调用宏程序。

4)局部变量(自变量)只能在G66程序段中指定。每次执行模态代码调用时,不再设定局部变量。

(5)程序示例 用宏程序编制G81固定循环的操作(图1-9)。加工程序使用模态代码调用,为了简化程序,使用绝对值指定全部的钻孔数据。

固定循环是由下面的基本动作组成的:

第1步:沿X轴和Y轴定位

第2步:快速移动到R点;

第3步:切削进给到Z点;

第4步:快速退回到R点或I点。

1)调用格式。

G65 P9100 Xx Yy Zz Rr Ff L1;

X:孔的X坐标(由绝对值指定)(#24)

Y:孔的Y坐标(由绝对值指定)(#25)

Z:Z点坐标(由绝对值指定)(#26)

R:R点坐标(由绝对值指定)(#18)

F:切削进给速度(#9)

L:重复次数(www.xing528.com)

2)宏程序调用程序。

O0001;

G28 G91 X0 Y0 Z0;

G92 X0 Y0 Z50.0;

G00 G90 X100.0 Y50.0;

G66 P9100 Z-20.0 R5.0 F500;

G90 X20.0 Y20.0;

X50.0;

Y50.0;

X70.0 Y80.0;

G67;

M30;

3)宏程序(被调用的程序)。

O9100;

#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;返回到I点

G00 Z#18;定位在R点

GOTO2;

N1 G00 Z5;定位在I点

N2 G#1 G#3 F#4;恢复模态信息

M99;

3.用G代码调用宏程序

在参数中设置调用宏程序的G代码,方法与非模态代码调用(G65)相同。

978-7-111-33271-8-Chapter01-57.jpg

说明:在参数(No.6050~No.6059)中设置调用宏程序(O9010~O9019)的G代码号(从1~9999),调用用户宏程序的方法与G65相同。例如设置参数,由G81调用宏程序O9010,不用修改加工程序就可以调用由用户宏程序编制的加工循环。

(1)参数号和程序号之间的对应关系

978-7-111-33271-8-Chapter01-58.jpg

(2)重复 与非模态代码调用一样,地址L中指定从1~9999的重复次数。

(3)自变量指定 与非模态代码调用一样,可以使用两种自变量指定类型:自变量指定Ⅰ和自变量指定Ⅱ。根据使用的地址自动决定自变量的指定类型。

(4)使用G代码的宏调用嵌套 在G代码调用的程序中,不能用G代码调用宏程序,这种程序中的G代码被处理为普通G代码。在用M或T代码调用的子程序中,不能用G代码调用宏程序。这种程序中的G代码也处理为普通G代码。

4.用M代码调用宏程序

在参数中设置调用宏程序的M代码,方法与非模态代码调用(G65)相同。

978-7-111-33271-8-Chapter01-59.jpg

说明:在参数(No.6080~No.6089)中设置调用用户宏程序(O9020~O9029)的M代码(从1~99999999)。调用宏程序的方法与G65相同。

(1)参数号与程序号之间的对应关系

978-7-111-33271-8-Chapter01-60.jpg

(2)重复 与非模态代码调用一样,地址L中指定从1~9999的重复次数。

(3)自变量指定 与非模态代码调用一样,可以使用两种自变量指定类型:自变量指定Ⅰ和自变量指定Ⅱ。根据使用的地址自动决定自变量的指定类型。

(4)注意

1)调用宏程序的M代码必须在程序段的开头指定。

2)用G代码调用的宏程序,或用M、T代码调用的子程序中,不能用M代码调用宏程序。这种宏程序或子程序中的M代码被处理为普通M代码。

5.用M代码调用子程序

在参数中设置调用子程序(宏程序)的M代码号,按与子程序调用(M98)相同的方法调用宏程序。

978-7-111-33271-8-Chapter01-61.jpg

说明:在参数(No.6071~No.6079)中设置调用子程序的M代码(从1~99999999),相应的用户宏程序(O9001~O9009)可按与M98同样的方法调用。

(1)参数号与程序号之间的对应关系

978-7-111-33271-8-Chapter01-62.jpg

(2)重复 与非模态代码调用一样,地址L中指定从1~9999的重复次数。

(3)自变量指定 不允许指定自变量。

(4)M代码 在宏程序中调用的M代码被处理为普通M代码。

注意:用G代码调用的宏程序,或用M、T代码调用的子程序中,不能使用M代码调用子程序。这种宏程序或程序中的M代码被处理为普通M代码。

6.用T代码调用子程序

978-7-111-33271-8-Chapter01-63.jpg

通过设定参数,可使用T代码调用子程序(宏程序),每当在加工程序中指定T代码时,即调用宏程序。

设置参数No.6001的5位TCS=1,当在加工程序中指定T代码时,可以调用宏程序O9000。在加工程序中,指定的T代码赋值到公共变量#149。

注意:用G代码调用的宏程序中,或用M、T代码调用的程序中,不能用T代码调用子程序。这种宏程序或程序中的T代码被处理为普通T代码。

7.示例程序

使用M代码调用子程序,实现测量每把刀具的累积使用时间。

(1)条件

1)测量T01~T05各把刀具的累积使用时间。刀号大于T05的刀具不进行测量。

2)下面的变量用于储存刀号和测量的时间。

978-7-111-33271-8-Chapter01-64.jpg

3)当指定M03时,开始计算使用时间;当指定M05时,停止计算。在循环启动灯亮期间,用系统变量#3002测量该时间。进给暂停和单段停止时间,不计算时间,但要计算换刀和交换工作台的时间。

(2)运行检查

1)参数设置:参数No.6071中设置03,参数No.6072中设置05。

2)变量值设置:变量#501~#505中设置0。

3)调用宏程序的程序。

O0001;

T01 M06;

M03;

M05;改变#501

T02 M06;

M03;

M05;改变#502

T03 M06;

M03;

M05;改变#503

T04 M06;

M03;

M05;改变#504

T05 M06;

M03;

M05;改变#505

M30;

4)宏程序(被调用的程序)。

O9001(M03);启动计算的宏程序

M01;

IF[#4120 EQ 0] GOTO9;没有指定刀具

IF[#4120 GT 5] GOTO9;超出刀号范围

#3002=0;计时器清0

N9 M03;正向旋转主轴

M99;

O9002(M05);结束计算的宏程序

M01;

IF[#4120 EQ 0] GOTO9;没有指定刀具

IF[#4120 GT 5] GOTO9;超出刀号范围

#[500+#4120]=#3002+#[500+#4120];计算累积时间

N9 M05;停止主轴

M99;

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈