新代数控车床宏程序说明

上传人:jin****ng 文档编号:176438407 上传时间:2022-12-22 格式:DOCX 页数:13 大小:33.13KB
收藏 版权申诉 举报 下载
新代数控车床宏程序说明_第1页
第1页 / 共13页
新代数控车床宏程序说明_第2页
第2页 / 共13页
新代数控车床宏程序说明_第3页
第3页 / 共13页
资源描述:

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

1、一用户宏程序的基本概念用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的 功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指 令称为用户宏命令,也称作宏程序调用指令。用户宏有以下四个主要特征:1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;2)能够进行变量之间的各种运算;3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程, 实参能赋值给形参;4)容易实现程序流程的控制。使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工

2、 同一类的工件时只得将实际的值赋予变量既可,而不需要对每个不同的零件都编 一个程序。二 基本书写格式数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“MACRO”时整个文档就会以系统所定义的MACRO语法处 理。如果该行无“MACRO”关键词此档案就会被视为一般ISO程序文档格式处理, 此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时标题行一 般可以省略,直接书写数控程序。“MACRO”关键词必须是大写字母。对于程序的注释可以采用“”的形式,这和高级语言C+一样。例一:MACRO格式文档% MACRO用户宏程序文档,必须包含“ MAC

3、RO ”关键词IF 1 = 1 THENG00 X100.;ELSEG00 Z100.;END_IF;M99;例二:ISO格式文档% 这是标题行,可当作档案用途说明,此行可有可无G00 X100.;G00 Z100.;G00 X0;G00 Z0;M99;三 用户宏程序的编写如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏程序时进行赋值的符号#i (i=l, 2, 3,)。使用变量可以使用户宏程序具有通用性。用户宏程序中可以使用多个变量,以变量编号进行识别。1、变量的形式 变量是用符号或后面加上变量编号所构成的,即:#i(i=1, 2, 3,)例如:51091005也可用#

4、V表达式的形式来表示。例如:#100#10011 #6/2其实,通过用符号后面加上变量编号也可构成的变量,即:i(i=1, 2, 3,)例如:55但一般地,由符号后面加上变量编号构成的变量称为全局变量,不提倡在用户 宏程序中使用,具体见后面的介绍。2、变量的引用在地址符后的数值可以用变量置换。例如:若写成F#33,则当#33 = 1.5时,与F 1.5相同。若写成Z #1 &则当#18 = 20.0时,与Z 20.0相同。但需要注意,作为地址符的0、N、/等,不能引用变量。例如, O#27、 N#1 等,都是错误的。3、未定义变量尚未被定义的变量,被称为空(VACANT )。变量# 0, 0

5、始终为空,经常被用作空变量使用。3变量赋值和引数赋值 变量赋值:用户宏程序中变量赋值使用赋值运算符“:=”,不可仅用“=”符号 因为在本系统中符号“=”是被规定为关系运算符,用来比较是否相等的。例如#30:=100,会将变量#30 赋值为整数100;而#30=100,将不能为变量#30 赋值,实际上是比较变量#30 是否与整数100 相等。四变量运算与变量表达式1用户宏运算符 要对变量进行各种运算操作就要用到运算符,它是“能对变量所存数据进行运算的符号”。本系统的运算符与其优先级如表 3-2 所示。表 3-2 运算 符与其优先级运算名符号优先级括号(),1函数调用运算V函数名(V参数列表)2取

