东风本田汽车零部件有限公司论文姓名:张智平工号:0942论文题目:FANUC系统宏程序在机械手程序中的应用部门:制造一部设备科发动机保全系曲轴班专业:机电一体化二O一五年十二月摘要随着公司规模日益发展状大,公司对设备自动化生产的需求也越来越强,目前发动机曲轴的设备大部分已完成加装机械手,实现了自动化生产。从而提高了生产效率,降低了生产成本,为公司今后的发展奠定了基础。文中主要阐述了FANUC系统宏程序宏变量在机械手编程或与机加设备联机中的灵活应用,使用宏程序后程序量减少、结构简单易改,与机床联机可靠安全。关键字:自动化机械手FANUC宏程序宏变量引言公司现有设备主要靠人工手动装夹零件,不仅存在很大安全隐患、劳动强度大,还严重影响生产效率,将非自动生产线实现自动化生产迫在眉睫。现主要采用加装桁架机械手、辅助输料台的方式,将各工序链接,由机械手、机器人搬运零件实现上下料。桁架机械手根据最快实际运行速度以及加工节拍的情况,一台桁架机械手可以给多台设备服务上下料。单条生产线一般都生产多个机种零件,因零件尺寸的差异,造成机械手装夹各机种零件的位置也不同,如果要修改某一位置,在程序中查找很困难也易出错;机械手给同工序多台设备服务时,遇到其一台设备故障需屏蔽跳过,或其中一台设备已加工完需优先加工,一般程序编写很复杂难实现;与机床联机信号的交互,PMC若处理不好逻辑关系,容易造成机械手误上下料发生严重的撞机事故。灵活应用FANUC宏程序编程,使程序编程简单易修改、方便品种切换;轻易实现设备优先加工、屏蔽故障设备;与设备联机运行安全可靠,提高了生产效率。一.宏程序基本知识1.宏程序的概念宏程序就是相比普通程序可以使用变量进行算术运算,逻辑运算和函数的运算,此外宏程序还提供了循环语名、分支语名和子程序调用语句,利于编制各种复杂的零件加工程序,减少手工进行繁琐的数值计算,以及精减程序量,简化程序。2.宏程序与普通程序的对比一般意义上所讲的数控指令其实是指ISO代码指令编程,即每个代码的功能是固定的,由系统生产厂家开发,使用者只需按照规定编程即可。但有时候这些指令满足不了用户的需要,系统因此提供了用户宏程序功能,使用户可以对数控系统进行一定的功能扩展。用户宏程序与普通程序存在一定的区别,表一是用户宏程序与普通程序的简要对比。项目程序普通程序宏程序一只能使用常量可以使用变量,可以给变量赋值二常量之间不可以运算变量之间可以运算三程序只能顺序执行不能跳转程序运行可以跳转表一二.宏程序的变量1.宏变量的表示宏程序的变量是用变量符号“#”和后面的变量号指定,例如:#2、#100;普通加工程序直接用数值指定G代码和移动距离,例如:G01X100.0;使用宏程序时,数值可以直接指定或用变量指定,例如:#1=#2+100若#2=350G01X#1F80相当于G01X450F80表达式可以直接指定变量号,这时表达式必需封闭在括号中,例如:#1[#2+#41-15]若#2=4,#41=16#1[#2+#41-15]相当于#152.变量的类型变量根据变量号可为分四种类型,如表二变量号变量类型功能#0空变量该变量总是为空,没有值可以赋给此变量。#1~#33局部变量局部变量只能用在宏程序中存储数据,例如,运算结果。变量#1~#33属断电非保持型。#100~#199#500~#999公共变量多个宏程序中共同使用的变量,变量#100~#199属断电非保持型,变量#500~#999属断电保持型。#1000以上系统变量用于读和写CNC系统的接口、刀补等各种数据变量从功能上主要分两种,即:系统变量,用于系统内部运算时各种数据的存储。用户变量,包括局部变量和公共变量,用户可以单独使用。3.系统变量系统变量用于读和写NC内部数据,例如:刀具偏置值和当前位置数据。这里仅介绍机械手编程相关性较大的系统变量部分。表三为部分系统变量变量号含义#1000~#1015外部输入信号状态写入到宏程序变量#1100~#1115宏程序变量值读出给外部输出信号#3000给CNC设置报警表三宏程序与PMC之间,通过变量#1000~#1015、#1100~#1115,可以相互进行信号的读写。如表四表四变量#1000~#1015,可以通过PMC的G信号将机床外部信号状态写入相对应的变量内,变量值为0或1,变量#1000~#1015相对应的G信号如表五表五以上PMC中,其它信号X1.0X2.0值为1,R0.3值为0,驱动线圈G信号G54.2值为1,此时相对应的变量#1002值就变为1。变量#1100~#1115,可以通过PMC的F信号将变量内的变量值0或1读出给机床外部输出信号,如表六表六在以上PMC中,当变量#1106赋值为1,此时相对应PMC的F信号F54.6值就变为1,其它R5.0值为1,R6.1值为0,就能驱动线圈Y1.0值为1。变量#3000,给CNC设置报警。当给变量#3000赋0~200的值,CNC将变成报警状态,机床自动运行停止。在表达式()内可以写上26个字符以内的报警信息,在NC系统报警画面上,就会显示报警号与报警信息。其中报警号为3000与#3000中的值相加的和,报警信息是表达式()内的字符。例#3000=1(Doornotcloseerror),CNC系统报警画面显示:报警3001DoorNotcloseerror.4.宏程序的控制指令在加工和操作作业中经常有很多重复的动作,如果使用转移和循环指令可以缩短宏程序。在程序中有三种转移和循环指令,GOTO语句(无条件转移),IF语句(条件转移),WHILE语句(循环),根据加工实际情况选择合适的一种语句。GOTO语句(无条件转移),语句格式为GOTOn,n为1-9999的顺序号,如果执行此语句程序,则无条件的转移到被标有顺序号N程序段。例:IF语句(条件转移),语句格式为IF[条件表达式]GOTOn,如果指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足,执行下个程序段。条件表达式的书写方法,[○比较运算符□],在比较运算符的两侧是进行比较的两个数值或者是式子,常数。比较运算符有以下几种:用IF语句程序编程计算1-10的总和例:O1000;#1=0;(总和数变量的初始值)#2=1;(被加数变量的初始值)N1IF[#2GT10]GOTO2;(当被加数大于10时程序转移到程序段)#1=#1+#2;(计算和数)#2=#2+#1;(下一个被加数)GOTO1;(转移到程序段1)N2M30;(程序结束)WHILE语句(循环),语句格式为WHILE[条件表达式]Dom;ENDm;m为数字是用表明循环执行范围识别号。如果指定的条件表达式满足时,程序执行从DOm到ENDm之间的的程序段;如果指定的条件表达式不成满足时,则执行ENDm之后的程序段。用WHILE语句程序编程计算1-10的总和例:O2000;#1=0;(总和数变量的初始值)#2=1;(被加数变量的初始值)WHILE[#2LE10]DO4;(#2值≤10时程序循环DO4到END4之间程序段)#1=#1+#2;(计算和数)#2=#2+#1;(下一个被加数)END4;(循环程序段结束符)M30;(程序结束)三.机械手应用宏程序事例1.桁架机械手搬运说明下图机床1与机床2是同工序,共用一个上料台和一个下料台,位置A、B、C分别是装料手水平横移的位置,位置a、b、c分别是装料手下降的纵向位置;位置D、E、F分别是卸料手水平横移的位置,位置d、e、f分别是卸料手下降的纵向位置。机械手会根据机床实际加工情况,如机床换刀、故障处理等,判断优先给机床1或机床2上下料。搬运不同品种的工件,机械手横向与纵向行走的位置都不同。桁架机械手与机床属不同厂家,为了安全可靠的运行,机械手与各机床之间实时进行信号交换。2.机械手位置设定机械手搬运多个品种工件,所需的横向、纵向位置都不同,因此在程序中位置坐标多了很容易混淆,需要调试修改某个位置时易出错,造成机械手误走发生严重的撞机事故。利用宏程序宏变量#500~#999分配给各品种所需的位置作为位置存储器,需要调试修改某个位置,只需在变量表内找到对应的变量号修改值,简单又方便。若机械手设置两个机种,变量分配如下表:3.机械手机种切换程序设计给机种A、机种B分别编辑程序段,使用IF语句(条件转移)编程,条件表达式用来判断当前机种,当条件满足后程序跳转到相应机种的程序段。将变量#1013用作机种A,机床品种切换开关拔到机种A,使PMC输入信号X1.0置1,编程PMC使X1.0为正逻辑时变量相对应的G55.5置1,在宏程序中变量#1013被赋值为1,条件表达式#1EQ#1013条件满足,程序跳转到相应程序段。PMC编程如下:程序如下O0010(程序号)N400IF[#1EQ#1013]GOTO100;(当机种A条件满足跳转到N100程序段)IF[#1EQ#1014]GOTO200;(当机种B条件满足跳转到N200程序段)GOTO400;(当选择机种不是A或B,程序无条件转移到N400程序段)N100G90G92X0.W0.Z0.;(机种A程序段N100)G01X#500.F70000.;N500M98P0001;…(中间程序省略)GOTO500;(程序无条件跳转到程序段N500,机种A程序循环执行)N200G90G92X0.W0.Z0.;(机种B程序段N200)G01X#500.F70000.;N600M98P0001;…(中间程序省略)GOTO600;(程序无条件跳转到程序段N600,机种B程序循环执行)M99;4.机械手与机床信号交互机械手与机床属不同厂家制造,在实际生产中要求机械手与机床能协调一致,安全可靠的运行,那么必需对这两家设备的联机,相关信号进行交互处理。而且使用的NC系统、可编程控制器也各有不同,所以联机的方式方法都各有区别。这里举例说明的机械手与机床都属于FANUC系统,使用PMC外部输入输出模块进行信号的交互。其中各别信号逻辑的处理用宏程序编程,使用宏程序编程处理这些信号,显得非常简单且可靠。机械手给机床上下料过程中,是不允许机床有动作,为了防止发严重撞机事故,机械手给机床一个正逻辑的信号,机床接受到这个信号后,禁止机床所有动作运行,这个信号定义为机械手无干涉信号,分配变量#1106,对应PMC信号F54.6。机械手给机床先取料再装料,装完料后给机床发一个正逻辑的信号,机床接受到这个信号后,机床自动启动运行,这个信号定义为装料完成信号,分配变量#1105,对应PMC信号F54.5。具体应用如下:X#506.;(机械手水平移到机床取料上方位置)#1106=1;(F54.6置1机械手无干涉信号Y0.6正逻辑给机床)G00W#606.;(卸料手下降到取料位置)G04P20;(卸料手停顿2秒手爪夹紧)#1101=1;(允许W轴上使能开)M98P0004;(调用子程序P0004,判断卸料手是否抓取了零件)W0.;(卸料手上升回原位)…(中程序省略)Z0.;(装料手上升回原位)#1106=0;(给机床机械手无干涉信号复位)#1105=1;(F54.5置1装料完成信号Y0.5正逻辑给机床自动运行启动)G01X#511.F70000;(机械手水平移到下料台位置)#1105=0;(给机床装料完成启动信号复位)PMC处理如下:5.联机中的报警机械手给机床在上下料过程中,检测出与机床交互异常,用宏程序编辑报警产生非常方便好用。如在机械手装料时,防止机床加工区的工件实际未取走,又装料造成零件相叠加的事故,在装料前检测机床加工区有无工件,当检测无工件允许正常装料,当检测有工件,说明卸料手取料失效未取走,不允许装料,使产生异常报警。检测工件有无信号为X4.0,分配变量#1000,对应PMC信号G54.0,PMC编程如下:宏程序编程如下:O0005(子程序O0005)IF[1NE#1000]GOTO2;(检测有无工件,条件满足转移到程序段N2)#3000=1(WORKERROR);(检测有工件NC画面出现3001WORKERROR报警)N2M99;(程序段N2