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

上传人:深夜****等你... 文档编号:84232156 上传时间:2023-04-04 格式:PDF 页数:13 大小:441.46KB
返回 下载 相关 举报
新代数控车床宏程序说明.pdf_第1页
第1页 / 共13页
新代数控车床宏程序说明.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《新代数控车床宏程序说明.pdf》由会员分享,可在线阅读,更多相关《新代数控车床宏程序说明.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、被视为标题行。当标题行含有关键字“MACRO”时整个文档就会以系统所定义的 MACRO 语法处理。如果该行无“MACRO”关键词此档案就会被视为一般 ISO 程序文档格式处理,此时将不能编写用户宏和使用其 MACRO 语法。而当书写 ISO 程序文档时标题行一般可以省略,直接书写数控程序。“MACRO”关键词必须是大写字母。对于程序的注释可以采用“/”的形式,这和高级语言 C+一样。例一:MACRO 格式文档%MACRO /用户宏程序文档,必须包含“MACRO”关键词 IF 1=1 THEN G00 X100.;ELSE G00 Z100.;END_IF;M99;例二:ISO 格式文档%这是标

3、题行,可当作档案用途说明,此行可有可无 G00 X100.;G00 Z100.;G00 X0;G00 Z0;M99;三 用户宏程序的编写 如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏程序时进行赋值的符号i(i1,2,3,)。使用变量可以使用户宏程序具有通用性。用户宏程序中可以使用多个变量,以变量编号进行识别。1、变量的形式 变量是用符号或后面加上变量编号所构成的,即:i(i1,2,3,)例如:5 109 1005 也可用表达式的形式来表示。例如:#100#10011#6/2 其实,通过用符号后面加上变量编号也可构成的变量,即:i(i1,2,3,)例如:5 5 但一般地,

4、由符号后面加上变量编号构成的变量称为全局变量,不提倡在用户宏程序中使用,具体见后面的介绍。2、变量的引用 在地址符后的数值可以用变量置换。例如:若写成 F#33,则当331.5 时,与 F1.5 相同。若写成 Z#18,则当1820.0 时,与 Z20.0 相同。但需要注意,作为地址符的O、N、等,不能引用变量。例如,O#27、N#1 等,都是错误的。3、尚未被定义的变量,被称为空(VACANT)。变量0,0 始终为空,经常被用作空变量使用。3变量赋值和引数赋值:用户宏程序中变量赋值使用赋值运算符“:=”,不可仅用“=”符号。因为在本系统中符号“=”是被规定为关系运算符,用来比较是否相等的。例

5、如#30:=100,会将变量#30 赋值为整数 100;而#30=100,将不能为变量#30赋值,实际上是比较变量#30 是否与整数 100 相等。文档 四变量运算及变量表达式 用户宏运算符,本系统的符及其优先级如表3-2 所示。表 3-2 符及其优先级 运算名 符号 优先级 括号(),1 函数调用运算()2 取负-3 求补运算 NOT 3 乘法运算*4 除法运算/4 模运算/求余运算 MOD 4 加法运算+5 减法运算-5 关系运算,=6 相等运算=7 不等运算 8 布尔逻辑/按位与&,AND 9 布尔逻辑/按位 异或 XOR 10 布尔逻辑/按位 或 OR 11 、基本算数运算符 (1)+

6、(加法运算符,如 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)、算术表达式和运算符优先级 用算术运算符和括号将运算对象连接起来的、符合语法规则的式子称为算术,运算对象等。例如:#6*8/#32-1.5+#18+ROUND(1)这就是一个算术运算式,它可以作为一个整体赋值给某个变量,或用作其他表达式中的一个运算对象。本系统按表表

7、3-2 规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式#12-#41*5 的左侧为减,文档 右侧为乘号,而乘号优先于减号,因此,相当于#12-(#41*5)。如果在一个运算对象两侧的运算符的优先级别相同,如#2-5+#23,则按规定的结合性(结合方向)处理,算术运算符的结合方向为“自左至右”,即先左后右。因此 5 先与减号结合,执行#2-5 的运算,再执行加#23 的运算。这样“自左至右的结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也有“右结合性”的运算符,例如赋值运算符“:=”就是。、关系运算符和关系表达式