6、负-3求补运算NOT3乘法运算*4除法运算/4模运算/求余运算MOD4加法运算+5减法运算-5关系运算V, , =6相等运算=7不等运算8布尔逻辑/按位与&, AND9布尔逻辑/按位异或XOR10布尔逻辑/按位或OR112、基本算数运算符(1)+(加法运算符,如 3+5,#12+4)(2)-(减法运算符,或取负运算符,如#33-16,-#16)(3)*(乘法运算符,如 9*2,#13*8)(4)/(除法运算符,如 10/3,#43/15)(5)M0D (模运算符,或称求余运算符,其两侧均应为整型数据,如7 M0D4的值 为 3,当#18=20 时#18 MOD4 的值为 2)3、算术表达式和运

7、算符优先级 用算术运算符和括号将运算对象连接起来的、符合语法规则的式子称为算术表达式,运算对象可以是常数、变量、函数等。例如:#6*8/#32-1.5+#18+ ROUND(1) 这就是一个算术运算式,它可以作为一个整体赋值给某个变量,或用作其他表 达式中的一个运算对象。本系统按表表 3-2规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式#12-#41*5 的左侧为减右侧为乘号,而乘号优先于减号,因此,相当于#12-(#41*5)。如果在一个运算对象两侧的运算符的优先级别相同,如#2-5+#23,则按规定的 结合性(结合方向)处理,算术

8、运算符的结合方向为“自左至右”,即先左后右。 因此5 先与减号结合,执行#2-5 的运算,再执行加#23 的运算。这样“自左至右的 结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也 有“右结合性”的运算符,例如赋值运算符“:=”就是。4、关系运算符和关系表达式关系运算符是逻辑运算中比较简单的一种。所谓“关系运算”实际上就是“比 较运算”。将两个值进行比较,判断比较的结果是否符合给定的条件。例如,#310是一个关系表达式,大于号()是一个关系运算符,如果#3=12, 则满足给定的“ #310”条件,因此关系表达式的值为“真”(即“条件满足”); 如果#3=6,不满足“#3

9、10”条件,则称关系表达式的值为“假”。本系统提供 6 种关系运算符:(1) (2) (4) =(5) =(小于)(小于或等于)(大于)(大于或等于)丿(等于)1(6) (不等于) 关于优先次序:优先级相同(高)优先级(较高)优先级(低)1、前4种关系运算符(V, =)的优先级别相同,它们却高于关系运算符“ =”,而“ =”又高于“ ”2、关系运算符的优先级低于算术运算符。3、关系运算符的优先级高于赋值运算符。用两个关系运算符将两个表达式连接起来的式子,称为关系表达式。例如:#636, #13+4#23 关系表达式的值是一个逻辑值,即“真”或“假”。例如,若#12为8,则关系 表达式“#12=

10、10”的值为“假”,“#12=6”的值为“真”。5、逻辑运算和逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。本系统提供6 种逻辑运算符和逻辑运算(1)&, AND 逻辑与(2)XOR逻辑或(3)OR逻辑异或它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算举例如下:#1 AND #2若#1、#2为真,则#1 AND #2为真。#1OR #2若#1、#2之一为真,则#1X0R #2为真。逻辑运算符低于关系运算符,见图3-1。算术运算符关系运算符逻辑运算符赋值运算符(低)图3-1五用户宏程序的流程控制所谓程序的流程(Flow Control是通过控制程序的执行

11、方向,进而掌握程序动 态。这用户宏程序区别于一般数控程序的特征之一,也是用户选择用户宏程序编写 数控代码的一XX由。用户宏程序的流程控制包括无条件判断、循环控制、无条件 转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。1、条件判断判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方 面的语句有IF和CASE语句。1、IF条件语句1) 基本语法:IF条件表达式THEN -操作-ELSEIF 条件表达式THEN -操作- ELSE 操作END_IF ;说明:IF条件判断,根据真假情况到指定的地方去执行程序。例如:% MACRO/ 启动 MACRO 语法#1

12、:= 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条件表达式THE N-操作-ELSE-操作-END_IF ;3)变形2语法:IF 条件表达式THEN操作END_IF; 编程时可根

