新代数控车床宏程序说明

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

用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序) ,简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。

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

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; 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相等。

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

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)

(大于)

(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;

G01 X20. 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 THE N →→ELSE →→END_IF;

3)变形2

语法:

IF THEN →→END_IF; 编程时可根据需要选择合适的语法格式。

2、循环控制

1、REPEAT 直到型循环

语法:

REPEAT

UNTIL END_REPEAT;

说明:REPEAT 直到型循环控制,先执行循环体,后判断条件表达式,当条件满足时退出循环。 例如:

% @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;

// 启动MACRO 语法

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

IF #14 > 6.0 THEN

EXIT; END_IF;

X(#12-#14) Z(#13+#15); X(#12+#14) Z(#13+#15); #14 := #14 + 2.0; #15 := #15 + 1.5; END_WHILE; X(-5.0) Z(5.0); M02;

4. FOR 循环

语法:

FOR := TO [ BY ] DO

END_FOR;

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

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

表达式1——循环计数的起始值,可为整数或表达式; 表达式2——循环计数的终止值,可为整数或表达式; 表达式3——循环计数每次的累加值,可为整数或表达式; 循环体 ——循环每次执行内容;

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

5、无条件转移

GOTO 转移语句 语法:

GOTO n;

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

IF( #1 = 2 ) THEN GOTO 100;

G01 X10. Z10.; …

N100 G01 X30. Z30.;

… M02;

EXIT 循环中断语句 语法:EXIT;

说明:循环中断,跳离循环控制;用在循环控制中,通常EXIT 都和IF 语句搭配使用,当某个条件满足后就跳离循环。

请参考WHILE 范例。

六. 库函数

1、ABS

调用方法:ABS()

函数描述:求一个数的绝对值 范例:

#1 := ABS(-2.3); // #1 的结果是 2.3

[注]:此处函数内“参数”既可为实际数值,也可为变量或表达式,以下若无特殊说明均按此处理。

2、SIN

调用方法:SIN ()

函数描述:求一个数的正弦值 范例:

#1 := SIN(#10); 3、ASIN

调用方法:ASIN ()

函数描述:求一个数的反正弦值

范例:

#1 := ASIN(#10); 4、MAX

调用方法:MAX() 函数描述:求两个数的最大值 范例1:

#1 := MAX(10,20); // #1等于20 范例2:

#1 := MAX(#2,#3); 5、SQRT

调用方法:SQRT ()

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

#2 := SQRT(3); // #2 等于 1.732 范例2:

#16 := SQRT(#10); 6、SIGN

调用方法:SIGN ()

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

IF( SIGN(#10) > 0 ) THEN „

END_IF; 5、 CEIL

调用方法:CEIL()

函数描述:返回比一个数大或与其相等的最小整数 范例1:

#2 := CEIL(2.3); // #2 等于 3 范例2:

#2 := CEIL(#10); 7、ROUND

调用方法:ROUND () 函数描述:四舍五入化整, 范例1:

#2 := ROUND(2.3); // #2 等于 2 范例2:

#2 := ROUND(#10);

七.用户宏程序编写注意事项

1. 用户宏文档第一行必须为%@MACRO;程序段的每一行结束需加“; ”结束

符;对于用户宏子程序最后需加“M99;”,以便能返回到主程序。 2. 变量赋值使用“:=”符号,不可仅用“=”符号。 3. 文档名储存需依照下列规则。

例如:编写G100之MACRO ,需将该MACRO 程序存在C:\CNC\MACRO目录底下,且文件名需为G0100,不需扩展名。

而编写G100.1之MACRO ,需将该MACRO 程序存在C:\CNC\MACRO目录底下,且文件名需为G100001,不需扩展名。 4. 请多使用局部变量(#1~#50), 模态变量(#2001~#2100,#3001~#3100)为所有扩充G 码的共享资源,请仅用于多个扩充G 码间的数据交换,以节省共享资

源;如果需要系统定义的初始值,请使用用户参数( #4001~#4100,#5001~ #5100 )。

5. 请不要使用全局变量(Global Variables,@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. 请在程序中加上必要的注释,养成良好的编程习惯,以增加程序可读性和可

维护性,以帮助后续开发人员维护和排除问题。

第 11 页

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

用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序) ,简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。

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

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; 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相等。

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

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)

(大于)

(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;

G01 X20. 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 THE N →→ELSE →→END_IF;

3)变形2

语法:

IF THEN →→END_IF; 编程时可根据需要选择合适的语法格式。

2、循环控制

1、REPEAT 直到型循环

语法:

REPEAT

UNTIL END_REPEAT;

说明:REPEAT 直到型循环控制,先执行循环体,后判断条件表达式,当条件满足时退出循环。 例如:

% @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;

// 启动MACRO 语法

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

IF #14 > 6.0 THEN

EXIT; END_IF;

X(#12-#14) Z(#13+#15); X(#12+#14) Z(#13+#15); #14 := #14 + 2.0; #15 := #15 + 1.5; END_WHILE; X(-5.0) Z(5.0); M02;

4. FOR 循环

语法:

FOR := TO [ BY ] DO

END_FOR;

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

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

表达式1——循环计数的起始值,可为整数或表达式; 表达式2——循环计数的终止值,可为整数或表达式; 表达式3——循环计数每次的累加值,可为整数或表达式; 循环体 ——循环每次执行内容;

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

5、无条件转移

GOTO 转移语句 语法:

GOTO n;

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

IF( #1 = 2 ) THEN GOTO 100;

G01 X10. Z10.; …

N100 G01 X30. Z30.;

… M02;

EXIT 循环中断语句 语法:EXIT;

说明:循环中断,跳离循环控制;用在循环控制中,通常EXIT 都和IF 语句搭配使用,当某个条件满足后就跳离循环。

请参考WHILE 范例。

六. 库函数

1、ABS

调用方法:ABS()

函数描述:求一个数的绝对值 范例:

#1 := ABS(-2.3); // #1 的结果是 2.3

[注]:此处函数内“参数”既可为实际数值,也可为变量或表达式,以下若无特殊说明均按此处理。

2、SIN

调用方法:SIN ()

函数描述:求一个数的正弦值 范例:

#1 := SIN(#10); 3、ASIN

调用方法:ASIN ()

函数描述:求一个数的反正弦值

范例:

#1 := ASIN(#10); 4、MAX

调用方法:MAX() 函数描述:求两个数的最大值 范例1:

#1 := MAX(10,20); // #1等于20 范例2:

#1 := MAX(#2,#3); 5、SQRT

调用方法:SQRT ()

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

#2 := SQRT(3); // #2 等于 1.732 范例2:

#16 := SQRT(#10); 6、SIGN

调用方法:SIGN ()

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

IF( SIGN(#10) > 0 ) THEN „

END_IF; 5、 CEIL

调用方法:CEIL()

函数描述:返回比一个数大或与其相等的最小整数 范例1:

#2 := CEIL(2.3); // #2 等于 3 范例2:

#2 := CEIL(#10); 7、ROUND

调用方法:ROUND () 函数描述:四舍五入化整, 范例1:

#2 := ROUND(2.3); // #2 等于 2 范例2:

#2 := ROUND(#10);

七.用户宏程序编写注意事项

1. 用户宏文档第一行必须为%@MACRO;程序段的每一行结束需加“; ”结束

符;对于用户宏子程序最后需加“M99;”,以便能返回到主程序。 2. 变量赋值使用“:=”符号,不可仅用“=”符号。 3. 文档名储存需依照下列规则。

例如:编写G100之MACRO ,需将该MACRO 程序存在C:\CNC\MACRO目录底下,且文件名需为G0100,不需扩展名。

而编写G100.1之MACRO ,需将该MACRO 程序存在C:\CNC\MACRO目录底下,且文件名需为G100001,不需扩展名。 4. 请多使用局部变量(#1~#50), 模态变量(#2001~#2100,#3001~#3100)为所有扩充G 码的共享资源,请仅用于多个扩充G 码间的数据交换,以节省共享资

源;如果需要系统定义的初始值,请使用用户参数( #4001~#4100,#5001~ #5100 )。

5. 请不要使用全局变量(Global Variables,@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. 请在程序中加上必要的注释,养成良好的编程习惯,以增加程序可读性和可

维护性,以帮助后续开发人员维护和排除问题。

第 11 页


相关文章

  • 法兰克数控车床常用G指令编写
  • 法兰克数控车床常用G 指令编写 数控编辑G 代码是数控编程人员在生产加工过程中当用到的指令代码,期格式都有严格的规范约束,数控G 代码也是机床实现正常工作的核心,牢记并熟练运用数控G 代码是一个合格的数控编程人员所必须掌握的一门技能. 下面 ...查看


  • CNC加工中心编程与操作设计
  • 设计任务书 设计题目: 加工中心铣削编程与设计 设计要求: 1.设计安全要求 由教师和实验室指导教师组织学生进行毕业设计动员和安全教育.要求学生在毕业设计时要做到以下几点: (1)进行编程操作前,应熟悉加工中心的操作说明书,并严格按照操作规 ...查看


  • -端盖零件的数控铣床铣削编程与加工
  • 毕业设计(论文) 题 目: 院 (系) :专 业:姓 名:学 号:指导教师: 端盖零件的数控铣床铣削 编程与加工 机电工程学院 二〇一三年月日 毕业设计(论文)任务书 毕业设计(论文) 进度计划表 毕业设计(论文) 中期检查记录表 摘 要 ...查看


  • 项目一_数控编程基础知识
  • 数控车床编程与技能训练 教学课题: 课题一 数控编程基础知识 知识目标: [1] 了解数控车床的编程概念和掌握数控编程的基本步骤: [2] 掌握数控机床坐标系的设定: [3] 掌握数控程序的结构与格式: 技能目标: [1] 掌握程序编制的过 ...查看


  • 数控车床的控制与维修
  • 摘 要 1952年,计算机技术应用到了机床上,在美国诞生了第一台数控机床.从此,传统机床产生了质的变化.近半个世纪以来,数控系统经历了两个阶段和六代的发展.数控技术的应用不但给传统制造业带来了革命性的变化,使制造业成为工业化的象征,而且随着 ...查看


  • 基于PLC的数控车床电气控制系统设计
  • 基于PLC 的数控车床电气控制系统设计 课题: 毕业设计报告 基于PLC 的数控车床电气控制系统设计 系 部:电气工程系 专 业:机电一体化技术 班 级:机电112 姓 名:范宇 学 号:1102043210 指导老师:王志伟 2014.5 ...查看


  • 数控毕业设计题目
  • 09级数控技术专业毕业设计课题 课题一:车削零件的数控加工工艺编制 指导老师:胡安渠 一.设计条件: 1.零件图如图所示: 2.技术要求如下: (1).以中批量生产条件编程. (2).不准用砂布及锉刀等修饰表面. (3).未注倒角1×45, ...查看


  • 设备作业指导书-数控车床
  • 一.目的 规范设备操作,提高操作员和设备的安全系数,确保设备正确使用.维护.保养,追求设备使用效率最大化,提高企业的生产能力和经济效益. 二.适用设备 本手册适用于建荣精机Vturn-26/1200, Vturn-20/650,安阳鑫胜CK ...查看


  • (最新版)表壳的设计及其数控加工工艺毕业论文
  • 毕业设计说明书 题 目 表壳的设计及其 数控加工工艺 专 业 数控技术 班 级 07数控(3)班 学生姓名 王华 指导教师 李存鹏 2010年 4 月 20 日 目 录 一. 绪论----------------------- 2 二. 数 ...查看


热门内容