8、 关系运算符是逻辑运算中比较简单的一种。所谓“关系运算”实际上就是“比较运算”。将两个值进行比较,判断比较的结果是否符合给定的条件。例如,#310 是一个关系表达式,大于号()是一个关系运算符,如果#3=12,则满足给定的“#310”条件,因此关系表达式的值为“真”(即“条件满足”);如果#3=6,不满足“#310”条件,则称关系表达式的值为“假”。本系统提供 6 种关系运算符:(1)(小于)(2)(大于)(4)=(大于或等于)(5)=(等于)(6)(不等于)关于优先次序:1、前 4 种关系运算符(,)的优先级别相同,它们却高于关系运算符“=”,而“=”又高于“”2、关系运算符的优先级低于算术

9、运算符。3、关系运算符的优先级高于赋值运算符。用两个关系运算符将两个表达式连接起来的式子,称为关系表达式。例如:#636,#13+4#23 关系表达式的值是一个逻辑值,即“真”或“假”。例如,若#12 为 8,则关系表达式“#12=10”的值为“假”,“#12=6”的值为“真”。、逻辑运算和逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。本系统提供 6 种逻辑运算符和逻辑运算(1)&,AND 逻辑与(2)XOR 逻辑或(3)OR 逻辑异或 它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算举例如下:#1 AND#2 若#1、#2 为真,则#1 AND#2

10、为真。#1 OR#2 若#1、#2 之一为真,则#1 XOR#2 为真。优先级相同(高)优先级(较高)优先级(低)文档 逻辑运算符低于关系运算符,见图 3-1。图 3-1 五 用户宏程序的流程控制 所谓程序的流程(Flow Control)是通过控制程序的执行方向,进而掌握程序动态。这用户宏程序区别于一般数控程序的特征之一,也是用户选择用户宏程序编写数控代码的一大理由。用户宏程序的流程控制包括无条件判断、循环控制、无条件转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。、条件判断 判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方面的语句有 IF 和 C

11、ASE 语句。1、IF 条件语句 1)基本语法:IF THENELSEIF THENELSEEND_IF;说明:IF 条件判断,根据真假情况到指定的地方去执行程序。例如:%MACRO /启动 MACRO 语法#1:=3.0;G01 X20.15.F200;IF#1=1 THEN;X(1.0*1);(1.0*1);ELSEIF#1=2 THEN;X(1.0*2);(1.0*2);ELSEIF#1=3 THEN;X(1.0*3);(1.0*3);ELSE;X(1.0*4);(1.0*4);END_IF;X(1.0)(1.0);M30;然而在实际使用中,可以有以下一些变形:2)变形 1 语法:IF

12、THENELSEEND_IF;算术运算符 关系运算符 逻辑运算符 赋值运算符(高)(低)文档 3)变形 2 语法:IF THENEND_IF;编程时可根据需要选择合适的语法格式。、循环控制 1、REPEAT 直到型循环 语法:REPEAT UNTIL 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#13 F200.0;REPEAT G00 X(#12+

13、#14)(#13+#15);G01 X(#12+#14)(#13-#15);X(#12-#14)(#13-#15);X(#12-#14)(#13+#15);X(#12+#14)(#13+#15);#14:=#14+2.0;#15:=#15+1.5;UNTIL(#14#12)OR(#15#13)END_REPEAT;X(1.0)(1.0);M30;.WHILE 当型循环 语法:WHILE DOEND_WHILE;说明:WHILE 当型循环控制,先判断条件表达式,当条件满足时执行循环体,文档 否则退出循环。例如:%MACRO;#10:=20.;#11:=15.;#12:=#10/2;#13:=#1

14、1/2;#14:=2.0;#15:=1.5;G01 X#12#13 F200.0;WHILE(#14=#12)AND(#15 6.0 THEN EXIT;END_IF;X(#12-#14)(#13+#15);X(#12+#14)(#13+#15);#14:=#14+2.0;#15:=#15+1.5;END_WHILE;X(-5.0)Z(5.0);M02;.FOR 循环 语法:FOR :=TO BY DO END_FOR;说明:FOR 循环控制,式中各参数意义如下 循环变量控制循环次数的变量;表达式 1循环计数的起始值,可为整数或表达式;表达式 2循环计数的终止值,可为整数或表达式;表达式 3循