13、据需要选择合适的语法格式。2、循环控制1、REPEAT 直到型循环语法:REPEAT循环体UNTILv 条件表达式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;REPEATG00 X(#12+#14) Z(#13+#15);G01 X(#12+#14) Z(#13-#15);X(#12-#14) Z(

14、#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;G

15、01 X#12 Z#13 F200.0;WHILE (#14 = #12) AND (#15 = #13) DOG00 X(#12+#14) Z (#13+#15);G01 X(#12+#14) Z(#13-#15);X(#12-#14) Z(#13-#15);IF #14 6.0 THENEXIT;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 循环变量 := 表达式 1TO 表达式

16、 2 BY 表达式 3 DO 循环体END_FOR;说明:FOR循环控制,式中各参数意义如下循环变量控制循环次数的变量;表达式 1循环计数的起始值,可为整数或表达式;表达式 2循环计数的终止值,可为整数或表达式;表达式 3循环计数每次的累加值,可为整数或表达式;循环体 循环每次执行内容;FOR 循环执行过程为:先给循环变量赋起始值,然后判断循环变量是否为终止 值,当循环变量已为终止值时退出循环,否则执行循环体,再对循环变量加上每次 累加值,5、无条件转移GOTO 转移语句语法:GOTO n;说明:无条件地跳到指定的n行号执行,其中n可为整数或表达式。GOTO常 和IF语句搭配使用,那就是说当程

17、序检查到某个条件满足时用GOTO语句去进一步 处理,但应尽量少用该语句以提高程序可读性。X 例:% MACRO/ 启动 MACRO 语法IF( #1 = 2 ) THEN GOTO 100;G01 X10. Z10.;N100 G01 X30. Z30.;M02;EXIT 循环中断语句语法: EXIT;说明:循环中断,跳离循环控制;用在循环控制中,通常EXIT都和IF语句搭 配使用,当某个条件满足后就跳离循环。请参考WHILEX例。六 库函数1 、 ABS调用方法:ABS(v参数)函数描述:求一个数的绝对值X 例:#1 := ABS(-2.3); / #1 的结果是 2.3注:此处函数内“参数

18、”既可为实际数值,也可为变量或表达式,以下若无特殊说 明均按此处理。2、SIN调用方法: SIN (参数)函数描述:求一个数的正弦值X 例 :#1 := SIN(#10);3、ASIN调用方法: ASIN (参数)函数描述:求一个数的反正弦值X 例 :#1 := ASIN(#10);4、MAX调用方法:MAX(v参数1,参数2)函数描述:求两个数的最大值X例1:#1 := MAX(10,20); / #1 等于 20X例2:#1 := MAX(#2,#3);5、SQRT调用方法: SQRT (参数)函数描述:求一个数的平方根值X例1:#2 := SQRT(3); / #2 等于 1.732X例

19、2:#16 := SQRT(#10);6、SIGN调用方法: SIGN (参数)函数描述:返回一个数的符号,-1 表示该数是负数,1 表示该数是正数,0 表示该数 是零。X例:IF( SIGN(#10) 0 ) THEN END_IF;5、 CEIL调用方法:CEIL(v参数)函数描述:返回比一个数大或与其相等的最小整数X例1:#2 := CEIL(2.3); / #2 等于 3X例2:#2 := CEIL(#10);7、ROUND调用方法: ROUND (参数)函数描述:四舍五入化整,X例1:#2 := ROUND(2.3); / #2 等于 2X例2:#2 := ROUND(#10);七用

20、户宏程序编写注意事项1. 用户宏文档第一行必须为MACRO;程序段的每一行结束需加“;”结束 符;对于用户宏子程序最后需加“M99;”,以便能返回到主程序。2. 变量赋值使用“:=”符号,不可仅用“=”符号。3. 文档名储存需依照下列规则 例如:编写G100之MACRO,需将该MACRO 程序存在C:CMACRO目录底下,且文件名需为G0100,不需扩展名。而 编写G100.1之MACRO需将该MACRO程序存在C:CMACRO目录底下 且文件名需为G100001,不需扩展名。4. 请多使用局部变量(#1#50), 模态变量(#2001#2100,#3001#3100)为所有扩 充G码的共享资

21、源,请仅用于多个扩充G码间的数据交换,以节省共享资 源;如果需要系统定义的初始值,请使用用户参数( #4001#4100,#5001 #5100 )。5. 请不要使用全局变量(Global Variables,1999),因为G码执行时,使用者的 数据是由自变量(A_,B_,Z_)传入,由公共变量传递不符合使用习惯。6. 系统在执行加工时对于MACRO程序会事先预编译,因此MACRO执行速 度会超前于G、M代码指令,因此当要求变量赋值或数据读取须与G、M 代码指令发出的时间进程相同时,请于变量赋值或数据读取前加WAIT() 指令,否则该变量赋值或该数据读取将无法与 G、 M 代码同步。7. 不

22、可改变模式 G 码(G00/G01/G02/G03/G33/G34/G35,G91/G90, G40/G41/G42,)的状态,如果用户宏程序中需要改变其状态时,就需要 模态信息的回复,8. 对于长度或角度的自变量在运算前请使用STD()函数将单位标准化,以符合 工具机使用习惯。9. 不可以改变坐标系统设定,G92/G54/G52等与坐标系统相关指令不能使用, 否则图形仿真功能将失去参考意义。10. 请在程序中加上必要的注释,养成良好的编程习惯,以增加程序可读性和可 维护性,以帮助后续开发人员维护和排除问题。附录W运算符与其优先级运算名符号优先级括号(),1函数调用运算V函数名(V参数列表)2

23、取负-3求补运算NOT3乘法运算*4除法运算/4模运算/求余运算MOD4加法运算+5减法运算-5关系运算V, , =6相等运算=7不等运算8布尔逻辑/按位与&, AND9布尔逻辑/按位异或XOR10布尔逻辑/按位或OR11函数名描述ABS求一个数的绝对值X例:#1 := ABS(-2.3); #1 的结果是 2.3ACOS求一个数的反余弦值X例:#1 := ACOS(#10);ASIN求一个数的反正弦值X例:#1 := ASIN(#10);ATAN求一个数的反正切值X例:#1 := ATAN(#10);COS求一个数的余弦值X例:#1 := COS(#10);MAX求两个数的最大值X例1:函数

24、名描述#1 := MAX(10, 20); / #1 等于 20 X例2:#1 := MAX(#2, #3);MIN求两个数的最小值X例1:#1 := MIN(10.0, 20.0); / #1 等于 10.0X例2:#1 := MIN(#10, #11);SIN求一个数的正弦值X例:#1 := SIN(#10);SQRT求一个数的平方根值X例1:#2 := SQRT(3); / #2 等于 1.732.X例2:#2 := SQRT(#10);TAN求一个数的正切值X例:#1 := TAN(#10);SIGN返回 个数的符号,-1表示该数是负数,1表示该数是 正数,0表示该数是零X例:IF(

25、SIGN(#10) 0 ) THENEND IF;CEIL返回比一个数大或与其相等的最小整数 X例1:#2 := CEIL(2.3); / #2 等于 3 X例2:#2 := CEIL(#10);FLOOR返回比一个数小或与其相等的最大整数 X例1:#2 := FLOOR(2.3); / #2 等于 2 X例2:#2 := FLOOR(#10);ROUND四舍五入化整X例1:函数名描述#2 := ROUND(2.3); / #2 等于 2 X例2:#2 := ROUND(#1O);STD参数规X化,读第一个参数为规X化对象,根据第一 个参数使用最小增量方法,特别对小数编程尤为必要。X例:#9

26、:= STD(#9,#1600); / 根据远轴规 X 化STDAX参数规X化,读第一个参数为规X化对象,根据第一 个轴地址参数使用最小增量方法X例:#24 := STDAX(#24,X); /根据 X 轴规 X 化#3 := STDAX(#3,A); 根据 A 轴规 X 化RANDOM产生一个伪随机数X例:#1 := RANDOM();PUSH进宏堆栈X例:PUSH(#1); /变量#1内容进栈PUSH(#3); /变量#3内容进栈POP出宏堆栈X例:#1 := POP(); /出栈值赋给变量#1STKTOP从栈顶依据索引获取堆栈兀素,但不弹出此元素 X例:STKTOP(O);/栈顶元素STKTOP(1);栈顶下的第一个兀素 STKTOP(2); 栈顶下的第一个兀素e tcALARM发出宏警告X例:ALARM(300); /发出标识号为300的警告 ALARM(#1); / #1必须为整数SLEEP临时放弃执行循环X例:SLEEP();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!