首页 理论教育 B类宏程序:优化编程功能,实现简单调用和重复操作

B类宏程序:优化编程功能,实现简单调用和重复操作

时间:2023-06-17 理论教育 版权反馈
【摘要】:使用子程序编程可以重复同样的操作,简化程序的书写工作,但是B类宏程序提供了更丰富的编程功能。例如:G00 X#1;其中#1值为12.3456,若CNC最小输入增量为1/1000mm,则实际命令为G00 X12.346。简单调用功能:G65被指定时,地址P所指定的宏程序被调用,数据(自变量)能传递到宏程序中。自变量使用的类别根据使用的字母自动确定。

B类宏程序:优化编程功能,实现简单调用和重复操作

使用子程序编程可以重复同样的操作,简化程序的书写工作,但是B类宏程序提供了更丰富的编程功能。它允许使用变量、算术和逻辑操作及条件分支,使用户可以自行编辑软件包、固定循环程序。

1.变量

(1)变量概述 一个普通的零件加工程序指定G码是直接用数字值表示移动的距离,例如:G100 X100.0。而利用宏程序,就既可以直接使用数字值,也可以使用变量号来表示。当使用变量号时,变量值既可以由程序改变,也可以用MDI面板改变。例如:

#1=#2+100;

G01 X#1 F300;

变量书写规格:当指定一个变量时,在“#”后指定变量号。个人计算机允许赋名给变量,宏则没有此功能。例如:#1。

也可以用表达式指定变量号,这时表达式要用方括号括起来。例如:#[#1+#2-12]。

变量值的范围:地方变量和公共变量可以有值0和在下述范围内的值:-1047~-10-19;10-29~1047,如果计算结果无效,则发出111号报警。

忽略小数点:在程序中定义变量时,可以忽略小数点。例如:当“#1=123”被定义时,变量“#1”的实际值为123.000。

未定义的变量:当变量的值未定义时,这样的一个变量被看做是“空”变量,变量“#0”总是“空”变量,是一个只读变量。

变量的类型:根据变量号将变量分为四类,如表2-10所示。

表2-10 变量的类型

978-7-111-33622-8-Chapter02-37.jpg

引用变量:为了在程序中引用变量,指定一个字地址其后跟一个变量号。当用表达式指定一个变量时,需用方括号括起来。例如:G01 X[#1+#2]F#3。

引用的变量值根据地址的最小输入增量自动进行四舍五入。例如:G00 X#1;其中#1值为12.3456,若CNC最小输入增量为1/1000mm,则实际命令为G00 X12.346。

为了将引用的变量值的符号取反,在#号前加“-”号;当引用一个未定义的变量时,则忽略变量及引用变量的地址,例如:#1=0,#2=“空”,则G00 X#1 Y#2;的执行结果是G00 X0。

注意:程序号、顺序号、任选段跳跃号不能使用变量。

(2)系统变量 系统变量能用来读写内部NC数据,如刀具补偿值和当前位置数据。然而要注意的是,有些系统变量是只读变量。对于扩展自动化操作和一般的程序,系统变量是必需的,本书不作详细介绍。

2.算术和逻辑操作

常用的运算指令如表2-11所示,其中操作符右边的表达式,可以含有常数和(或)由一个功能块或操作符组成的变量。表达式中的变量#j和#k可以用常数替换。左边的变量也可以用表达式替换。

表2-11 常用的运算指令

978-7-111-33622-8-Chapter02-38.jpg

运算指令使用事项如下:

1)角单位:在SIN、COS、TAN、ATAN中所用的角度单位是(°)。

在ATAN之后的两个变量用“/”分开,结果在0°和360°之间。

2)ROUND功 能:当ROUND功能包含在算术或逻辑操作、IF语句、WHILE语句中时,将保留小数点后一位,其余位进行四舍五入。

当ROUND出现在NC语句地址中时,进位功能根据地址的最小输入增量四舍五入指定的值。

3)算术和逻辑操作的缩写方式:取功能块名的前两个字符,例如:ROUND RO。

4)方括号嵌套:方括号用于改变操作的顺序。最多可用5层,超出5层,则出现118号报警。

注意:方括号用于封闭表达式,圆括号用于注释。

5)除数:如果除数是零或TAN[90],则会产生112号报警。

3.分支和循环语句

在一个程序中,控制流程可以用GOTO、IF语句改变。有三种分支循环语句:

——GOTO语句(无条件分支);

——IF语句(条件分支:if...,then...);

——WHILE语句(循环语句while...)。

(1)无条件分支(GOTO语句)

功能:转向程序的第N句。当指定的顺序号大于1~9999时,则出现128号报警,顺序号可以用表达式。

