库卡焊接库卡机器人示教器详解如何使其不动进行焊接,如何编程?

焊接机器人能够在重复动作中实现稳定焊接,完成批量产品的焊接工作,实现焊接过程的自动化,这归功于焊接机器人的智能控制系统,智能控制系统需要进行编程再开始焊接操作,小编带您了解。
在进行编程之前,我们需要了解好焊接机器人的编程方法,在焊接市场中主要有示教编程、离线编程和自主编程,其中示教编程在现阶段的焊接工作中比较常见,示教编程可以逐点记录焊枪姿态再重现的方法,通过人员根据焊接条件、焊件规格等对程序进行编程,操作工人在这中间充当外部传感的角色。
要选择合理的焊接顺序,一般都是以减小焊接变形、焊枪行走路径长度来制定焊接顺序。而对焊枪空间过渡要求则是移动轨迹较短、平滑、按全。而且,要不断调整焊接机器人各轴位置,合理地确定焊枪相对接头的位置、角度与焊丝伸出长度。
碳钢高速超低飞溅弧焊机器人工作站
焊接机器人编程流程:
1、开机。操作人员打开控制柜上的电源开关在“ON”状态,将运作模式调到“TEACH”→“示教模式下”。
2、焊接程序编辑。进入程序编辑状态:先在主菜单上建立一个新的程序,显示新建程序画面后按[选择]键,编辑机器人要走的轨迹;把焊接机器人移动到离安全位置,周边环境便于作业的位置,输入程序。
3、操作人员握住安全电源开关,接通伺服电源机器人进入可动作状态;用轴操作键将机器人移动到开始位置,按[插补方式]键,把插补方式定为关节插补,输入缓冲显示行中显示关节插补命令。
4、根据不同的工件设置焊接参数。焊接参数的设置不是一步完成的,需要根据施焊质量进行细微调整。
设置合理的焊接编程,可以提高焊接工作的稳定性能,在焊接工作中,能够提高焊接效率,稳定焊接质量,控制企业的成本支出。
返回搜狐,查看更多
责任编辑:
1、KUKA机器人焊接程序解析CELLO序DEFCELL()INIT;初始化(折合)CHECKHOME;检测机器人是否在HOME位置(折合)PTPHOMEVel=100%DEFAULT;移动至lHOME位置AUTOEXTINI;外部自动初始化(折合)LOOP;此处开始LOOP循环Loop_Init();调用初始化程序P00(#EXT_PGNO,#PGNO_GET,DMY,0);请求程序号SWITCHPGNO;此处为SWITCHCASE语句,进行程序号选择CASE1P00(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请求AC_WELD();调用AC车型的焊接程序CASE2P002、(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请求AD_WELD();调用AD车型的焊接程序CASE3P00(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请求AF_WELD();调用AF车型的焊接程序CASE4P00(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请求A68_WELD();调用A68车型的焊接程序CASE5P00(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请求A28_WELD();调用A28车型的焊接程序CASE29P00(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请3、求Tipdress_GunX1();调用修磨程序CASE31P00(#EXT_PGNO,#PGNO_ACKN,DMY,0);复位程序号请求Tipchange_GunX1();调用换帽程序DEFAULT;若请求到的程序号无以上数值,则执行词句,程序即在词句无限循环P00(#EXT_PGNO,#PGNO_FAULT,DMY,0);复位程序号请求ENDSWITCHENDLOOPENDA2_WELD程序DEFA28_WELD()INI;初始化(折合)USERINI;用户初始化(折合);Work_Start(1)A28_Weld1_GunC1();调用焊接程序1(定点焊接)A28_Weld2_GunC14、();调用焊接程序2(空中焊接);Work_End(1)ENDA2_Weld1_GunX1程序DEFA28_Weld1_GunC1()INI;初始化(折合)BASISTECHINI;初始化基坐标参数(折合)USERINI;用户初始化(折合)VALID_HOME();调用子程序,检测当前机器人是否在HOME位置VALID_FRAME();调用子程序,检测坐标是否可用VALID_DATA();调用子程序,参数正确检查PTPHOMEVel=100%PDAT4;移动至lHOME位置SEGMENT=1;机器人进入程序(发给PLC)PTPP59CONTVel=100%PDAT76Tool1:C_GUN1B5、ase5:A28_BASEREQ_CONTINUE();调用“请求继续运行”子程序SEGMENT=50;进入点定焊接程序(发给PLC)$timer1=0;计时器1清零$timer_stop1=FALSE;计时器1开始计时PTPP26CONTVel=100%PDAT37Tool1:C_GUN1Base5:A28_BASEPTPP27CONTVel=100%PDAT38Tool1:C_GUN1Base5:A28_BASEPTPP28CONTVel=100%PDAT39Tool1:C_GUN1Base5:A28_BASEPTPP29CONTVel=100%PDAT40Tool1:CGUN1Base56、:A28BASE(5)(6)(7)此词句为移动指令注:(1)运动方式,可以为PTP(点到点)、LIN(直线)、CIRC(圆弧);(2)目标点的名称,为自动分配,也可以更改;(3)轨迹逼近;若无“CONT”则为精确定位;(4)移动到此目标点的速度;(5)运动数据组,包括加速度、轨迹逼近距离等;(6)工具坐标的编号及名称;(7)基坐标的编号及名称;PTPSG0000010Vel=100%PDAT42ProgNr=81ServoGun=1Cont=CLSOPN(1)(2)(3)(4)(5)(6)(7)Part=3mmForce=3.2kNTool1:CGUN1Base5:A28BASE(9)(10)7、(11)词句为焊接指令注:(1)运动方式,可以为PTP(点到点)、LIN(直线)、CIRC(圆弧);目标点的名称,为自动分配,也可以通过WorkVisual更改;移动到此目标点的速度(PTP时为0100%,LIN和CIRC时为0.0012m/s);移动数据设置的名称,包括加速度、轨迹逼近距离等;调用的焊接规范号,具体内容在焊接控制器内设置,包括焊接电流、加压时间、焊接时间等;伺服焊枪的编号;CLSOPN为合枪前和焊接后逼近,CLS为合枪前逼近,OPN为焊接后逼近;板件的厚度;焊接的压力;工具坐标的编号及名称;基坐标的编号及名称;PTPP31CONTVel=100%PDAT43Tool1:C_G8、UN1Base5:A28_BASEPTPP32CONTVel=100%PDAT44Tool1:C_GUN1Base5:A28_BASEPTPSG0000011Vel=100%PDAT45ProgNr=32ServoGun=1Cont=CLSOPNPart=1.9mmForce=2.5kNTool1:C_GUN1Base5:A28_BASEPTPP33CONTVel=100%PDAT46Tool1:C_GUN1Base5:A28_BASE;ENTERZONE5WITHR2;对下句调用的注释ENTER_ZONE(5);进入干涉区5PTPP34CONTVel=100%PDAT47Tool1:C_GU9、N1Base5:A28_BASEPTPSG0000012Vel=100%PDAT50ProgNr=32ServoGun=1Cont=CLSOPNPart=1.9mmForce=2.5kNTool1:C_GUN1Base5:A28_BASEPTPP37CONTVel=100%PDAT51Tool1:C_GUN1Base5:A28_BASEPTPP40CONTVel=100%PDAT54Tool1:C_GUN1Base5:A28_BASE;LEAVEZONE5WITHR2;对下句调用的注释CLOSE_ZONE(5);离开干涉区5PTPP41CONTVel=100%PDAT55Tool1:C_GUN10、1Base5:A28_BASEPTPP42CONTVel=100%PDAT56Tool1:C_GUN1Base5:A28_BASEPTPSG0000014Vel=100%PDAT58ProgNr=32ServoGun=1Cont=CLSOPNPart=1.9mmForce=2.5kNTool1:C_GUN1Base5:A28_BASEPTPP43CONTVel=100%PDAT59Tool1:C_GUN1Base5:A28_BASEPTPP2CONTVel=100%PDAT2Tool1:C_GUN1Base5:A28_BASEPTPP44CONTVel=100%PDAT60Tool1:C_GU11、N1Base5:A28_BASEPTPP45CONTVel=100%PDAT61Tool1:C_GUN1Base5:A28_BASEPTPSG0000015Vel=100%PDAT66ProgNr=32ServoGun=1Cont=CLSOPNPart=1.9mmForce=2.5kNTool1:C_GUN1Base5:A28_BASEmmForce=2.5PTPP50CONTkNTool1Vel=100:C_GUN1Base5:A28_BASEPDAT67PTPP51CONTVel=100PTPP52CONTVel=100PTPPTPlpd28CONTVel=100SG0000001Vel=12、100%:A28_BASETool1:C_GUN1Tool1:C_GUN1Tool1:C_GUN1mmForce=2.5PTPP50CONTkNTool1Vel=100:C_GUN1Base5:A28_BASEPDAT67PTPP51CONTVel=100PTPP52CONTVel=100PTPPTPlpd28CONTVel=100SG0000001Vel=100%:A28_BASETool1:C_GUN1Tool1:C_GUN1Tool1:C_GUN1%P_OLP3Tool1:C_GUN1Base5:A28_BASEPDAT9ProgNr=32ServoGun=1Cont=CLSOPNPar13、t=1.9PDAT68PDAT69Base5Base5Base5:A28_BASE:A28_BASEPTPlpd30CONTVel=100%P_OLP6Tool1:C_GUN1Base5:A28_BASEPTPP4CONTVel=100%PDAT6Tool1:C_GUN1Base5:A28_BASEPTPH0ME1Vel=100%PDAT17;至1达HOME1位置,此为定义的第二个HOME位(库卡机器人最多可以定义6个HOME位置)$timer_stop1=TRUE;计时器1停止计时REQ_C0NTINUE();调用“请求继续运行”子程序SEGMENT=55;机器人进入空中焊接程序(发给PLC14、)ENDA2_Weld2_GunC1程序DEFA28_Weld2_GunC1()INI;初始化(折合)PTPHOME1Vel=100%PDAT19;home1位置SEGMENT=55;机器人进入空中焊接程序(发给PLC)$timer2=0;计时器2清零$timer_stop2=FALSE;计时器2开始计时PTPP2CONTVel=100%PDAT2Tool1:C_GUN1Base5:A28_BASEPTPp16CONTVel=100%PDAT23Tool1:C_GUN1Base5:A28_BASEPTPP1CONTVel=100%PDAT1Tool1:C_GUN1Base5:A28_BASEP15、TPP3CONTVel=100%PDAT3Tool1:C_GUN1Base5:A28_BASEPTPSG0000001Vel=100%PDAT5ProgNr=32ServoGun=1Cont=CLSOPNPart=1.9mmForce=2.5kNTool1:C_GUN1Base5:A28_BASEPTPP5CONTVel=100%PDAT6Tool1:C_GUN1Base5:A28_BASEPTPSG0000007Vel=100%PDAT24ProgNr=29ServoGun=1Cont=CLSOPNPart=2.1mmForce=2.5kNTool1:C_GUN1Base5:A28_BASE16、PTPP6CONTVel=100%PDAT7Tool1:C_GUN1Base5:A28_BASEPTPSG0000008Vel=100%PDAT25ProgNr=90ServoGun=1Cont=CLSOPNPart=4.1mmForce=3.3kNTool1:C_GUN1Base5:A28_BASEPTPSG0000009Vel=100%PDAT26ProgNr=90ServoGun=1Cont=CLSOPNPart=4.1mmForce=3.3kNTool1:C_GUN1Base5:A28_BASEPTPP8CONTVel=100%PDAT9Tool1:C_GUN1Base5:A28_BA17、SEPTPp15CONTVel=100%PDAT22Tool1:C_GUN1Base5:A28_BASEPTPp15CONTVel=100%PTPp17CONTVel=100%PDAT27Tool1:C_GUN1Base5:A28_BASEPTPp17CONTVel=100%PDAT27Tool1:C_GUN1Base5:A28_BASEPTPp18CONTVel=100%PDAT28Tool1:C_GUN1Base5:A28_BASE$timer_stop2=TRUE;计时器2停止计时PTPp18CONTVel=100REQ_CONTINUE();调用“请求继续运行”子程序SEGMENT=618、2;机器人准备进入下循环的焊接SEGMENT=63;机器人准备进入下循环的焊接PTPHOMEVel=100%DEFAULTENDTipDress_GunC1程序DEFTipDress_GunC1()INI;初始化(折合)Work_Start(7);调用子程序,工作启动PTPHOMEVel=100%DEFAULT;原点位置SEGMENT=4;机器人进入修磨程序(发给PLC)PTPP1CONTVel=100%PDAT1Tool1:CGUN1Base0PTPP3CONTVel=100%PDAT3Tool1:CGUN1Base0PTPP2CONTVel=100%PDAT2Tool1:CGUN1Base19、0Full_Speed();调用子程序,设置机器人速度为全速LINP11CONTVel=2m/sCPDAT5Tool1:C_GUN1Base0TD_Start();调用子程序,启动修磨器转动TD_TIME=1.5;设置修磨时间为1.5秒LINTIPDRESSVel=2m/sCPDAT4TipDressProgNr=1ServoGun=1Part=5mmForce=1.5kNTool1:C_GUN1Base0;修磨位置TD_Stop();调用子程序,停止修磨器转动LINP12CONTVel=2m/sCPDAT6Tool1:C_GUN1Base0LINP6Vel=2m/sCPDAT3Tool1:C20、_GUN1Base0PTPP7CONTVel=100%PDAT5Tool1:C_GUN1Base0INITServoGun=1Same;修磨后初始化电极,进行补偿Previous_Speed();调用子程序,使机器人从100%的速度返回到原来设置的速度PTPP8CONTVel=100%PDAT6Tool1:C_GUN1Base0PTPP9CONTVel=100%PDAT7Tool1:C_GUN1Base0PTPHOMEVel=100%DEFAULT;回至U原点位置OUT47TipDress_Comp1State=TRUE;置位修磨完成信号Work_END(7);调用子程序,工作终止OUT47T21、ipDress_Comp1State=FALSE;复位修磨完成信号ENDTipChange_GunC1程序DEFTipChange_GunC1()INI;初始化(折合)Work_Start(8);调用子程序,工作启动PTPHOMEVel=100%DEFAULT;原点位置SEGMENT=2;机器人进入维修程序(发给PLC)PTPP7CONTVel=100%PDAT6Tool1:C_GUN1Base0PTPP8CONTVel=100%PDAT7Tool1:C_GUN1Base0PTPP9CONTVel=100%PDAT8Tool1:C_GUN1Base0OUT38Service_PositionS22、tate=TRUE;置位服务位置信号REQ_CONTINUE();调用“请求继续运行”子程序OUT38Service_PositionState=FALSE;复位服务位置信号IF$IN40THEN;如果“更换电极帽完成”信号存在,则继续执行PTPP13CONTVel=100%PDAT12Tool1:C_GUN1Base0Full_Speed();调用子程序,设置机器人速度为全速INITServoGun=1New;新电极帽的初始化TC_Reset();调用子程序,电极复位Zero_Point_Copy();调用子程序,判断电极是否达到最大修磨量PTPP5CONTVel=100%PDAT5Tool23、1:C_GUN1Base0LINP17CONTVel=2m/sCPDAT2Tool1:C_GUN1Base0TD_Start();调用子程序,启动修磨器转动mmTD_TIME=1.5;设置修磨时间为1.5秒mmLINTIPDRESSVel=2m/sCPDAT4TipDressProgNr=1ServoGun=1Part=5Force=1.5kNTool1:C_GUN1Base0LINP16CONTVel=2m/sCPDAT1Tool1:C_GUN1Base0TD_Stop();调用子程序,停止修磨器转动LINP6Vel=2m/sCPDAT0Tool1:C_GUN1Base0INITServoG24、un=1Same;修磨后初始化电极,进行补偿Previous_Speed();调用子程序,使机器人从100%的速度返回到原来设置的速度ENDIFSEGMENT=3;机器人退出修磨程序(发给PLC)PTPP11CONTVel=100%PDAT10Tool1:C_GUN1Base0PTPP12CONTVel=100%PDAT11Tool1:C_GUN1Base0PTPHOMEVel=100%DEFAULTWork_END(8);调用子程序,工作停止ENDDEFLSB010_WE_L2_data()ENDVALID_HOME;检测HOME位的数据globalDEFVALID_HOME()E6AXIS25、VALID_HOMEVALID_HOME=A1-46.5159492,A2-122.549797,A3148.406601,A40.00109880499,A564.1413269,A6-53.1286888,E1-97.7747269,E20.0,E30.0,E40.0,E50.0,E60.0;可用的HOME位的坐标值WAITFORXHOME.A1=VALID_HOME.A1WAITFORXHOME.A2=VALID_HOME.A2WAITFORXHOME.A3=VALID_HOME.A3WAITFORXHOME.A4=VALID_HOME.A4WAITFORXHOME.A5=VALID_H26、OME.A5WAITFORXHOME.A6=VALID_HOME.A6;把现在的HOME位置与可用的HOME位置进行比较(现在的HOME位置保存在Config.dat中)ENDVALID_FRAME;检测坐标系数据(Root,Base,Tool)globalDEFVALID_FRAME()FRAMEVALID_ROOTFRAMEVALID_BASE32FRAMEVALID_TOOL16VALID_ROOT=X0.0,Y0.0,Z0.0,A0.0,B0.0,C0.0WAITFOR$ROBROOT.X=VALID_ROOT.XWAITFOR$ROBROOT.Y=VALID_ROOT.YWAITFO27、R$ROBROOT.Z=VALID_ROOT.ZWAITFOR$ROBROOT.A=VALID_ROOT.AWAITFOR$ROBROOT.B=VALID_ROOT.BWAITFOR$ROBROOT.C=VALID_ROOT.C;把现在的世界坐标位置与可用的坐标位置进行比较(现在的世界坐标位置保存在Config.dat中)VALID_TOOL1=X-200.0,Y0.00999999978,Z919.0,A180.0,B0.0,C180.0WAITFORTOOL_DATA1.X=VALID_TOOL1.XWAITFORTOOL_DATA1.Y=VALID_TOOL1.YWAITFORTOOL_28、DATA1.Z=VALID_TOOL1.ZWAITFORTOOL_DATA1.A=VALID_TOOL1.AWAITFORTOOL_DATA1.B=VALID_TOOL1.BWAITFORTOOL_DATA1.C=VALID_TOOL1.C;把现在的工具坐标位置与可用的坐标位置进行比较(现在的工具坐标位置保存在Config.dat中)WAITFORTOOL_TYPE1=#BASEVALID_BASE1=X1277.27405,Y-439.797485,Z632.609924,A90.0454025,B0.0703999996,C89.867897WAITFORBASE_DATA1.X=VALI29、D_BASE1.XWAITFORBASE_DATA1.Y=VALID_BASE1.YWAITFORBASE_DATA1.Z=VALID_BASE1.ZWAITFORBASE_DATA1.A=VALID_BASE1.AWAITFORBASE_DATA1.B=VALID_BASE1.BWAITFORBASE_DATA1.C=VALID_BASE1.C;把现在的基坐标位置与可用的坐标位置进行比较(现在的基坐标位置保存在Config.dat中)WAITFORBASE_TYPE1=#BASEENDVALID_DATA;检测可用的数据(此数据为系统配置,不作详细解析)WAITFOREG_NON_KUKA_30、DRESS=TRUEWAITFOR$COLL_ENABLECAV=TRUEWAITFOR$CHCK_MOVENA=TRUEWAITFORCHECK_HOME=TRUEWAITFOR$OUT37=TRUEWAITFORPGNO_TYPE=1WAITFORREFLECT_PROG_NR=1WAITFORPGNO_FBIT=4WAITFORPGNO_FBIT_REFL=4WAITFORPGNO_LENGTH=6WAITFORPGNO_REQ=10WAITFORPGNO_VALID=10WAITFORAPPL_RUN=12WAITFOREG_GUN_TYP1=2WAITFOREG_DIRECTION_31、OF_TIPWEARWAITFOREG_TIP_CORRECTION=TRUEWAITFOREG_PART_CONTROL=TRUEWAITFOREG_EQ_ACTIVE=TRUEglobalDEFVALID_DATA()1=#PZIF$EXTAND(NOT$IN15)THENWAITFOREG_NO_PART_IN=1026ENDIFIF$EXTAND(NOT$IN42)THENWAITFOREG_TIMER_TYP=2ENDIFENDCHECK_HOME1;检测可用的位置globalDEFCHECK_HOME1()E6AXISVALID_HOME1VALID_HOME1=A1-43.68032、0194,A2-123.675797,A3147.271103,A40.00200690911,A566.4055862,A6-56.4421997,E1-97.7750015,E20.0,E30.0,E40.0,E50.0,E60.0;可用的位置WAITFORXHOME1.A1=VALID_HOME1.A1WAITFORXHOME1.A2=VALID_HOME1.A2WAITFORXHOME1.A3=VALID_HOME1.A3WAITFORXHOME1.A4=VALID_HOME1.A4WAITFORXHOME1.A5=VALID_HOME1.A5WAITFORXHOME1.A6=VALI33、D_HOME1.A6;把现在的HOME1位置与可用的HOME1位置进行比较(现在的HOME1位置保存在Config.dat中)WAITFOR$OUT39=TRUE;等待HOME1位置的输出信号ENDVALID_WEAR;检测电极磨损数据globalDEFVALID_WEAR()IF(EG_WEAR1=16)OR(EG_WEAR_FLEX1=8)OR(EG_WEAR_FIX1=8)THEN$cycflag4=true;置位循环标识位4ELSE$cycflag4=falseENDIFIFEG_WORN1OR$CYCFLAG4THEN$OUT51=TRUE;如果达到最大修磨量或循环标识位4为1,则置34、位“请求换电极帽1”信号ELSE$OUT51=FALSEENDIFIF(EG_WEAR2=16)OR(EG_WEAR_FLEX2=8)OR(EG_WEAR_FIX2=8)THEN$cycflag9=true;置位循环标识位9ELSE$cycflag9=falseENDIFIFEG_WORN2OR$CYCFLAG9THEN$OUT52=TRUE;如果达到最大修磨量或循环标识位9为1,则置位“请求换电极帽2”信号ELSE$OUT52=FALSEENDIFENDVALID_TIP;检测可用的电极globalDEFVALID_TIP()IF(Wear_copy1=4)THENMsgNotify(WRO35、NGTIP,PLSCHECK!);如果电极修磨量=4,则在示教器上显示出报警信息WAITFOR(Wear_copy14THEN$OUT201=TRUE;枪1电极达到最大修磨量ELSE$OUT201=FALSEENDIFIFWear_Copy24THEN$OUT202=TRUE;枪2电极达到最大修磨量ELSE$OUT202=FALSEENDIFENDCheck_Tip;检测修磨或换帽请求globalDEFCheck_Tip(index:IN)INTindexSWITCHindexCASE1IF$IN47THEN;Tipdress1()ENDIFCASE2IF$IN48THEN;Tipdress236、()ENDIFCASE3IF$IN40THEN;Tipchange1()ENDIFCASE4IF$IN41THEN;Tipchange2()ENDIFENDSWITCHENDTool_Number;激活工具号globalDEFFCTINTTool_Number()thenDECLINTtool_numberthenif($in97andnot$in98and$in99)if(not$in115and$in116)thenwaitforeg_extax_active=1waitfor$ASYNC_EX_AX_DECOUPLE=B0010tool_number=1;激活工具号1elseif($in37、115andnot$in116)thenwaitforeg_extax_active=2waitfor$ASYNC_EX_AX_DECOUPLE=B0001tool_number=2;激活工具号2endifendifelsewaitfor(not$in97and$in98andnot$in99and$in115and$in116)waitfor$ASYNC_EX_AX_DECOUPLE=B0011tool_number=10;激活工具号10endifwaitfor(tool_number=1)or(tool_number=2)or(tool_number=10)returntool_numbe38、rENDFCTChange_Gun;切换焊枪;GetDesiredGunglobalDEFChange_Gun(index:IN)INTindexSWITCHindexCASE1IFTool_Number()1THENIFTool_Number()=2THENWAITFOR$OUT37waitfor$in27;drop_gun2();调用子程序,放下枪2;pick_gun1();调用子程序,抓起枪1ENDIFENDIFWAITFORTool_Number()=1CASE2IFTool_Number()2THENIFTool_Number()=1THENWAITFOR$OUT37waitfor$39、in27;drop_gun1();调用子程序,放下枪1;pick_gun2();调用子程序,抓起枪2ENDIFENDIFWAITFORTool_Number()=2ENDSWITCHENDCheck_with_Gun;检测是否是需要的焊枪globalDEFCheck_with_Gun(index:IN)INTindexSWITCHindexCASE1WAITFORTool_Number()=1CASE2WAITFORTool_Number()=2CASE10WAITFORTool_Number()=10ENDSWITCHENDOpen_Cover;打开防尘罩globalDEFOpen_Cove40、r(index:IN)INTindexSWITCHindexCASE1$OUT113=FALSE$OUT114=TRUECASE2$OUT114=FALSE$OUT113=TRUEENDSWITCHENDOpen_Cover_Check;打开防尘罩检测globalDEFOpen_Cover_Check(index:IN)INTindexSWITCHindexCASE1WAITFOR(NOT$IN113AND$IN114)$OUT113=FALSE$OUT114=FALSECASE2WAITFOR($IN113ANDNOT$IN114)$OUT113=FALSE$OUT114=FALSEENDS41、WITCHENDTool_in_Stand;工具在架台上globalDEFTool_in_Stand(index:IN)INTindexSWITCHindexCASE1WAITFOR$IN115CASE2WAITFOR$IN116ENDSWITCHENDStand_Empty;架台上无工具globalDEFStand_Empty(index:IN)INTindexSWITCHindexCASE1WAITFORNOT$IN115CASE2WAITFORNOT$IN116ENDSWITCHENDTool_Present;检测机器人上携带着工具globalDEFTool_Present()WAITF42、OR$IN99ENDTool_Unpresent;检测机器人上没携带着工具globalDEFTool_Unpresent()WAITFORNOT$IN99ENDTool_Lock;工具锁紧globalDEFTool_Lock()waitfor$in99$OUT97=FALSE$OUT98=TRUEWAITFOR($IN97ANDNOT$IN98AND$IN99)$OUT97=FALSE$OUT98=FALSEENDTool_Unlock;工具解锁globalDEFTool_Unlock()$OUT98=FALSE$OUT97=TRUEWAITFOR(NOT$IN97AND$IN98)$OUT943、7=FALSE$OUT98=FALSEENDTool_Lock_Check;工具锁紧检测globalDEFTool_Lock_Check()WAITFOR($IN97ANDNOT$IN98AND$IN99)ENDTool_Unlock_Check;工具解锁检测globalDEFTool_Unlock_Check()WAITFOR(NOT$IN97AND$IN98)ENDClose_Water;关闭循环水globalDEFClose_Water()$OUT45=trueENDOpen_Water;打开循环水globalDEFOpen_Water()$OUT116=trueENDWait_Wate44、r_OK;等待水流正常globalDEFWait_Water_OK()waitfor$in50$OUT116=false$OUT45=falseENDWait_Gate_OK;等待安全门正常globalDEFWait_Gate_OK()waitfor$in27$OUT27=falseENDDEFLibrary()ENDInit;机器人初始化globalDEFInit()SEGMENT=0VALID_HOME()VALID_FRAME()VALID_DATA()VALID_WEAR()$OUT17=TRUE$OUT18=TRUE$OUT19=TRUE$OUT20=TRUE$OUT21=TRUE$45、OUT22=TRUE$OUT23=TRUE$OUT24=TRUE$OUT25=TRUE$OUT26=TRUE$OUT27=TRUE$OUT28=TRUE$OUTEG_NOCURRENT_OUTEG_EXTAX_ACTIVE=TRUE$OUTEG_Timer_Ready_Out=TRUEPULSE($OUTEG_QUIT_OUTEG_EXTAX_ACTIVE,TRUE,0.5)$OUT29=FALSE$OUT38=FALSE$OUT47=FALSE$OUT79=FALSE$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVE=FALSE$OUTDeposition46、_Out=FALSEAPPL_RUN_FLAG=FALSETD_HALT_FLAG=FALSEFull_Speed_REQ=FALSEENDLoop_Init;LOOP循环初始化globalDEFLoop_Init()VALID_HOME()VALID_FRAME()VALID_DATA()VALID_WEAR()SEGMENT=0$OUT38=FALSE$OUT47=FALSE$OUT79=FALSE$OUTDeposition_Out=FALSEAPPL_RUN_FLAG=FALSETD_HALT_FLAG=FALSEFull_Speed_REQ=FALSEIF$INEG_ERROR_IN47、EG_EXTAX_ACTIVEOR$INEG_ALARM_INORNOT$INEG_TIMER_READY_INEG_EXTAX_ACTIVETHENPULSE($OUTEG_QUIT_OUTEG_EXTAX_ACTIVE,TRUE,0.5)ENDIFIF$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVEAND$INEG_TIMER_READY_INEG_EXTAX_ACTIVETHEN$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVE=FALSEENDIFENDWork_Start;工作启动globalDEFWork_S48、tart(Job:IN)INTJob;定义Job为整型变量SWITCHJob;进入SWITCHCASE循环CASE1,2,5VALID_HOME()VALID_FRAME()VALID_DATA()VALID_WEAR()VALID_TIP()I1=0;复位枪1的循环焊接计数$CYCFLAG1=FALSE;复位循环标识器116=0;复位枪2的循环焊接计数$CYCFLAG6=FALSE;复位循环标识器6$OUT25=FALSE$OUT26=FALSE$Timer_Stop1=TRUE;计时器1停止计时$Timer1=0;计时器1清零$Timer_Stop1=FALSE;计时器1开始计数CASE749、SWITCH$ASYNC_EX_AX_DECOUPLECASEB0000,B0010WAITFORNOT$OUT51CASEB0001WAITFORNOT$OUT52ENDSWITCH;此处为嵌套的SWITCHCASE循环VALID_HOME()VALID_FRAME()VALID_DATA()VALID_WEAR()VALID_TIP()Before_TW()$OUT47=FALSE$OUT48=FALSECASE8VALID_HOME()VALID_FRAME()VALID_DATA()VALID_WEAR()VALID_TIP()Before_TW()$OUT40=FALSE$OUT4150、=FALSEENDSWITCHENDWork_End;工作结束globalDEFWork_End(Job:IN)DECLSTATE_TSTATEINTOFFSETINTJobCHARActNr10SWITCHJobCASE1,2,5WAITFOR$OUT37=TRUE;等待HOME位置信号$Timer_Stop1=TRUE;计时器1停止计时IF($EXTANDNOT$INDry_Run_InANDNOT$INWeld_Off_In)THENSWITCH$ASYNC_EX_AX_DECOUPLECASEB0000ifI1=Gun1_SpotJobthen$cycflag1=trueelse$cy51、cflag1=falseendififI2=TD1_Spotthen$cycflag2=trueelse$cycflag2=falseendififI3=TC1_Spotthen$cycflag3=trueelse$cycflag3=falseendifIFNOT$CYCFLAG1THEN$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVE=TRUEOFFSET=0SWRITE(ActNr,STATE,OFFSET,%d,Gun1_SpotJob-I1)MsgDialog(Answer,Warnning%1SpotWithoutWeld-EndSignal,S52、etCycle-CompleteSignaltoPLC?,GAMC,ActNr,NO,YES)WAITFOR(ANSWER=1)OR$INEG_QUIT_REPEAT_INANSWER=0$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVE=FALSEENDIFIF$CYCFLAG2THEN$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVE=TRUEOFFSET=0SWRITE(ActNr,STATE,OFFSET,%d,TD1_Spot-I2)MsgDialog(Answer,Warnning%1SpotOutofTD1_53、SpotSetting!PleaseChecktheGun1TipDress!,GAMC,ActNr,NO,YES)WAITFOR(ANSWER=1)OR$INEG_QUIT_REPEAT_INANSWER=0$OUTEG_WELD_ERROR_DIALOG_OUTEG_EXTAX_ACTIVE=FALSEENDIFCASEB0010,B0001ifI1=Gun1_SpotJobthen$cycflag1=trueelse$cycflag1=falseendififI2=TD1_Spotthen$cycflag2=trueelse$cycflag2=falseendififI3=TC1_Spotthen$cycflag3=trueelse$cycflag3=falseendififI6=Gun2_SpotJobthen$cycflag6=trueelse$cycflag6=falseendififI7=TD2_Spotthen$cycflag7=trueelse$cycflag7=falseendififI8=TC2_Spotthen$cycflag8=trueelse$cycflag8=falseendifIF(NOT$CYCFLAG1)OR(NOT$CYCFLAG6)THEN$O

我要回帖

更多关于 库卡机器人示教器详解 的文章

 

随机推荐