新代数控车床宏程序说明.docx
《新代数控车床宏程序说明.docx》由会员分享,可在线阅读,更多相关《新代数控车床宏程序说明.docx(19页珍藏版)》请在冰豆网上搜索。
![新代数控车床宏程序说明.docx](https://file1.bdocx.com/fileroot1/2022-10/9/4f56f148-3195-478b-898d-681aead7e71e/4f56f148-3195-478b-898d-681aead7e71e1.gif)
新代数控车床宏程序说明
一.用户宏程序的基本概念
用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储
的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功
能。
在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。
其
代表指令称为用户宏命令,也称作宏程序调用指令。
用户宏有以下四个主要特征:
1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;
2)能够进行变量之间的各种运算;
3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过
程,实参能赋值给形参;
4)容易实现程序流程的控制。
使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工
同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编
一个程序。
二. 基本书写格式
数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。
当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的 MACRO 语法
处理。
如果该行无“@MACRO”关键词此档案就会被视为一般 ISO 程序文档格式
处理,此时将不能编写用户宏和使用其 MACRO 语法。
而当书写 ISO 程序文档时
标题行一般可以省略,直接书写数控程序。
“@MACRO”关键词必须是大写字母。
对于程序的注释可以采用“//……”的形式,这和高级语言 C++一样。
例一:
MACRO 格式文档
% @MACRO//用户宏程序文档,必须包含“@MACRO”关键词
IF @1 = 1 THEN
G00 X100.;
ELSE
G00 Z100.;
END_IF;
M99;
例二:
ISO 格式文档
% 这是标题行,可当作档案用途说明,此行可有可无
G00 X100.;
G00 Z100.;
G00 X0;
第 1 页
G00 Z0;
M99;
三. 用户宏程序的编写
如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏
程序时进行赋值的符号#i (i=1,2,3,…)。
使用变量可以使用户宏程序具有通用
性。
用户宏程序中可以使用多个变量,以变量编号进行识别。
1、变量的形式
变量是用符号#或@后面加上变量编号所构成的,即:
#i(i=1,2,3,…)
例如:
#5
#109
#1005
也可用#[<表达式>]的形式来表示。
例如:
#[#100]
#[#1001-1]
#[#6/2]
其实,通过用符号@后面加上变量编号也可构成的变量,即:
@ i(i=1,2,3,…)
例如:
@5
@ [@5]
但一般地,由符号@后面加上变量编号构成的变量称为全局变量,不提倡在用
户宏程序中使用,具体见后面的介绍。
2、变量的引用
在地址符后的数值可以用变量置换。
例如:
若写成 F#33,则当#33=1.5 时,与 F1.5 相同。
若写成 Z-#18,则当#18=20.0 时,与 Z-20.0 相同。
但需要注意,作为地址符的 O、N、/等,不能引用变量。
例如,O#27、N#1 等,都是错误的。
3、未定义变量
尚未被定义的变量,被称为空(VACANT)。
变量#0,@0 始终为空,经常被用作空变量使用。
3.变量赋值和引数赋值
变量赋值:
用户宏程序中变量赋值使用赋值运算符“:
=”,不可仅用“=”符
号。
因为在本系统中符号“=” 是被规定为关系运算符,用来比较是否相等的。
例如#30:
=100,会将变量#30 赋值为整数 100;而#30=100,将不能为变量#30
赋值,实际上是比较变量#30 是否与整数 100 相等。
第 3 页
运算名
符号
优先级
括号
( ),[ ]
1
函数调用运算
<函数名>(<参数列表> )
2
取负
-
3
求补运算
NOT
3
乘法运算
*
4
除法运算
/
4
模运算/求余运算
MOD
4
加法运算
+
5
减法运算
-
5
关系运算
<,>,<=,>=
6
相等运算
=
7
不等运算
<>
8
布尔逻辑/按位与
&,AND
9
布尔逻辑/按位 异或
XOR
10
布尔逻辑/按位 或
OR
11
四.变量运算及变量表达式
1.用户宏运算符
要对变量进行各种运算操作就要用到运算符,它是“能对变量所存数据进行运
算的符号”。
本系统的运算符及其优先级如表 3-2 所示。
表 3-2 运算符及其优先级
2、基本算数运算符
(1) +(加法运算符,如 3+5,#12+4)
(2) -(减法运算符,或取负运算符,如#33-16,-#16)
(3) *(乘法运算符,如 9*2,#13*8)
(4) /(除法运算符,如 10/3,#43/15)
(5)MOD (模运算符,或称求余运算符,其两侧均应为整型数据,如 7 MOD4
的值为 3,当#18=20 时#18 MOD4 的值为 2)
3、算术表达式和运算符优先级
用算术运算符和括号将运算对象连接起来的、符合语法规则的式子称为算术表
达式,运算对象可以是常数、变量、函数等。
例如:
#6*8/#32-1.5+#18+ ROUND(#1)
这就是一个算术运算式,它可以作为一个整体赋值给某个变量,或用作其他表
达式中的一个运算对象。
本系统按表表 3-2 规定了运算符的优先级和结合性。
在表达式求值时,先按运
算符的优先级别高低次序执行,例如先乘除后加减。
如表达式#12-#41*5 的左侧为
减,右侧为乘号,而乘号优先于减号,因此,相当于#12-(#41*5)。
如果在一个运算对象两侧的运算符的优先级别相同,如#2-5+#23,则按规定的
结合性(结合方向)处理,算术运算符的结合方向为“自左至右”,即先左后右。
因此 5 先与减号结合,执行#2-5 的运算,再执行加#23 的运算。
这样“自左至右的
结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也
有“右结合性”的运算符,例如赋值运算符“:
=”就是。
4、关系运算符和关系表达式
关系运算符是逻辑运算中比较简单的一种。
所谓“关系运算”实际上就是“比
较运算”。
将两个值进行比较,判断比较的结果是否符合给定的条件。
例如,#3>10 是一个关系表达式,大于号(>)是一个关系运算符,如果
#3=12,则满足给定的“#3>10”条件,因此关系表达式的值为“真”(即“条件满
足”);如果#3=6,不满足“#3>10”条件,则称关系表达式的值为“假”。
本系统提供 6 种关系运算符:
(1) <(小于)
(2) <=(小于或等于)
(3) >(大于)
(4) >=(大于或等于)
(5) =(等于)
(6) <>(不等于)
优先级相同(高)
优先级(较高)
优先级(低)
关于优先次序:
1、前 4 种关系运算符(<,<=,>,>=)的优先级别相同,它们却高于关
系运算符“=”,而“=”又高于“<>”
2、关系运算符的优先级低于算术运算符。
3、关系运算符的优先级高于赋值运算符。
用两个关系运算符将两个表达式连接起来的式子,称为关系表达式。
例如:
#6>36,#13+4<>#23
关系表达式的值是一个逻辑值,即“真”或“假”。
例如,若#12 为 8,则关
系表达式“#12=10”的值为“假”,“#12>=6”的值为“真”。
5、逻辑运算和逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。
本系统提供 6 种逻辑运算符和逻辑运算
(1) &,AND逻辑与
(2) XOR逻辑或
(3) OR逻辑异或
它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算
举例如下:
#1 AND #2若#1 、#2 为真,则#1 AND #2 为真。
#1 OR #2若#1 、 #2 之一为真,则#1 XOR #2 为真。
逻辑运算符低于关系运算符,见图 3-1。
算术运算符
关系运算符
逻辑运算符
赋值运算符
图 3-1
(高)
(低)
五. 用户宏程序的流程控制
所谓程序的流程(Flow Control)是通过控制程序的执行方向,进而掌握程序
动态。
这用户宏程序区别于一般数控程序的特征之一,也是用户选择用户宏程序编
写数控代码的一大理由。
用户宏程序的流程控制包括无条件判断、循环控制、无条
件转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。
1、条件判断
判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方
面的语句有 IF 和 CASE 语句。
1、IF 条件语句
1)基本语法:
IF <条件表达式> THEN→<操作>→ELSEIF <条件表达式> THEN→<操作>
→ELSE→<操作>→END_IF;
说明:
IF 条件判断,根据真假情况到指定的地方去执行程序。
例如:
% @MACRO// 启动 MACRO 语法
#1 :
= 3.0;
G01X20. Z15. F200;
IF #1 = 1 THEN;X(1.0*1);Z(1.0*1);
ELSEIF #1 = 2 THEN;X(1.0*2);Z(1.0*2);
ELSEIF #1 = 3 THEN;X(1.0*3);Z(1.0*3);
ELSE;X(1.0*4);Z(1.0*4);
END_IF;X(1.0)Z(1.0);
M30;
然而在实际使用中,可以有以下一些变形:
2)变形 1
语法:
IF <条件表达式> THEN→<操作>→ELSE→<操作>→END_IF;
3)变形 2
语法:
IF <条件表达式> THEN→<操作>→END_IF;
编程时可根据需要选择合适的语法格式。
2、循环控制
1、REPEAT 直到型循环
语法:
REPEAT
<循环体>
UNTIL <条件表达式> END_REPEAT;
说明:
REPEAT 直到型循环控制,先执行循环体,后判断条件表达式,当条件
满足时退出循环。
例如:
% @MACRO// 启动 MACRO 语法
#10 :
= 30.;
#11 :
= 22.5.;
#12 :
= #10/2;
#13 :
= #11/2;
#14 :
= 2.0;
#15 :
= 1.5;
G01 X#12 Z#13 F200.0;
REPEAT
G00 X(#12+#14) Z(#13+#15);
G01 X(#12+#14) Z(#13-#15);
X(#12-#14) Z(#13-#15);
X(#12-#14) Z(#13+#15);
X(#12+#14) Z(#13+#15);
#14 :
= #14 + 2.0;
#15 :
= #15 + 1.5;
UNTIL (#14 > #12) OR (#15 > #13) END_REPEAT;
X(1.0) Z(1.0);
M30;
3.WHILE 当型循环
语法:
WHILE <条件表达式> DO→<循环体>→END_WHILE;
说明:
WHILE 当型循环控制,先判断条件表达式,当条件满足时执行循环体,
否则退出循环。
例如:
% @MACRO;
#10 :
= 20.;
#11 :
= 15.;
#12 :
= #10/2;
#13 :
= #11/2;
#14 :
= 2.0;
#15 :
= 1.5;
G01 X#12 Z#13 F200.0;
WHILE (#14 <= #12) AND (#15 <= #13) DO
G00 X(#12+