15、环计数每次的累加值,可为整数或表达式;循环体 循环每次执行内容;FOR 循环执行过程为:先给循环变量赋起始值,然后判断循环变量是否为终止值,当循环变量已为终止值时退出循环,否则执行循环体,再对循环变量加上每次累加值,文档、无条件转移 GOTO 转移语句 语法:GOTO n;说明:地跳到指定的 n 行号执行,其中 n 可为整数或表达式。GOTO 常和 IF 语句搭配使用,那就是说当程序检查到某个条件满足时用 GOTO 语句去进一步处理,但应尽量少用该语句以提高程序可读性。范例:%MACRO /启动 MACRO 语法 IF(#1=2)THEN GOTO 100;G01 X10.10.;N100 G

16、01 X30.30.;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:=ASI

17、N(#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()函数描述:返回比一个数大或与其相等的最小整

18、数 范例 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.G100MACROMACROC:CNCMACROG0100 G100.1MACROMACROC:CNCMACROG100001 4.(#1#50),(#2001#2100#3001#3100)GG(#4001#4100#5001#5100)5.(Global Varia

19、bles1999)G(A_ B_ Z_)6.MACROMACROGM GMWAITGM 7.G(G00/G01/G02/G03/G33/G34/G35G91/G90G40/G41/G42)8.STD()9.G92/G54/G52 10.附录 运算符及其优先级 运算名 符号 优先级 括号(),1 函数调用运算()2 取负-3 求补运算 NOT 3 乘法运算*4 除法运算/4 模运算/求余运算 MOD 4 加法运算+5 减法运算-5 关系运算,=6 相等运算=7 不等运算 8 布尔逻辑/按位与&,AND 9 布尔逻辑/按位 异或 XOR 10 布尔逻辑/按位 或 OR 11 函数名 描述 ABS

20、求一个数的绝对值 范例:#1:=ABS(-2.3);/#1 的结果是 2.3 ACOS 求一个数的反余弦值 范例:#1:=ACOS(#10);ASIN 求一个数的反正弦值 范例:#1:=ASIN(#10);ATAN 求一个数的反正切值 范例:#1:=ATAN(#10);COS 求一个数的余弦值 范例:#1:=COS(#10);MAX 求两个数的最大值 范例 1:文档 函数名 描述#1:=MAX(10,20);/#1 等于 20 范例 2:#1:=MAX(#2,#3);MIN 求两个数的最小值 范例 1:#1:=MIN(10.0,20.0);/#1 等于 10.0 范例 2:#1:=MIN(#1

21、0,#11);SIN 求一个数的正弦值 范例:#1:=SIN(#10);SQRT 求一个数的平方根值 范例 1:#2:=SQRT(3);/#2 等于 1.732.范例 2:#2:=SQRT(#10);TAN 求一个数的正切值 范例:#1:=TAN(#10);SIGN 返回一个数的符号,-1 表示该数是负数,1 表示该数是正数,0 表示该数是零 范例:IF(SIGN(#10)0)THEN .END_IF;CEIL 返回比一个数大或与其相等的最小整数 范例 1:#2:=CEIL(2.3);/#2 等于 3 范例 2:#2:=CEIL(#10);FLOOR 返回比一个数小或与其相等的最大整数 范例

22、1:#2:=FLOOR(2.3);/#2 等于 2 范例 2:#2:=FLOOR(#10);ROUND 四舍五入化整 范例 1:文档 函数名 描述#2:=ROUND(2.3);/#2 等于 2 范例 2:#2:=ROUND(#10);STD 参数规范化,读第一个参数为规范化对象,根据第二个参数使用最小增量方法,特别对小数编程尤为必要。范例:#9:=STD(#9,#1600);/根据远轴规范化 STDAX 参数规范化,读第一个参数为规范化对象,根据第二个轴地址参数使用最小增量方法 范例:#24:=STDAX(#24,X);/根据 X 轴规范化#3:=STDAX(#3,A);/根据 A 轴规范化 RANDOM 产生一个伪随机数 范例:#1:=RANDOM();PUSH 进宏堆栈 范例:PUSH(#1);/变量#1 内容进栈 PUSH(#3);/变量#3 内容进栈 POP 出宏堆栈 范例:#1:=POP();/出栈值赋给变量#1 STKTOP 从栈顶依据索引获取堆栈元素,范例:STKTOP(0);/栈顶元素 STKTOP(1);/栈顶下的第一个元素 STKTOP(2);/栈顶下的第二个元素 etc ALARM 发出宏警告 范例:ALARM(300);/发出标识号为 300 的警告 ALARM(#1);/#1 必须为整数 SLEEP 临时放弃执行循环 范例:SLEEP();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