欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    精品课程宏程序编写.docx

    • 资源ID:24357298       资源大小:29.13KB        全文页数:25页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    精品课程宏程序编写.docx

    1、精品课程宏程序编写FANUC 0i-MC 数控系统用户宏程序第一节 宏程序基本理论虽然子程序对编制相同的加工程序非常重要,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。例如型腔加工宏程序和用户开发固定循环。使用时,加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样。1.1变量普通加工程序直接用数值指定G代码和移动距离,例如G01 X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量指定时,变量值可用程序或用MDI面板操作改变。 #1=#2+100; G01 X#1 F300;1.变量的表示一般编程方法允许对变量命名,但用户宏程

    2、序不行。变量用变量符号#和后面的变量号指定,例如#1。表达式可以用于指定变量号,此时,表达式必须封闭在括号中。例如:#【#1+#2-12】2.变量的类型变量根据变量号可以分为四种类型,如下:变量号 变量类型 功能#0 空变量 该变量总是空,没有值能赋给该变量#1#33 局部变量 局部变量只能用于在宏程序中存储数据,例如运算结果。当断电时,局部变量被初始化为空。调用宏程序时,自变量对局部变量赋值#100#199#500#999 公共变量 公共变量在不同的宏程序中的意义相同。当断电时,变量#100#199初始化为空,变量#500#999的数据保存#1000 系统变量 系统变量用于读和写CNC的各种

    3、数据,例如刀具的当前位置和补偿值3.变量值的范围局部变量和公共变量可以为0值或下面范围中的值:-1047-1029或10-291047如果计算结果超出有限范围,则发出P/S报警NO.111。4.小数点的省略当在程序中定义变量值时,小数点可以省略。例如:当定义#1=123时,变量#1的实际值是123.000。5.变量的引用在地址后指定变量号即可引用其变量值。当用表达式指定变量时,要把表达式放在括号中。例如:G01 X【#1+#2】 F#3;被引用变量的值根据地址的最小设定单位自动地舍入。例如:当系统的最小输入增量为1/1000mm单位,指令G00 X#1,并将12.3456赋值给变量#1,实际指

    4、令值为G00 X12.346。改变引用变量的值的符号,要把负号(-)放在#号的前面。例如:G00 X-#1;引用未定义的变量时,变量及地址字都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00 X#1 Y#2的执行结果为G00 X0。注意,从这个例子可以看出,所谓“变量值是0”与“变量值是空”是两个完全不同的概念,可以这样理解,“变量值是0”相当于“变量的数值等于0”,而“变量值是空”则意味着“该变量所对应的地址根本就不存在,不生效”。除了用“空”赋值以外,其余情况下“空”与0相同。不能用变量代表的地址符有:程序号O,顺序号N,任选程序段跳转号/。例如以下情况不能使用变量:O#1

    5、1;/O#22 G00 X100.0;N#33 Y200.0;1.2系统变量系统变量用于读和写CNC内部数据,例如,刀具偏置值和当前位置数据。无论用户宏程序功能A或用户宏程序功能B,系统变量的用法都是固定的,而且某些系统变量为只读,用户必须严格按照规定使用。系统变量时自动控制和通用加工程序开发的基础,在这里仅就系统变量的部分(与编程及操作相关性较大)内容加以介绍。 FANUC 0i系统变量一览表变量号 含义 #1000#1015,#1032 接口输入变量 #1100#1115,#1132,#1133 接口输出变量 #10001#10400,#11001#11400 刀具长度补偿值 #12001

    6、#12400,#13001#13400 刀具半径补偿值 #2001#2400 刀具长度与半径补偿值(偏置组数200) #3000 报警 #3001,#3002 时钟 #3003,#3004 循环运行控制 #3005 设定数据(SETTING值) #3006 停止和信息显示 #3007 镜像 #3011,#3012 日期和时间 #3901,#3902 零件数 #4001#4120,#4130 模态信息 #5001#5104 位置信息 #5201#5324 工件坐标系补偿值(工件零点偏置值) #7001#7944 扩展工件坐标系补偿值(工件零点偏置值)下面对各系统变量作详细说明。1.接口(输入/输

    7、出)信号 接口信号时可编程机床控制器(PMC)和用户宏程序之间交换的信号。 FANUC 0i接口信号的系统变量 变量号 功能#1000#1015,#1032 把16位信号从PMC送到用户宏程序。变量#1000#1015用于按位数读取信号,变量#1032用于一次读取一个16位信号#1100#1115,#1132 把16位信号从用户宏程序送到PMC。变量#1100#1115用于按位数写信号,变量#1132用于一次写一个16位信号#1133 变量#1133用于从用户宏程序一次写一个32位的信号送到PMC,注意,#1133的值为从-99999999+99999999只有使用FANUC PMC时,才能使

    8、用上表中的变量。在运算中,系统变量#1000#1015,#1032不能用作左边的项。2.刀具补偿值用系统变量可以读和写刀具补偿值。通过对系统变量赋值,可以修改刀具补偿值。 FANUC 0i刀具补偿存储器C的系统变量补偿号 刀具长度补偿(H) 刀具半径补偿(D) 几何补偿 磨损补偿 几何补偿 磨损补偿1 #11001(#2201) #10001(#2001) #13001 #120012 #11002(#2202) #10002(#2002) #13002 #12002199 #11199(#2399) #10199(#2199) #13199 #12199200 #11200(#2400) #

    9、10200(#2200) #13200 #12200201 #11201 #10201 #13201 #12201399 #11399 #10399 #13399 #12399400 #11400 #10400 #13400 #12400在FANUC 0i系统中,刀具补偿分为几何补偿和磨损补偿,而且长度补偿和半径补偿也是分开的。刀具补偿号可达400个,换句话说,理论上系统支持控制容量高达400的刀库。当刀具补偿号200时(一般情况也的确如此),刀具长度补偿(H)也可使用#2001#2400。例如,假设一把10mm的立铣刀,将其视为10号刀(若在加工中心上,是有非常明确和实在的含义,即应将此铣刀

    10、放置在刀库的10号位上;对于随机换刀的机床,刀号和刀库位置不一定对应;若在数控铣床上,尽管只能人工换刀,但为了使刀具管理和工艺管理更合理、更有序,同样也可效仿加工中心那样操作,即在系统中记录下相关的刀具补偿号和刀具补偿值,唯一的差别不过是没有刀库及自动换刀功能,而需要人工换刀。其刀具长度补偿(H)的两项补偿值在Z方向对刀完成后一般不再需奥特别处理,而编程时主要涉及其刀具半径补偿(D)的两项补偿值,从思路的条理性出发,显然适宜使几何补偿值等于刀具半径,即#13010=5.0,可以视为对刀具的识别,而设置和调整磨损补偿值(#12010)则可视为对尺寸的控制。在应用宏程序编写加工程序时,将会有以下描

    11、述:#20=#13010 把刀具补偿号10(10号刀,10mm的立铣刀)的半径补偿值中的几何补偿值赋值给变量#20,在这里假设#20=5.0。#22=#12010 把刀具补偿号10(10号刀,10mm的立铣刀)的半径补偿值中的磨损补偿值赋值给变量#22,在这里假设#20=1.2。3.模态信息正在处理的当前程序段之前的模态信息可以从系统变量中读出。 FANUC 0i模态信息的系统变量变量号 功能#4001 G00,G01,G02,G03,G33 (组01)#4002 G17,G18,G19 (组02)#4003 G90,G91 (组03)#4004 (组04)#4005 G94,G95 (组05

    12、)#4006 G20,G21 (组06)#4007 G40,G41,G42 (组07)#4008 G43,G44,G49 (组08)#4009 G73,G74,G76,G80G89 (组09)#4010 G98,G99 (组10)#4011 G50,G51 (组11)#4012 G65,G66,G67 (组12)#4013 G96,G97 (组13)#4014 G54G59 (组14)#4015 G61G64 (组15)#4016 G68,G69 (组16)#4022 待定 (组22)#4102 B代码#4107 D代码#4109 F代码#4111 H代码#4113 M代码#4114 顺序号#

    13、4115 程序号#4119 S代码#4120 T代码#4130 P代码(现在选择的附加工件坐标系)注:(1).P代码为当前选择的附加工件坐标系。 (2). 当执行#1=#4002时,在#1中得到的值是17,18或19。 (3).系统变量#4001#4120不能用于运算指令左边的项。 (4).模态信息不能写,只能读。另外如果阅读模态信息指定的系统变量为不能用的G代码时,系统则发出程序错误P/S报警。4当前位置信息当前位置信息不能写,只能读。FANUC 0i当前位置信息的系统变量变量号位置信息相关坐标系移动时的读操作刀具补偿值(长度、半径补偿)#5001#5002#5003#5004X轴程序段终点

    14、位置(ABSIO)Y轴程序段终点位置(ABSIO)Z轴程序段终点位置(ABSIO)4th轴程序段终点位置(ABSIO)工件坐标系可以不考虑刀尖位置(程序指令位置)#5021#5022#5023#5024X轴当前位置(ABSMT)Y轴当前位置(ABSMT)Z轴当前位置(ABSMT)4th轴当前位置(ABSMT)机床坐标系不可以考虑刀具基准点位置(机床坐标)#5041#5042#5043#5044X轴当前位置(ABSOT)Y轴当前位置(ABSOT)Z轴当前位置(ABSOT)4th轴当前位置(ABSOT)工件坐标系不可以考虑刀具基准点位置(与位置的绝对坐标显示相同)#5061#5062#5063#5

    15、064X轴跳跃信号位置(ABSKP)Y轴跳跃信号位置(ABSKP)Z轴跳跃信号位置(ABSKP)4th轴跳跃信号位置(ABSKP)工件坐标系可以已考虑刀具基准点位置#5081X轴刀具长度补偿值不可以已考虑#5082Y轴刀具长度补偿值#5083Z轴刀具长度补偿值#50844th轴刀具长度补偿值#5101X轴伺服位置补偿#5102Y轴伺服位置补偿#5103Z轴伺服位置补偿#51044th轴伺服位置补偿注:(1)、ABSIO:工件坐标系中,前一程序段终点坐标值。 ABSMT:机床坐标系中,当前机床坐标位置。 ABSOT:工件坐标系中,当前坐标位置。 ABSKP:工件坐标系中,G31程序段中跳跃信号有

    16、效的位置。 (2)、在G31(触发功能)程序段中,当触发信号接通时的刀具位置存储在变量#5061#5064中。当G31程序段中的触发信号不接通时,这些变量存储指定程序段的终点值。 (3)、变量#5081#5084所存储的刀具长度补偿值是当前的执行值(即当前正在执行中的程序段的量),不是后面的程序段的处理值。 (4)、移动期间不能读取是由于缓冲(预读)功能的原因,不能读取目标指令值。5 工件坐标系补偿值(工件零点偏移值) 用系统变量可以读和写工件零点偏移值。FANUC 0i工件零点偏移值的系统变量变量号功能#5201#5204第1轴外部工件零点偏移值第4轴外部工件零点偏移值#5221#5224第

    17、1轴G54工件零点偏移值第4轴G54工件零点偏移值#5241#5244第1轴G55工件零点偏移值第4轴G55工件零点偏移值#5261#5264第1轴G56工件零点偏移值第4轴G56工件零点偏移值#5281#5284第1轴G57工件零点偏移值第4轴G57工件零点偏移值#5301#5304第1轴G58工件零点偏移值第4轴G58工件零点偏移值#5321#5324第1轴G59工件零点偏移值第4轴G59工件零点偏移值#7001#7004第1轴工件零点偏移值(G54.1 P1)第4轴工件零点偏移值(G54.1 P1)#7021#7024第1轴工件零点偏移值(G54.1 P2)第4轴工件零点偏移值(G54.

    18、1 P2)#7941#7944第1轴工件零点偏移值(G54.1 P48)第4轴工件零点偏移值(G54.1 P48)1.3算术和逻辑运算下表列出的运算可以在变量中运行。等式右边的表达式可包含常量或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常量赋值。等式左边的变量也可以用表达式赋值。其中算术运算主要是指加、减、乘、除函数等,逻辑运算可以理解为比较运算。FANUC 0i算术和逻辑运算一览表功能格式备注定义、置换#i=#j算术运算加法减法乘法除法#i=#j+#k#i=#j-#k#i=#j*#k#i=#j/#k正弦#i=SIN#j三角函数及反三角函数的数值均以度为单位来指定。反正弦#i=A

    19、SIN#j余弦#i=COS#j反余弦#i=ACOS#j正切#i=TAN#j反正切#i=ATAN#j/#K平方根#i=SQRT#j绝对值#i=ABS#j舍入#i=ROUND#j指数函数#i=EXP#j(自然)对数#i=LN#j上取整#i=FIX#j下取整#i=FUP#j逻辑运算与#iAND#j或#iOR#j异或#iXOR#j从BCD转为BIN#i=BIN#j用于与PMC的信号交换从BIN转为BCD#i=BCD#j有关算术和逻辑运算指令的详细说明请参阅陈海舟著数控铣削加工宏程序及应用实例P15P18。1.4 赋值与变量赋值是指将一个数据赋予一个变量。例如:#1=0,则表示#1的值是0。其中#1代表

    20、变量,“#”是变量符号(注意:根据数控系统的不同,它的表示方法可能有差别),0就是给变量#1赋的值。这里的“=”是赋值符号,起语句定义作用。赋值的规律有:1)赋值号“=”两边内容不能随意互换,左边只能是变量,右边可以使表达式,数值或变量。2)一个赋值语句只能给一个变量赋值。3)可以多次给一个变量赋值,新变量值将取代原变量值(即最后赋的值生效)。4)赋值语句具有运算功能,它的一般形式为:变量=表达式。 在赋值运算中,表达式可以是变量自身与其他数据的运算结果,如:#1=#1+1,则表示#1的值为#1+1,这一点与数学运算是有点不同的。 需要强调的是:“#1=#1+1”形式的表达式可以说是宏程序运行

    21、的“原动力”,任何宏程序几乎都离不开这种类型的赋值运算,而它偏偏与人们头脑中根深蒂固的数学上的等式概念严重偏离,因此对初学者往往造成很大的困扰,但是,如果对计算机高级语言有一定了解的话,对此应更易理解。5)赋值表达式的运算顺序与数学运算顺序相同。6)辅助功能(M代码)的变量有最大值限制,例如,将M30赋值为300显然是不合理的。1.5 转移和循环 在程序中,使用GOTO语句和IF语句可以改变程序的流向。有三种转移和循环操作可供使用。 GOTO语句无条件转移 转移和循环IF语句条件转移,格式为:IFTHEN WHILE语句当时循环1.5.1无条件转移(GOTO语句) 转移(跳转)到标有顺序号n(

    22、即俗称的行号)的程序段。当指定199999以外的顺序号时,会触发P/S报警NO.128。其格式为: GOTO n;n为顺序号(199999) 例如:GOTO 99,即转移至第99行。1.5.2条件转移(IF语句) IF之后指定条件表达式。1.IF【】GOTO n 表示如果指定的条件表达式满足时,则转移(跳转)到标有顺序号n的程序段。如果不满足指定的表达式,则顺序执行下个程序段。2.IF【】THEN 如果指定的条件表达式满足时,则执行预先指定的宏程序语句,而且只执行一个宏程序语句。例如: IF#1 EQ #2 THEN #3=10; 如果#1和#2的值相同,10赋值给#3。 说明:条件表达式,条

    23、件表达式必须包括运算符。运算符插在两个变量中间或变量和常量中间,并且用“【】”封闭。表达式可以替代变量。 运算符,运算符由两个字母组成,见下表,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值。注意,不能使用不等号。运算符含义英文注释EQ等于(=)EQualNE不等于()Not EqualGT大于()Great ThanGE大于或等于()Great Than or EqualLT小于()Less ThanLE小于或等于()Less Than or Equal典型程序示例:下面的程序为计算数值1100的累加总和。O8000;#1=0; 存储和数变量的初值#2=1; 被加数变量的初值

    24、N5 IF【#2 GT 100】GOTO 99; 当被加数大于100时转移到N99#1=#1+#2; 计算和数#2=#2+#1; 下一个被加数GOTO 5; 转到N5N99 M30; 程序结束1.5.3循环(WHILE语句) 在WHILE 后指定一个条件表达式。当指定条件满足时,则执行从DO到END之间的程序。否则,转到END后的程序段。 DO后面的号是指定程序执行范围的标号,标号值为1,2,3。如果使用了1,2,3以外的值,会触发P/S报警NO.126。第二节 用户宏程序功能B2.1用户宏指令(用户宏程序调用指令)用户宏指令是调用用户宏程序的指令,用户宏程序功能B用以下方法调用宏程序: 宏程

    25、序调用: 非模态调用:G65 模态调用:G66,G67 用G代码调用宏程序:G 用M代码调用宏程序:M 用M代码调用子程序:M或M98 用T代码调用子程序首先说明用户宏程序调用(G65)与子程序调用(M98)之间的差别:1)G65可以进行自变量赋值,即指定自变量(数据传送到宏程序),M98则不能。2)当M98程序段包含另一个NC指令(例如,G01 X200.0 M98 P)时,在执行完这种含有非N、P或L的指令后可调用(或转移到)子程序。相反,G65则只能无条件地调用宏程序。3)当M98程序段包含有O、N、P、L以外的地址的NC指令时,(例如,G01 X200.0 M98 P),在单程序段方式

    26、中,可以单程序段停止(即停机)。相反,G65则不行(即不停机)。4)G65该变局部变量的级别。M98不改变局部变量的级别。2.1.1宏程序非模态调用(G65) 当指定G65时,调用以地址P指定的用户宏程序,数据(自变量)能传递到用户宏程序中,指令格式如下所示。 G65 P L ; :要调用的程序号 :重复次数(默认值为1) :传递到宏程序的数据 O0110; O9110; #3=#1+#2; IF#3 GE 180 GOTO 99; G65 P9110 L2 A1.0 B2.0; G00 G91 X#3; N99 M99; M30;1.调用说明1)在G65之后,用地址P指定用户宏程序的程序号。

    27、2)任何自变量前必须指定G65。3)当要求重复时,在地址L后指定从19999的重复次数,省略L值时,默认L值等于1.4)使用自变量指定(赋值),其值被赋值给宏程序中相应的局部变量。2.自变量指定(赋值)自变量指定又可称之为自变量赋值(以下统一采用该叫法),即若要向用户宏程序本体传递数据时,须由自变量赋值来指定,其值可以有符号和小数点,且与地址无关。这里使用的是局部变量(#1#33共33个),与其对应的自变量赋值共有两种类型:自变量赋值:用英文字母后加数值进行赋值,除了G、L、O、N和P之外,其余所有21个英文字母都可以给自变量赋值,每个字母赋值一次,从A-B-C-D-到X-Y-Z,赋值不必按字

    28、母顺序进行,但使用I、J、K时,必须按字母顺序指定(赋值),不赋值的地址可以省略。自变量赋值:与自变量指定赋值类似,也是用英文字母后加数值进行赋值,但只使用了A、B、C和I、J、K这六个字母,具体用法是:除了A、B、C之外,还用10组I、J、K来对自变量进行赋值,在这里I、J、K是分组定义的,同组的I、J、K必须按字母顺序指定,不赋值的地址可以省略。自变量赋值和自变量赋值与用户宏程序本体中局部变量的对应关系见下表:FANUC 0i地址与局部变量的对应关系自变量赋值地址用户宏程序本体中的变量自变量赋值地址自变量赋值地址用户宏程序本体中的变量自变量赋值地址ABC#1#2#3ABCSTU#19#20

    29、#21I6J6K6IJK#4#5#6I1J1K1VWX#22#23#24I7J7K7DEF#7#8#9I2J2K2YZ#25#26#27I8J8K8-H-#10#11#12I3J3K3#28#29#30I9J9K9M-#13#14#15I4J4K4#31#32#33I10J10K10-QR#16#17#18I5J5K5注意:对于自变量赋值,上表中I、J、K的下标用于确定自变量赋值的顺序,在实际编程中不写(也无法写,语法上无法表达)。3.自变量赋值的其他说明(1)自变量赋值、的混合使用,CNC内部自动识别自变量赋值和。赋值和混合赋值,较后赋值的自变量类型有效(以从左到右书写的顺序为准,左为先,右为后)。建议只使用自变量赋值进行赋


    注意事项

    本文(精品课程宏程序编写.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开