ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:23.87KB ,
资源ID:4353263      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4353263.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(新代数控车床宏程序说明.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

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

3、户宏程序文档,必须包含“MACRO”关键词IF1 = 1 THENG00X100.;ELSEG00Z100.;ENDJF;M99;例二:ISO格式文档%这是标题行,可当作档案用途说明,此行可有可无G00X100.;G00Z100.;GOO X0;G00Z0;M99;3.用户宏程序的编写如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏 程序时进行赋值的符号井i(i=l, 2, 3,)。使用变量可以使用户宏程序具有通用 性。用户宏程序中可以使用多个变量,以变量编号进行识别。1、 变量的形式变量是用符号#或后面加上变量编号所构成的,即:#i(i=l, 2, 3,)例如:#5#10

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

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

6、数名(v参数列表)2取负-3求补运算NOT3乘法运算*4除法运算/4模运算/求余运算MOD4加法运算+5减法运算-5关系运算, =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)MOD (模运算符,或称求余运算符,其两侧均应为整型数据,如7MOD4 的值为3,当#18=20时#18MOD4的值为2)3

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

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

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

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

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

12、O 语法#1 := 3.0;G01 X20. Z15. F200;IF#1 = 1 THEN: X(1.0*l);Z(1.0*l);ELSEIF#1 =2 THEN; X(l.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 V条件表达式THEN-Y操作-*ELSE-*v操作-*END_IF;3)变形2语法:IF V条件表达式THEN-*V操作f END_IF;编程时可根据需要选择合适的

13、语法格式。2、循环控制1、REPEAT直到型循环语法:REPEATv循环体UNTIL v条件表达式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#13F200.0;REPEATGOO X(#12+#14) Z(#13+#15);G01 X(#12+#14) Z(#13-#15);X(#12-#14) Z(#13-#15);X(#

14、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 v条件表达式DO-*V循环体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#13F200.0;WHILE (#14 V= #12) AND (#15 6.0 THENEXIT;ENDF;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 v循环变量:二V表达式1TO v表达式2 BY DO v循环体END.FOR;说明:FOR循环控制,式中各参数意义如下循环变量一一控制循环次数的变量;表达式1循环计数的起始值,可为整数或表达式;表达式2循环计数的终止值,可为整数或

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

17、.; N100G01 X30. Z30.; M02;EXIT循环中断语句语法:EXIT;说明:循环中断,跳离循环控制;用在循环控制中,通常EXIT都和IF语句搭 配使用,当某个条件满足后就跳离循环。请参考WHILE范例。6.库函数1、 ABS调用方法:ABS(参数)函数描述:求一个数的绝对值范例:#1 := ABS(-2.3); #1 的结果是 2.3注:此处函数内“参数”既可为实际数值,也可为变量或表达式,以下若无特殊说 明均按此处理。2、 SIN调用方法:SIN (参数)函数描述:求一个数的正弦值范例:#1 := SIN(#10);3、 ASIN调用方法:ASIN (参数)函数描述:求一个

18、数的反正弦值范例:#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 ENDF;5、CEIL调用方法:C

19、EIL参数)函数描述:返回比一个数大或与其相等的最小整数范例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);7.用户宏程序编写注意事项1.用户宏文档第一行必须为MACRO ;程序段的每一行结束需加“;”结束 符;对于用户宏子程序最后需加“M99 ; ”,以便能返回到主程序。2.变量赋值使用“:=”符号,不可仅用“符号。3.文档名储存需依照下列规则。例如:编写G100之MACRO,需

20、将该MACRO程序存在C:CNCMACRO 目录底下,且文件名需为G0100 不需扩展名。而编写G100.1之MACRO,需将该MACRO程序存在C:CNOMACRO目 录底下,且文件名需为G100001,不需扩展名-4.请多使用局部变最(#1#50),模态变最(#2001#2100,#3001#3100)为所有扩 充G码的共享资源,请仅用于多个扩充G码间的数据交换,以节省共享资 源;如果需要系统定义的初始值,请使用用户参数(#4001#4100,#5001 #5100)。5.请不要使用全局变量(Global Variables,1999),因为G码执行时,使用 者的数据是由自变最(A_,B_

21、.,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,)的状态,如果用户宏程序中需要改变其状态时,就需要 模态信息的回复,&对于长度或角度的自变量在运算前请使用STD()函数将单位标准化,以符合 工具机使用习惯。9.

22、不可以改变坐标系统设定,G92/G54/G52等与坐标系统相矢指令不能使用, 否则图形仿真功能将失去参考意义。10.请在程序中加上必要的注释,养成良好的编程习惯,以增加程序可读性和可 维护性,以帮助后续开发人员维护和排除问题。附录IV运算符及其优先级运算名符号优先级括号(),|1函数调用运算V函数名 ( 参数列表)2取负-3求补运算NOT3乘法运算港4除法运算/4模运算/求余运算MOD4加法运算+5减法运算-5关系运算, =6相等运算二7不等运算8布尔逻辑/按位与&, AND9布尔逻辑/按位异或XOR10布尔逻辑/按位或OR11函数名描述ABS求一个数的绝对值 范例:#1 :二 ABS(-2.

23、3); #1 的结果是 2.3ACOS求一个数的反余弦值 范例:#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(#10, #11);SIN求一个数的正弦值 范例:

24、#1 := SIN(#10);SQRT求一个数的平方根值范例1:#2 := SQRT; #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返回比一个数小或与其相等的最大整数范例1:#2 :二 FLOOR(2.3); /#2 等于 2范例

25、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 := RANDOM0;PUSH进宏堆栈范例:PUSH(#1); /变量#1内容进栈PUSH(#3); /变量#3内容进栈POP出宏堆栈范例:#1 := POP(); 出栈值赋给变量#1STKTOP从栈顶依据索引获取堆栈元素,但不弹出此元素 范例:STKTOP(O); 栈顶元素STKTOP(l); 栈顶下的第一个元素STKTOP(2); 栈顶下的第二个元素.etcALARM发出宏警告范例:ALARM(300); 发出标识号为300的警告ALARM(#1); #1必须为整数SLEEP临时放弃执行循环 范例:SLEEP();

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

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