新代数控车宏程序说明

sw

一.用户宏程序的基本概念

用一组指令构成某功能,并且像子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。

在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。

用户宏有以下四个主要特征:

1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;

2)能够进行变量之间的各种运算;

3)可以用用户宏指令对变量进行赋值,就像许多高级语言中的带参函数或过程,实参能赋值给形参;

4)容易实现程序流程的控制。

使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量即可,而不需要对每个不同的零件都编一个程序。

二.基本书写格式

数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。“@MACRO”关键词必须是大写字母。

对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。

例一:MACRO格式文档

%@MACRO//用户宏程序文档,必须包含“@MACRO”关键词

IF@1=1THEN

G00X100.;

ELSE

G00Z100.;

_IF;

M99;

例二:ISO格式文档

%这是标题行,可当作档案用途说明,此行可有可无

G00X100.;

G00Z100.;

G00X0;

G00Z0;

M99;
三.用户宏程序的编写

如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏程序时进行赋值的符号#i(i=1,2,3,…)。使用变量可以使用户宏程序具有通用性。用户宏程序中可以使用多个变量,以变量编号进行识别。

1、变量的形式

变量是用符号#或@后面加上变量编号所构成的,即:

#i(i=1,2,3,…)

例如:#5

#109

#1005

也可用#[<表达式>]的形式来表示。

例如:#[1001-1]

#[33,则当#33=1.5时,与相同。

若写成Z-27、N30:=100,会将变量30=100,将不能为变量30是否与整数100相等。

四.变量运算及变量表达式

1.用户宏运算符

要对变量进行各种运算操作就要用到运算符,它是“能对变量所存数据进行运算的符号”。本系统的运算符及其优先级如表3-2所示。

表3-2运算符及其优先级

2、基本算数运算符

(1)+(加法运算符,如3+5,33-16,-13*8)

(4)/(除法运算符,如10/3,18=20时6*8/18+ROUND(#1)

这就是一个算术运算式,它可以作为一个整体赋值给某个变量,或用作其他表达式中的一个运算对象。

本系统按表表3-2规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式41*5的左侧为减,右侧为乘号,而乘号优先于减号,因此,相当于41*5)。

如果在一个运算对象两侧的运算符的优先级别相同,如23,则按规定的结合性(结合方向)处理,算术运算符的结合方向为“自左至右”,即先左后右。因此5先与减号结合,执行23的运算。这样“自左至右的结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也有“右结合性”的运算符,例如赋值运算符“:=”就是。

4、关系运算符和关系表达式

关系运算符是逻辑运算中比较简单的一种。所谓“关系运算”实际上就是“比较运算”。将两个值进行比较,判断比较的结果是否符合给定的条件。

例如,3=12,则满足给定的“3=6,不满足“6>36,23

关系表达式的值是一个逻辑值,即“真”或“假”。例如,若12=10”的值为“假”,“1AND1、1AND1OR1、1XOR1:=3.0;

G01X20.Z15.F200;

IF1=2THEN;X(1.0*2);Z(1.0*2);

ELSEIF10:=30.;

12:=13:=14:=2.0;

12Z12+13+12+13-12-13-12-13+12+13+14:=15:=141510:=20.;

12:=13:=14:=2.0;

12Z14=15=12+13+12+13-12-13-146.0THEN

EXIT;

_IF;

X(14)Z(15);

X(14)Z(15);

14+2.0;

15+1.5;

_WHILE;

X(-5.0)Z(5.0);

M02;

4.FOR循环

语法:

FOR循环变量:=表达式1TO表达式2[BY表达式3]DO

循环体

_FOR;

说明:FOR循环控制,式中各参数意义如下

循环变量——控制循环次数的变量;

表达式1——循环计数的起始值,可为整数或表达式;

表达式2——循环计数的终止值,可为整数或表达式;

表达式3——循环计数每次的累加值,可为整数或表达式;

循环体——循环每次执行内容;

FOR循环执行过程为:先给循环变量赋起始值,然后判断循环变量是否为终止值,当循环变量已为终止值时退出循环,否则执行循环体,再对循环变量加上每次累加值,

5、无条件转移

GOTO转移语句

语法:

GOTOn;

说明:无条件地跳到指定的n行号执行,其中n可为整数或表达式。GOTO常和IF语句搭配使用,那就是说当程序检查到某个条件满足时用GOTO语句去进一步处理,但应尽量少用该语句以提高程序可读性。

范例:

%@MACRO//启动MACRO语法

IF(1:=ABS(-2.3);//1:=SIN(1:=ASIN(1:=MAX(10,20);//1:=MAX(3);

5、SQRT

调用方法:SQRT(参数)

函数描述:求一个数的平方根值

范例1:

2等于1.732

范例2:

10);

6、SIGN

调用方法:SIGN(参数)

函数描述:返回一个数的符号,-1表示该数是负数,1表示该数是正数,0表示该数是零。

范例:

IF(SIGN(2:=CEIL(2.3);//2:=CEIL(2:=ROUND(2.3);//2:=ROUND(1~2001~3001~4001~5001~#5100)。

5.请不要使用全局变量(GlobalVariables,@1~@999),因为G码执行时,使用者的数据是由自变量(A_,B_…,Z_)传入,由公共变量传递不符合使用习惯。

6.系统在执行加工时对于MACRO程序会事先预编译,因此MACRO执行速度会超前于G、M代码指令,因此当要求变量赋值或数据读取须与G、M代码指令发出的时间进程相同时,请于变量赋值或数据读取前加WAIT()指令,否则该变量赋值或该数据读取将无法与G、M代码同步。

7.不可改变模式G码(
G00/G01/G02/G03/G33/G34/G35,G91/G90,G40/G41/G42,…,)的状态,如果用户宏程序中需要改变其状态时,就需要模态信息的回复,

8.对于长度或角度的自变量在运算前请使用STD()函数将单位标准化,以符合工具机使用习惯。

9.不可以改变坐标系统设定,G92/G54/G52等与坐标系统相关指令不能使用,否则图形仿真功能将失去参考意义。

10.请在程序中加上必要的注释,养成良好的编程习惯,以增加程序可读性和可维护性,以帮助后续开发人员维护和排除问题。

附录Ⅳ运算符及其优先级

文章版权声明:除非注明,否则均为机床资讯库原创文章,转载或复制请以超链接形式并注明出处。

上一个 马之36问:天马,舞马,三花马,马踏飞燕,马政|新知

下一个 华尔街大佬普通认同的“超级短线划线法”,真的是好用、实用!