新代数控车床宏程序说明.docx

上传人:b****5 文档编号:30282302 上传时间:2023-08-13 格式:DOCX 页数:21 大小:23.30KB
下载 相关 举报
新代数控车床宏程序说明.docx_第1页
第1页 / 共21页
新代数控车床宏程序说明.docx_第2页
第2页 / 共21页
新代数控车床宏程序说明.docx_第3页
第3页 / 共21页
新代数控车床宏程序说明.docx_第4页
第4页 / 共21页
新代数控车床宏程序说明.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

新代数控车床宏程序说明.docx

《新代数控车床宏程序说明.docx》由会员分享,可在线阅读,更多相关《新代数控车床宏程序说明.docx(21页珍藏版)》请在冰豆网上搜索。

新代数控车床宏程序说明.docx

新代数控车床宏程序说明

.用户宏程序的基本概念

用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储

的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功

能。

在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。

其代表指令称为用户宏命令,也称作宏程序调用指令。

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

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

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

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

程,实参能赋值给形参;

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

使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工

同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编

一个程序。

2.基本书写格式

数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。

当标题行含有关键字“@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第

G00Z0M99;

3.用户宏程序的编写

如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏

程序时进行赋值的符号#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相等。

4.变虽运算及变虽表达式

1.用户宏运算符

要对变量进行各种运算操作就要用到运算符,它是“能对变量所存数据进行运

算的符号”。

本系统的运算符及其优先级如表3-2所示。

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

运算符优先