格式:GOTO n;

n是顺序号(1~9999)。

(2)条件分支(IF语句)

功能:在IF后面指定一个条件表达式,如果条件满足,转向第N句;否则执行下一段。

格式:IF[条件表达式]GOTO n;

在条件表达式中,一个条件表达式一定要有一个操作符,这个操作符插在两个变量或一个变量和一个常数之间,并且要用方括号括起来,即[表达式 操作符表达式]。

操作符如表2-12所示。

表2-12 操作符

978-7-111-33622-8-Chapter02-39.jpg

(3)循环(WHILE语句)

功能:在WHILE后指定一个条件表达式,条件满足时,执行DO到END之间的语句;否则执行END后的语句。

格式:WHILE[条件表达式]DO m;

END m;

m只能在1、2、3中取值,否则出现126号报警。(www.xing528.com)

这三类语句在编程时有以下注意事项:

1)无限循环:指定了DO m而没有WHILE语句,循环将在DO和END之间无限期执行下去。

2)执行时间:程序执行GOTO分支语句时,要进行顺序号的搜索,所以反向执行的时间比正向执行的时间长。可以用WHILE语句减少处理时间。

3)未定义的变量:在使用EQ或NE的条件表达式中,空值和零的使用结果不同。而含其他操作符的条件表达式将空值看做零。

4.宏调用

可以用下列方式调用宏程序:

——简单调用(G65);

——模调用(G66、G67);

——G码宏调用;

——M码宏调用;

——G码子程序调用;

——M码子程序调用。

(1)简单调用(G65)

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

格式:G65 Pp Ll<自变量表>

其中:

——p为要调用的程序号。

——L为重复的次数(默认值为1,取值范围为1~9999)。

——自变量为传递给宏的数。通过使用自变量表,值被分配给相应的地方变量。

自变量分为两类:第一类可以使用除G、L、O、N、P之外的字母,但只能使用一次,如表2-13所示;第二类可以使用A、B、C(一次),也可以使用I、J、K(最多十次),如表2-14所示。自变量使用的类别根据使用的字母自动确定。

表2-13 变量(第一类)

978-7-111-33622-8-Chapter02-40.jpg

地址G、L、N、O、P不能当作自变量使用。不需要的地址可以省略,与省略的地址相对应的地方变量被置成空。

表2-14 变量(第二类)

978-7-111-33622-8-Chapter02-41.jpg

在实际的程序中,I、J、K的下标不用写出来。

使用该调用方式时的注意事项:

1)在自变量之前一定要指定G65。

2)如果将两类自变量混合使用,NC自动辨别类别,且最后指定的那一类优先。

3)传递的不带小数点的自变量的单位与每个地址的最小输入增量一致,其值与机床的系统结构非常一致。为了程序的兼容性,建议使用带小数点的自变量。

4)最多可以嵌套含有简单调用(G65)和模调用(G66)的程序4级,不包括子程序调用(M98)。地方变量可以嵌套0~4级。主程序的级数是0。用G65和G66每调用一次宏,地方变量的级数增加一次。上一级地方变量的值保存在NC中。宏程序执行到M99时,控制返回到调用的程序。这时地方变量的级数减1,恢复宏调用时存储的地方变量值。

(2)模调用(G66、G67)

功能:一旦指定了G66,那么在以后的含有轴移动命令的段执行之后,地址P所指定的宏被调用,直到发出G67命令,该方式才被取消。

格式:G66 Pp Ll<自变量表>

其中:

——p为要调用的程序号。

——l为重复的次数(默认值为1,取值范围为1~9999)。

——自变量为传递给宏的数。与G65调用一样,通过使用自变量表,值被分配给相应的地方变量。

使用该调用方式时的注意事项:

1)最多可以嵌套含有简单调用(G65)和模调用(G66)的程序4级,不包括子程序调用(M98)。模调用期间可重复嵌套G66。

2)在G66段,不能调用宏。

3)在自变量前一定要指定G66。

4)在含有像M码这样与轴移动无关的段中不能调用宏。

5)地方变量(自变量)只能在G66段设定,每次模调用执行时不能设定。

(3)宏调用和子程序调用之间的区别

1)用G65可以指定一个自变量(传递给宏的数据),而M98没有这个功能。

2)当M98段含有另一个NC语句(如:G01 X100.0M98Pp)时,则执行命令之后调用子程序;而G65是无条件调用一个宏。

3)当M98段含有另一个NC语句(如:G01 X100.0M98Pp)时,在单段方式下机床停止,而使用G65时机床不停止。

4)用G65时地方变量的级要改变,用M98的则不改变。

[1]一种使用阴极射线管显示器

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

我要反馈