新代数控车床宏程序说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.用户宏程序的基本概念
用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储
的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功
能。
在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其
代表指令称为用户宏命令,也称作宏程序调用指令。
用户宏有以下四个主要特征:
1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;2)能够进行变量之间的各种运算;
3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参;
4)容易实现程序流程的控制。
使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编
一个程序。
二.基本书写格式
数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法
处理。如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式
处理,此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时
标题行一般可以省略,直接书写数控程序。“@MACRO”关键词必须是大写字母。
对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。
例一:MACRO格式文档
%@MACRO//用户宏程序文档,必须包含“@MACRO”关键词
IF@1=1THEN
G00X100.;
ELSE
G00Z100.;
END_IF;
M99;
例二:ISO格式文档
%这是标题行,可当作档案用途说明,此行可有可无
G00X100.;
G00Z100.;
G00X0;
页1第
G00Z0;
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、未定义变量
尚未被定义的变量,被称为空(V ACANT)。
变量#0,@0始终为空,经常被用作空变量使用。
3.变量赋值和引数赋值
变量赋值:用户宏程序中变量赋值使用赋值运算符“:=”,不可仅用“=”符号。因为在本系统中符号“=”是被规定为关系运算符,用来比较是否相等的。
例如#30:=100,会将变量#30赋值为整数100;而#30=100,将不能为变量#30赋值,实际上是比较变量#30是否与整数100相等。
页3第
四.变量运算及变量表达式
1.用户宏运算符
要对变量进行各种运算操作就要用到运算符,它是“能对变量所存数据进行运算的符号”。本系统的运算符及其优先级如表3-2所示。
表3-2运算符及其优先级
运算符优先
括
函数调用运函数>(参数列
取
求补运NO
乘法运
除法运
求余运模运MO
加法运
减法运
关系运><
相等运
不等运<
AN布尔逻按位
异或按位/布尔逻辑10XOR
或按位/布尔逻辑11OR
2、基本算数运算符
(1)+(加法运算符,如3+5,#12+4)
(2)-(减法运算符,或取负运算符,如#33-16,-#16)
(3)*(乘法运算符,如9*2,#13*8)
(4)/(除法运算符,如10/3,#43/15)
(5)MOD(模运算符,或称求余运算符,其两侧均应为整型数据,如7MOD4的值为3,当#18=20时#18MOD4的值为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、关系运算符的优先级低于算术运算符。