函数调用运函数>(参数列

求补运NO

乘法运

除法运

求余运模运MO

加法运

减法运

关系运><

相等运

不等运<

AN布尔逻按位

异或按位/布尔逻辑10XOR

或按位/布尔逻辑11OR

2、基本算数运算符

(1)+(加法运算符,如3+5,#12+4)

⑵-(减法运算符,或取负运算符,如#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”条件,贝U称关系表达式的值为“假”。

本系统提供6种关系运算符:

⑴<(小丁)⑵<=(小丁或等丁)优先级相同(高)(3)>(大丁)

(大丁或等丁)>=(4)(5)=(等丁)优先级(较高).

⑹<>(不等丁)优先级(低).

关丁优先次序:

1、前4种关系运算符(<,<=,>,>=)的优先级别相同,它们却高丁关

系运算符“=”,而“=”乂高丁“<>”

2、关系运算符的优先级低丁算术运算符。

3、关系运算符的优先级局丁赋值运算符。

用两个关系运算符将两个表达式连接起来的式子,称为关系表达式。

例如:

#6>36,#13+4<>#23

关系表达式的值是一个逻辑值,即“真”或“假”。

例如,若#12为8,则关系表达式“#12=10”的值为“假”,“#12>=6”的值为“真”。

5、逻辑运算和逻辑表达式

用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。

本系统提供6种逻辑运算符和逻辑运算

(1)&,AND逻辑与

⑵XOR逻辑或

⑶OR逻辑异或

它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算举例如下:

#1AND#2若#1、#2为真,贝U#1AND#2为食。

若#2OR#1#1、#2之一为真,WJ#1XOR#2为真。

逻辑运算符低丁关系运算符,见图3-1。

.

算术运算符(高)关系运算符逻辑运算赋值运算(低

3-1图

5.用户宏程序的流程控制

所谓程序的流程(FlowControl)是通过控制程序的执行方向,进而掌握程序

动态。

这用户宏程序区别丁一般数控程序的特征之一,也是用户选择用户宏程序

写数控代码的一大理由。

用户宏程序的流程控制包括无条件判断、循环控制、无条

件转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。

1、条件判断

判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方面的语句有IF和CASE语句。

1、IF条件语句

1)基本语法:

IF<条件表达式>THENt<操作>tELSEIF<条件表达式>THENt<操作>tELSEt<操作>tEND_IF;

说明:

IF条件判断,根据真假情况到指定的地方去执行程序。

例如:

%@MACRO//启动MACRO语法

#1:

=3.0;

G01X20.Z15.F200;

IF#1=1THEN;X(1.0*1);Z(1.0*1);

ELSEIF#1=2THEN;X(1.0*2);Z(1.0*2);

ELSEIF#1=3THEN;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<条件表达式>THENH<操作>tELSEt<操作>tEND_IF;

3)变形2

语法:

IF<条件表达式>THENt<操作〉tEND_IF;

编程时可根据需要选择合适的语法格式。

2、循环控制

1、REPEAT直到型循环

语法:

REPEAT

<循环体〉

UNTIL<条件表达式>END_REPEAT;

说明:

REPEAT直到型循M空制,先执行循环体,后判断条件表达式,当条件满足时退出循环。

例如:

%@MACRO//启动MACRO语法

30.;#10:

=

22.5.;#11:

=

#10/2;#12:

=

#11/2;#13:

=

2.0;#14:

=

1.5;:

=#15

F200.0;#13X#12ZG01

TREPEA

(#13+#15);ZG00X(#12+#14)

(#13-#15);X(#12+#14)ZG01

(#13-#15);X(#12-#14)Z

(#13+#15);ZX(#12-#14)

(#13+#15);ZX(#12+#14)

2.0;#14#14:

=+

1.5;#15+:

=#15

T;END_REPEA>OR>UNTIL(#14#12)(#15#13)(1.0);X(1.0)ZM30;

3.当型循环WHILE

语法:

;END_WHILEt>循环体<tDO>条件表达式<WHILE.

说明:

WHILE当型循环控制,先判断条件表达式,当条件满足时执行循环体,否则退出循环。

例如:

%@MACRO;

#10:

=20.;

#11:

=15.;

#12:

=#10/2;

#13:

=#11/2;

#14:

=2.0;

#15:

=1.5;

G01X#12Z#13F200.0;

WHILE(#14<=#12)AND(#15<=#13)DO

G00X(#12+#14)Z(#13+#15);

G01X(#12+#14)Z(#13-#15);

X(#12-#14)Z(#13-#15);

IF#14>6.0THEN

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<循环变量>:

=<表达式1>TO<表达式2>[BY<表达式3>]DO

<循环体>

END_FOR;

说明:

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

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

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

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

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

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

FOR循环执行过程为:

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

累加值,

5、无条件转移

GOTO转移语句

语法:

GOTOn;

说明:

无条件地跳到指定的n行号执行,其中n可为整数或表达式。

GOTO常和IF语句搭配使用,那就是说当程序检查到某个条件满足时用GOTO语句去进一

步处理,但应尽量少用该语句以提高程序可读性。

范例:

%@MACRO//启动MACRO语法

...

100;2)THENGOTOIF(#1=

10.;ZX10.G01

...

30.;ZG01X30.N100

...

M02;

循环中断语句EXIT

EXIT;语法:

语句搭IFEXIT说明:

循环中断,跳离循环控制;用在循环控制中,通常都和

配使用,当某个条件满足后就跳离循环。

范例请参考WHILE

6.库函数

1、ABS

调用方法:

ABS(<参数>)

函数描述:

求一个数的绝对值

范例:

#1:

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

[注]:

此处函数内“参数”既可为实际数值,也可为变量或表达式,以下若无特殊

说明均按此处理。

2、SIN

调用方法:

SIN(<^数>)

函数描述:

求一个数的正弦值

范例:

#1:

=SIN(#10);

3、ASIN

>)参数(

函数描述:

求一个数的反正弦值

范例:

#1:

=ASIN(#10);

4、MAX

调用方法:

MAX(<#数1,参数2>)

函数描述:

求两个数的最大值

范例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:

ROUND(#10);:

=#2.

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

1.用户宏文档第一行必须为%@MACRO;程序段的每一行结束需加“;”结束符;对丁用户宏子程序最后需加“M99;”,以便能返回到主程序。

2.变量赋值使用“:

=”符号,不可仅用“=”符号。

3.文档名储存需依照下歹U规则。

例如:

编写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请不要使用全局变量(GlobalVariables,@1~@999),因为G码执行时,使用者的数据是由自变量(A_,B_…,ZJ专入,由公共变量传递不符合使用习惯。

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.请在程序中加上必要的注释,养成良好的编程习惯,以增加程序可读性和可问题。

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

附录IV运算符及其优先级

运算名

符号

优先级

括号

][(),

1

函数调用运算

)>(<参数列表〉函数名<

2

取负

-

3

求补运算

NOT

3

乘法运算

*

4

除法运算

/

4

求余运算模运算/

MOD

4

加法运算

+

5

减法运算

-

5

关系运算

>=,><=,,<

6

相等运算

=

7

不等运算

<>

8

布尔逻辑/按位与

AND&,

9

异或/布尔逻辑按位

XOR

10

或按位/布尔逻辑

OR

11

描函数

求一个数的绝对值ABS

:

范例

2.3//#1ABS(-2.3);:

=#1的结果是

求一个数的反余弦值ACOS

:

范例

ACOS(#10);#1:

=

求一个数的反正弦值ASIN

:

范例

ASIN(#10);:

=#1

求一个数的反正切值ATAN

:

范例

TAN(#10);#1A:

=

求一个数的余弦值COS

:

范例

COS(#10);:

=#1

求两个数的最大值MAX

1:

范例

页12第.

函数名描述

#1:

=MAX(10,20);//#1等丁20

范例2:

#:

MAX(##3)

求两个数的最小MI

1范

10.等20.0)/##:

MIN(10.

2范

#11)MIN(#1#:

求一个数的正弦SI

SIN(#10)#:

求一个数的平■方根SQR

1范

1.732.等SQRT(3)#:

/#

2范

SQRT(#10):

#

求一个数的正切TA

TAN(#10):

#

返回一个数的符号-表小该数是负数表小该数SIG

正数表示该数是

IFSIGN(#10THE

...

END_IF

返回沱一个数大或与其相等的最小整CEI

1范

#等#:

CEIL(2.3)/

2范

#:

CEIL(#10)

返回比一个数小或与其相等的最大整FLOO

范1

#:

FLOOR(2.3)/#等

范2

#:

FLOOR(#10)

四舍五入化ROUN

范1.

函数名描述

#2:

=ROUND(2.3);//#2等丁2

范例2:

#:

ROUND(#10)

参数规范化读第一个参数为规范化对象根据ST

二个参数使用最小增量方法,特别对小数编程尤为

根据远轴规范/:

STD(##1600)#

根据读第一个参数为规范化对象参数规范化STDA

二个轴地址参数使用最小增量方

轴规范根#2:

STDAX(#2X)/

轴规范/:

STDAX(#A)根#

产生一个伪随机RANDO

RANDOM()#:

进宏堆PUS

内容进变#PUSH(#1)/

内容进变#PUSH(#3)/

出宏堆PO

##出栈值赋给变/):

POP

从栈顶依据索引获取堆栈元素STKTO出此元但范

STKTOP(0)/栈顶元

STKTOP

(1)/栈顶下的第一个元

STKTOP

(2)/栈顶下的第二个元

••-et发出宏警ALAR范

ALARM(300)/发出标识号30的警

ALARM(#1)/#必须为整

临时放弃执行循SLEE范SLEEP()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1