机械手自动化程序20170915
机械手自动化程序
1、主程序main&ACCESS RVP1&REL 1&PARAM DISKPATH = KRC:\R1\ProgramDEF Pro_main( )INT l;FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI)GLOBAL INTERRUPT DECL 4 WHEN $IN[10]==FALSE DO Itrpt1 ()GLOBAL INTERRUPT DECL 5 WHEN $IN[11]==FALSE DO Itrpt1 ()INTERRUPT DECL 6 WHEN $IN[9]==TRUE DO Itrpt1 ();地轨异常进入中断INTERRUPT ON 6;开地轨监视中断6IF NOT Gripper_ChkStatus(1,"C") THENGripper_SetStatus(1,"O")Part0InLeft = FALSEPart2InLeft = FALSEENDIFIF NOT Gripper_ChkStatus(2,"C") THENGripper_SetStatus(2,"O")Part1InRight = FALSEENDIFFOR l = 1 TO 14$OUT[l] = FALSEENDFOR;此循环语句在初始化时把所有端口清零复位。
IF $IN[5] THENMachine1_OnlyDrop = TRUEMachine2_OnlyDrop = TRUE;机台1有首件信号时,机台1与机台2第一次响应只放标志位置1 ELSEMachine1_OnlyDrop = FALSEMachine2_OnlyDrop = FALSEENDIF$FLAG[8]=FALSE;FLAG[8]是干什么用的?;ENDFOLD (INI);初始化完成$OV_PRO=70;限定系统运行速度;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDIF $IN_HOME THEN$OUT[5]=FALSE$OUT[8]=FALSE$OUT[11]=FALSEENDIFLOOPWAIT SEC 0.05IF $IN[1] AND NOT Part0InLeft AND Gripper_ChkStatus(3,"O") THEN ToPick_Search()ENDIFIF Part0InLeft AND ($IN[3] OR Machine1_OnlyDrop) AND Gripper_ChkStatus(1,"C") AND Gripper_ChkStatus(2,"O") THENMachine1()ENDIFIF Part1InRight AND ($IN[6] OR Machine2_OnlyDrop) AND Gripper_ChkStatus(2,"C") AND Gripper_ChkStatus(1,"O") THENMachine2()ENDIFIF Part2InLeft AND ($IN[8] OR Machine3_OnlyDrop) AND Gripper_ChkStatus(1,"C") THENMachine3()ENDIFENDLOOPENDDEF Itrpt1 ()HALTBRAKEEND2、取料程序(采用中断的方法自动探料,完成取料作业)&ACCESS RVO2&REL 1&PARAM DISKPATH = KRC:\R1\ProgramDEF ToPick_Search( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( );单独用了一个系统中断?INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)INTERRUPT DECL 1 WHEN $IN[10]==TRUE DO FOUND()SevenAxis_Run(1)GOTO MARK;FOLD PTP P1 CONT Vel=100 % PDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT2$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD;FOLD PTP P3 CONT Vel=100 % PDAT8 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P3, 3:C_DIS, 5:100, 7:PDAT8$BWDSTART=FALSEPDAT_ACT=PPDAT8FDAT_ACT=FP3BAS(#PTP_PARAMS,100)PTP XP3 C_DIS;ENDFOLD;FOLD LIN P2 CONT Vel=2 m/s CPDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:2, 7:CPDAT2$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P1 Vel=0.05 m/s CPDAT1 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:, 5:0.05, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP1BAS(#CP_PARAMS,0.05)LIN XP1;ENDFOLD;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDmark:Search()INTERRUPT OFF 1WAIT SEC 0XP4=$POS_ACT;FOLD LIN P4 CONT Vel=2 m/s CPDAT10 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P4, 3:C_DIS C_DIS, 5:2, 7:CPDAT10$BWDSTART=FALSELDAT_ACT=LCPDAT10FDAT_ACT=FP4BAS(#CP_PARAMS,2)LIN XP4 C_DIS C_DIS;ENDFOLDGripper_SetStatus(1,"O")LIN_REL{Z 15}LIN_REL{Z -17}Gripper_SetStatus(1,"C")Part0InLeft = TRUEWAIT SEC 0XP0=$POS_ACTXP0.Z=XP0.Z+25 ;看一下寻料程序到底是怎么运转的!;FOLD LIN P0 CONT Vel=0.025 m/s CPDAT8 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P0, 3:C_DIS C_DIS, 5:0.025, 7:CPDAT8$BWDSTART=FALSELDAT_ACT=LCPDAT8FDAT_ACT=FP0BAS(#CP_PARAMS,0.025)LIN XP0 C_DIS C_DIS;ENDFOLDWAIT SEC 0IF NOT $IN[10] THENGOTO markENDIF;FOLD LIN P1 CONT Vel=2 m/s CPDAT7 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:C_DIS C_DIS, 5:2, 7:CPDAT7$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP1BAS(#CP_PARAMS,2)LIN XP1 C_DIS C_DIS;ENDFOLDENDDEF Search( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)INTERRUPT ON 1;FOLD PTP P1 CONT Vel=100 % PDAT6 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD$OUT[16]=TRUE;FOLD LIN P3 CONT Vel=2 m/s CPDAT11 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:C_DIS C_DIS, 5:2, 7:CPDAT11$BWDSTART=FALSELDAT_ACT=LCPDAT11FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3 C_DIS C_DIS;ENDFOLD;FOLD LIN P2 CONT Vel=0.05 m/s CPDAT5 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:0.05, 7:CPDAT5$BWDSTART=FALSELDAT_ACT=LCPDAT5FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P1 Vel=0.02 m/s CPDAT6 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:, 5:0.02, 7:CPDAT6$BWDSTART=FALSELDAT_ACT=LCPDAT6FDAT_ACT=FP1BAS(#CP_PARAMS,0.02)LIN XP1;ENDFOLDWAIT SEC 0ENDDEF FOUND()BRAKELIN $POS_INT ;rise a littleRESUMEEND3、机台1取放料程序(完成机台1取放料动作与信号交互)&ACCESS RVO2&REL 1&PARAM DISKPATH = KRC:\R1\ProgramDEF Machine1( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)SevenAxis_Run(1);FOLD OUT 5 '' State=TRUE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:5, 3:, 5:TRUE, 6: $OUT[5]=TRUE;ENDFOLDIF NOT Machine1_OnlyDrop THEN;FOLD PTP P1 CONT Vel=100 % PDAT4 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT4$BWDSTART=FALSEPDAT_ACT=PPDAT4FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLDmark:;FOLD LIN P2 CONT Vel=2 m/s CPDAT4 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:2, 7:CPDAT4$BWDSTART=FALSELDAT_ACT=LCPDAT4FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P3 CONT Vel=2 m/s CPDAT5 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:C_DIS C_DIS, 5:2, 7:CPDAT5$BWDSTART=FALSELDAT_ACT=LCPDAT5FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3 C_DIS C_DIS;ENDFOLDGripper_SetStatus(2,"C")LIN_REL{Z 7.5}Gripper_SetStatus(2,"O");FOLD LIN P3 Vel=2 m/s CPDAT1 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(2,"C")Part1InRight = TRUE;FOLD LIN P2 Vel=0.05 m/s CPDAT6 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:, 5:0.05, 7:CPDAT6$BWDSTART=FALSELDAT_ACT=LCPDAT6FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2;ENDFOLDIF NOT $IN[11] THENGOTO markENDIF;FOLD PTP P4 CONT Vel=100 % PDAT6 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel=100 % PDAT10 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT10$BWDSTART=FALSEPDAT_ACT=PPDAT10FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT8 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT8$BWDSTART=FALSEPDAT_ACT=PPDAT8FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT7 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT7$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(1,"O");FOLD PTP P6 CONT Vel=100 % PDAT14 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT14$BWDSTART=FALSEPDAT_ACT=PPDAT14FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT9 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT9$BWDSTART=FALSEPDAT_ACT=PPDAT9FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDELSE;FOLD PTP P5 CONT Vel=100 % PDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT2$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT13 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT13$BWDSTART=FALSEPDAT_ACT=PPDAT13FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT9 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT9$BWDSTART=FALSELDAT_ACT=LCPDAT9FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(1,"O");FOLD PTP P6 Vel=100 % PDAT12 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:, 5:100, 7:PDAT12$BWDSTART=FALSEPDAT_ACT=PPDAT12FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT7 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT7$BWDSTART=FALSEPDAT_ACT=PPDAT7FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDMachine_Start(1);FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDENDIFIF Machine1_OnlyDrop THENMachine1_OnlyDrop = FALSEENDIFMachine_Start(1)END4、机台2取放料程序(完成机台2取放料动作与信号交互)&ACCESS RV2&REL 6&PARAM DISKPATH = KRC:\R1\ProgramDEF Machine2();FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)PTP $POS_ACTSevenAxis_Run(2);FOLD OUT 8 '' State=TRUE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:8, 3:, 5:TRUE, 6: $OUT[8]=TRUE;ENDFOLDIF NOT Machine2_OnlyDrop THEN;FOLD PTP P1 CONT Vel=100 % PDAT3 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT3$BWDSTART=FALSEPDAT_ACT=PPDAT3FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLDmark:;FOLD PTP P2 CONT Vel=100 % PDAT4 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P2, 3:C_DIS, 5:100, 7:PDAT4$BWDSTART=FALSEPDAT_ACT=PPDAT4FDAT_ACT=FP2BAS(#PTP_PARAMS,100)PTP XP2 C_DIS;ENDFOLD;FOLD LIN P3 Vel=2 m/s CPDAT4 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT4$BWDSTART=FALSELDAT_ACT=LCPDAT4FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(1,"C")LIN_REL{Z 7.5}Gripper_SetStatus(1,"O");FOLD LIN P3 Vel=2 m/s CPDAT0 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT0$BWDSTART=FALSELDAT_ACT=LCPDAT0FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(1,"C")Part2InLeft = TRUE;FOLD LIN P2 CONT Vel=0.05 m/s CPDAT3 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:0.05, 7:CPDAT3$BWDSTART=FALSELDAT_ACT=LCPDAT3FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2 C_DIS C_DIS;ENDFOLDIF NOT $IN[10] THENGOTO markENDIF;FOLD PTP P4 CONT Vel=100 % PDAT7 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:C_DIS, 5:100, 7:PDAT7$BWDSTART=FALSEPDAT_ACT=PPDAT7FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel=100 % PDAT14 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT14$BWDSTART=FALSEPDAT_ACT=PPDAT14FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT9 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT9$BWDSTART=FALSEPDAT_ACT=PPDAT9FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT7 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT7$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(2,"O");FOLD PTP P6 CONT Vel=100 % PDAT11 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT11$BWDSTART=FALSEPDAT_ACT=PPDAT11FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT12 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT12$BWDSTART=FALSEPDAT_ACT=PPDAT12FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDELSE;FOLD PTP P5 CONT Vel=100 % PDAT13 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT13$BWDSTART=FALSEPDAT_ACT=PPDAT13FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT1 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT1$BWDSTART=FALSEPDAT_ACT=PPDAT1FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT1 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(2,"O");FOLD LIN P6 CONT Vel=2 m/s CPDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P6, 3:C_DIS C_DIS, 5:2, 7:CPDAT2$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP6BAS(#CP_PARAMS,2)LIN XP6 C_DIS C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT6 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDMachine_Start(2);FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:,5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDENDIFIF Machine2_OnlyDrop THENMachine2_OnlyDrop = FALSEENDIFMachine_Start(2)END5、机台3取放料程序(完成机台3取放料动作与信号交互)&ACCESS RVP1&REL 6DEF Machine3( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI)WAIT FOR $FLAG[1]$FLAG[8]=TRUE;ENDFOLD (INI)PTP $POS_ACTSevenAxis_Run(3);FOLD OUT 11 '' State=TRUE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:11, 3:, 5:TRUE, 6: $OUT[11]=TRUE;ENDFOLD;FOLD PTP P1 CONT Vel=100 % PDAT6 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD;FOLD PTP P2 CONT Vel=100 % PDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P2, 3:C_DIS, 5:100, 7:PDAT2$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP2BAS(#PTP_PARAMS,100)PTP XP2 C_DIS;ENDFOLD;FOLD LIN P3 Vel=0.25 m/s CPDAT1 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:0.25, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP3BAS(#CP_PARAMS,0.25)LIN XP3;ENDFOLDGripper_SetStatus(1,"O");FOLD LIN P2 CONT Vel=2 m/s CPDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:2, 7:CPDAT2$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD PTP P4 CONT Vel=100 % PDAT3 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:C_DIS, 5:100, 7:PDAT3$BWDSTART=FALSEPDAT_ACT=PPDAT3FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel=100 % PDAT5 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT5$BWDSTART=FALSEPDAT_ACT=PPDAT5FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLDMachine_Start(3);FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLD$TIMER_STOP[1]=FALSEIF $TIMER[1]>0 THEN$TIMER_STOP[1]=TRUEENDIFIF Machine3_OnlyDrop THENMachine3_OnlyDrop = FALSEENDIFCount_Part=Count_Part+1IF Count_Part>=40 THENCount_Part=0SevenAxis_Run(4)WAIT SEC 0.1ENDIFEND6、地轨运动程序(完成与地轨信号交互及运动交互)&ACCESS RV2&REL 8&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabeDEF SevenAxis_Run(Num:IN)INT NumSWITCH NumCASE 1;FOLD PULSE 1 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:1, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[1], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT FOR $IN[2]$OUT[1] = FALSE$OUT[14] = FALSECASE 2;FOLD PULSE 2 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:2, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[2], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[2] = FALSE$OUT[14] = FALSECASE 3;FOLD PULSE 3 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:3, 3:, 5:TRUE,6:, 8:1PULSE($OUT[3], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[3] = FALSE$OUT[14] = FALSECASE 4;FOLD PULSE 4 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:4, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[4], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[4] = FALSE$OUT[14] = FALSEDEFAULTMsgQuit("Error")ENDSWITCHEND7、机台启动控制程序(完成机台启动,取消工作中信号给开始加工信号)&ACCESS RV2&REL 3&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\ExpertVorgabeDEF Machine_Start(Num:IN)INT NumSWITCH NumCASE 1;FOLD OUT 5 '' State=FALSE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:5, 3:, 5:FALSE, 6: $OUT[5]=FALSE;ENDFOLD;FOLD PULSE 6 '' State=TRUE Time=0.5 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:6, 3:, 5:TRUE, 6:, 8:0.5PULSE($OUT[6], TRUE,0.5);ENDFOLDCASE 2;FOLD OUT 8 '' State=FALSE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:8, 3:, 5:FALSE, 6: $OUT[8]=FALSE;ENDFOLD;FOLD PULSE 9 '' State=TRUE Time=0.5 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:9, 3:, 5:TRUE, 6:, 8:0.5PULSE($OUT[9], TRUE,0.5);ENDFOLDCASE 3;FOLD OUT 11 '' State=FALSE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:11, 3:, 5:FALSE, 6: $OUT[11]=FALSE;ENDFOLD;FOLD PULSE 12 '' State=TRUE Time=0.5 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:12, 3:, 5:TRUE, 6:, 8:0.5PULSE($OUT[12], TRUE,0.5);ENDFOLDDEFAULTMsgQuit("Error")ENDSWITCHEND8、手爪控制程序(完成对手爪的控制)手爪1控制点位为OUT[16],对应检测为IN[10],对应中断4手爪2控制点位为OUT[15],对应检测为IN[11],对应中断5&ACCESS RV2&REL 50&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabeDEF Gripper_SetStatus(Num:IN,Status:IN)INT NumCHAR StatusSWITCH NumCASE 1SWITCH StatusCASE "O"IF NOT $T1 THENINTERRUPT OFF 4ENDIF$OUT[16] = FALSEWAIT SEC 0.3WAIT FOR NOT $IN[10]Part0InLeft = FALSEPart2InLeft = FALSECASE "C"IF NOT $T1 THENINTERRUPT ON 4ENDIF$OUT[16] = TRUEWAIT SEC 0.5WAIT FOR $IN[10]DEFAULTMsgQuit("Element Error")ENDSWITCHCASE 2SWITCH StatusCASE "O"IF NOT $T1 THENINTERRUPT OFF 5ENDIFINTERRUPT OFF 89$OUT[15] = FALSEWAIT SEC 0.3WAIT FOR NOT $IN[11]Part1InRight = FALSECASE "C"IF NOT $T1 THENINTERRUPT ON 5ENDIF$OUT[15] = TRUEWAIT SEC 0.5WAIT FOR $IN[11]Part1InRight = TRUEDEFAULTMsgQuit("Element Error")ENDSWITCHDEFAULTMsgQuit("Element Error")ENDSWITCHEND9、手爪真空检测(完成对掉料状况的检测)&ACCESS RV2&REL 10&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\FunctionVorgabe DEFFCT BOOL Gripper_ChkStatus(Num:IN,Status:IN)INT NumCHAR StatusSWITCH NumCASE 1SWITCH StatusCASE "O"IF NOT $OUT[16] AND NOT $IN[10] THENRETURN TRUEELSERETURN FALSEENDIFCASE "C"IF $OUT[16] AND $IN[10] THENRETURN TRUEELSERETURN FALSEENDIFDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHCASE 2SWITCH StatusCASE "O"IF NOT $OUT[15] AND NOT $IN[11] THENRETURN TRUEELSERETURN FALSEENDIFCASE "C"IF $OUT[15] AND $IN[11] THENRETURN TRUEELSERETURN FALSEENDIFDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHCASE 3SWITCH StatusCASE "O"IF NOT $OUT[15] AND NOT $OUT[16] AND NOT $IN[10] AND NOT $IN[11] THEN RETURN TRUEELSERETURN FALSEENDIFCASE "C"IF $OUT[15] AND $OUT[16] AND $IN[10] AND $IN[11] THENRETURN TRUEELSERETURN FALSEENDIFDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHENDFCT10、装夹检测子程序(完成对每台机的装夹检测与装夹异常信号交互)11、后台监视程序(对安全姿态信号自动触发等后台程序进行配置)&ACCESS R&COMMENT HandlerOnRobotFaultDEF IR_STOPM ( );-----------------------------------; Error Handling Robot Controller; Switch OFF and Switch ON processes; KRC Version >= V5.5;-----------------------------------;FOLD DECLARATIONS;FOLD USER DECL; Please insert user defined declarations;ENDFOLD (USER DECL);FOLD BASISTECH DECLBOOL ApplicationRunFlagDECL CHAR ID[3];ENDFOLD (BASISTECH DECL);ENDFOLD (DECLARATIONS);FOLD BASISTECH INITINTERRUPT OFF 3STOPM_FLAG=TRUE ;Reflects state of interrupt 3 to activate/deactivate $Stopmess interrupt ID[]="CTL"If ($STOPMESS==TRUE) THENBRAKE;ENDFOLD (BASISTECH INIT);FOLD USER STOP;Make your modifications here;ENDFOLD (USER STOP);FOLD BASISTECH STOPP00 (#EXT_ERR,#PGNO_GET,ID[],128 )ApplicationRunFlag=FALSEIF (Appl_Run>0) THENIF $OUT[Appl_Run] THENApplicationRunFlag=TRUE$OUT[Appl_Run]=FALSEENDIFENDIFREPEATPOWER=SYNC()HALTUNTIL (($STOPMESS==FALSE) AND ($POWER_FAIL==FALSE));ENDFOLD (BASISTECH STOP);FOLD BASISTECH RESTARTP00 (#EXT_ERR,#PGNO_GET,ID[],0 )IF (ApplicationRunFlag==TRUE) THENIF (Appl_Run>0) THEN$OUT[Appl_Run]=TRUEENDIFENDIF最新精品文档,知识共享!;ENDFOLD (BASISTECH RESTART);FOLD USER RESTART;Make your modifications here;ENDFOLD (USER RESTART);FOLD BASISTECH REACTIVATEEndifINTERRUPT ON 3STOPM_FLAG=FALSE ;Reflects state of interrupt 3 to activate/deactivate $Stopmess interrupt;ENDFOLD (BASISTECH REACTIVATE)END。
涂装机械手自动化系统操作流程
涂装机械手自动化系统操作流程涂装机械手自动化系统是现代工业生产中广泛应用的一种设备,它能够实现物体的自动喷涂,提高生产效率和涂装质量。
为了正确操作涂装机械手自动化系统,以下是一个操作流程的示例。
一、准备工作1.1 确认涂装机械手自动化系统的工作状态。
检查机械手的电源是否正常,各个传感器和控制器是否运行正常。
1.2 检查涂装设备的涂料和溶剂是否充足,以及喷枪是否处于良好状态。
1.3 穿戴个人防护装备,包括工作服、手套、护目镜等,确保工作安全。
二、机械手程序操作2.1 打开涂装机械手自动化系统的主控制面板,并输入访问密码。
2.2 选择涂装程序,通常涂装机械手会有多个预设程序可供选择,根据具体涂装要求进行选择。
2.3 检查涂装路径和喷枪位置。
根据工件形状和涂装要求,设定机械手的路径和喷枪的位置。
2.4 调整喷枪参数。
根据具体涂料和工件要求,调整喷枪的喷涂压力、喷涂速度和喷涂距离等参数。
2.5 启动涂装机械手。
确认一切准备就绪后,启动涂装机械手进行自动涂装操作。
三、涂装过程监控3.1 监控涂装质量。
通过远程监控系统或观察操作面板,实时检查涂装质量,确保涂装效果符合要求。
3.2 检查涂料和溶剂消耗情况。
根据涂料和溶剂的消耗情况,及时补充或更换涂料和溶剂,保证涂装生产的连续性。
3.3 定期检查设备状态。
在涂装机械手自动化系统运行过程中,定期检查机械手、传感器和控制器的状态,及时发现和处理故障。
四、涂装操作完成4.1 停止涂装机械手。
在涂装任务完成后,及时停止涂装机械手,确保安全。
4.2 清洁涂装设备。
对喷枪、喷嘴等涂装设备进行清洁,以保证下次使用时的正常工作。
4.3 关闭涂装机械手自动化系统。
关闭涂装机械手自动化系统的主控制面板,并进行必要的系统维护工作。
总结:涂装机械手自动化系统操作流程的正确执行可以保证涂装质量和工作效率的提高。
在操作前需要确保准备工作的充分,包括检查设备状态、准备涂料和个人防护装备等。
机械手程序
Network 31 // 一直下降到位
LDN I2.2
S Q0.0, 1
NOT
R Q0.0, 1
Network 32 // 转移条件
LD M1.4
A I2.2
MOVB 6, VB0
Network 33 // 下降到位后,按动启动键往下一步转移
LD M0.1
O M0.2
O M0.3
A M0.6
LPS
EU
S S3.1, 1
LPP
CALL SBR2
Network 6 // 手动挡调用手动挡子程序
LD M0.4
CALL SBR0
Network 7 // 回原点挡调用回原点子程序
Network 10 // 手动松开
LD I1.5
R Q0.1, 1
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK HUI_L:SBR1
TITLE=回原点子程序
BEGIN
Network 1 // 允许继续回原点
LD I0.5
R M1.2, 1
MOVB 0, VB0
Network 4 // 凡是转离回原点挡把回原点的所有状态复位
LD M0.1
O M0.2
O M0.3
O M0.4
EU
R S1.0, 8
Network 5 // 已经过回原点操作,并在自动挡位,调用自动挡控制子程序, 已回原点,接通自动挡缓冲期状态, 在回原点操作中,回到原点M0.7=1后,置位M0.6
SCRT S1.6
LPP
AN Q0.1
PLC机械手程序的设计
返回
SM0.1
S0.0
I0.0
S0.1
I0.3
Q0.1 S Q0.4 T37
T37
S0.2 S0.3 S0.4
Q0.0
I0.2
Q0.2
I0.4
SM0.1
S0.0
I0.0
S0.1
I0.3
Q0.1 S Q0.4 T37
T37
S0.2 S0.3 S0.4
Q0.0
I0.2
Q0.2
I0.4
SM0.1
S0.0
【案例】机械手梯形图程序的设计。
1、分析工艺过程,确定输入输出,列出I/O分配表。
输入地址分配 启动按钮(SB1) 停止按钮(SB2) I0.0 I0.1 输出地址分配 上升电磁阀(YV1) Q0.0
下降电磁阀(YV2) Q0.1
左行电磁阀(YV3) Q0.2 右行电磁阀(YV4) Q0.3 夹紧电磁阀(YV5) QO.4
总结:绘制顺序功能图前需要考虑的三个问题
①控制任务十分复杂,我们可以将它化分为那些步? (步) ②每一步都做了什么事? (动作) ③由一步向另外一步转化时需要哪些件?(转换条件)
顺序功能图的五要素
步
有向线段
转换
转换条件
动作
顺序功能图是编写程序前的分 析工艺过程的思路,而接下来 我们要做的事,将这样的思路 变为可被PLC读写的程序!
S0.2 I0.5
Q0.0
保持型动作:若为保持型动作, 则该步不活动时继续执行该动 作。 非保持型动作:若为非保持型 动作则指该步不活动时,动作 也停止执行
S Q0.1
3、有向连线
功能表图中步的活动状态的顺 序进展按有向连线规定的路线和 方向进行。活动状态的进展方向 习惯上是从上到下或从左至右, 在这两个方向有向连线上的箭头 可以省略。如果不是上述的方向, 应在有向连线上用箭头注明进展 方向。
机械手的程序设计
机械手的程序设计机械手是一种自动化装置,广泛应用于工业生产线、仓储物流等领域。
机械手的程序设计是指为机械手设定一系列的动作和任务,以实现特定的功能和工作流程。
本文将介绍机械手程序设计的基本原理和步骤。
一、机械手程序设计的基本原理机械手程序设计基于控制系统来实现。
控制系统包括硬件设备和软件程序两部分。
硬件设备主要包括机械手臂、传感器、执行器等,而软件程序则负责控制硬件设备的运作。
机械手程序设计的基本原理是将任务分解为一系列的运动和动作,并将其编程到机械手的控制系统中。
机械手可以通过各种传感器获取输入信号,并根据预先编写的程序进行相应的动作。
程序设计需要考虑到机械手的结构特点、工作环境以及任务需求,以保证机械手的安全性和工作效率。
二、机械手程序设计的步骤1. 分析任务需求:首先,需要对机械手的任务需求进行详细的分析和了解。
这包括任务的性质、工作空间的要求、物体的尺寸和重量等。
只有清楚了解任务需求,才能更好地进行程序设计。
2. 设计动作序列:根据任务需求,设计机械手的动作序列。
动作序列是指机械手需要执行的一系列动作和运动。
可以根据实际情况将任务分解为多个子任务,并设计相应的动作序列。
3. 编写程序代码:根据设计的动作序列,编写程序代码。
程序代码需要根据机械手控制系统的编程语言和平台来编写。
常用的编程语言包括C++、Python等。
4. 调试和优化:完成程序编写后,需要对程序进行调试和优化。
通过调试和测试可以发现和解决程序中的错误和问题,并对程序进行优化,提高机械手的工作效率和稳定性。
5. 上机验证和应用:在调试和优化完成后,将程序加载到机械手的控制系统中,并进行实际的上机验证和应用。
根据实际情况对程序进行进一步的调整和改进,以满足任务需求。
三、机械手程序设计的挑战和解决方案1. 运动规划:机械手的运动规划是程序设计的核心问题。
机械手的运动规划需要考虑到物体的位置、运动轨迹、碰撞检测等因素,以实现精确的动作控制。
机械手的PLC控制程序
机械手的PLC控制程序摘要本设计利用PLC控制程序调试,能够完成机械手的下降,夹紧,上升,右移,下降,松开,上升,左移等一系列的动作,完全符合现实工业生产的需要,经触摸屏模拟调试效果良好,其连续性运行或手动的操作都符合要求,整个程序符合自动化的生产的要求。
本文配有动作示意图,I/O分配表,I/O连接图,梯形图和触摸屏画面,同时有程序的详细分析。
关键词:机械手;自动化;可编程控制器PLC;触摸屏目录摘要 (1)1. 概述 (4)2. 控制要求 (4)2.1. I/O连接图 (5)2.2. 程序解释 (6)2.3. 完整梯形图如下所示 (11)2.4. 触摸屏画面 (14)3. PLC应注意的问题及解决方法 (15)3.1工作环境 (15)3.1.1 温度 (15)3.1.2 湿度 (15)3.1.3 震动 (15)3.2 空气 (15)3.3安装与布线 (16)3.4 外部安全 (16)3.5 PLC的接地 (16)4.结束语 (16)5.参考文献 (16)1.概述机电一体化在各个领域的应用,机械设备的自动控制成分显来越来越重要,大机械手是一种模仿人体上肢运动的机器,它能按照预定要求输送工种或握持工具进行操作的自动化技术设备,对实现工业生产自动化,推动工业生产的进一步发展起着重要作用。
本设计采用PLC作为控制机对工业机械手进行控制及监控。
它能按照生产工艺的要求,遵循一定的程序、时间和位置来完成工件的传送和装卸,从而大大改善工人的劳动条件,显著地提高劳动生产率工业机械手可以代替人手的繁重劳动,显著减轻工人的劳动强度,提高劳动生产率和自动化水平。
2.控制要求如图所示是一台机械手传送工件机械运动状态示意图,其作用是将工件从A点传递到B点。
机械手的初始置位停在原点,按下启动后按钮后,机械手将下降—夹紧工件延时2秒-上升-右移-再下降-放松工件延时2秒-再上升-左移完成一个工作周期。
机械手的下降、上升、右移、左移等动作转换,是由相应的动作开关来控制的,而夹紧和放松的转换是有时间来控制的气动机械手的升降和左右移行作分别由两个具有双线圈的两位电磁阀驱动气缸来完成,其中下降与上升对应电磁阀的线圈分别为YV3与YV1,右行、左行对应电磁阀的线圈分别为YV2与YV4。
PLC---机械手运行程序
1如图6-19所示是一台工件传送的气动机械手的动作示意图,其作用是将工件从A点传递到B点。
气动机械手的升降和左右移行作分别由两个具有双线圈的两位电磁阀驱动气缸来完成,其中上升与下降对应电磁阀的线圈分别为YV1与YV2,左行、右行对应电磁阀的线圈分别为YV3与YV4。
一旦电磁阀线圈通电,就一直保持现有的动作,直到相对的另一线圈通电为止。
气动机械手的夹紧、松开的动作由只有一个线圈的两位电磁阀驱动的气缸完成,线圈(YV5)断电夹住工件,线圈(YV5)通电,松开工件,以防止停电时的工件跌落。
机械手的工作臂都设有上、下限位和左、右限位的位置开关SQ1、SQ2和SQ3、SQ4,夹持装置不带限位开关,它是通过一定的延时来表示其夹持动作的完成。
机械手在最上面、最左边且除松开的电磁线圈(YV5)通电外其它线圈全部断电的状态为机械手的原位。
图6-19 机械手示意图机械手的操作面板分布情况如图6-20所示,机械手具有手动、单步、单周期、连续和回原位五种工作方式,用开关SA进行选择。
手动工作方式时,用各操作按钮(SB5、SB6、SB7、SB8、SB9、SB10、SB11)来点动执行相应的各动作;单步工作方式时,每按一次起动按钮(SB3),向前执行一步动作;单周期工作方式时,机械手在原位,按下起动按钮SB3,自动地执行一个工作周期的动作,最后返回原位(如果在动作过程中按下停止按钮SB4,机械手停在该工序上,再按下起动按钮SB3,则又从该工序继续工作,最后停在原位);连续工作方式时,机械手在原位,按下起动按钮(SB3),机械手就连续重复进行工作(如果按下停止按钮SB4,机械手运行到原位后停止);返回原位工作方式时时,按下“回原位”按钮SB11,机械手自动回到原位状态。
图6-20 机械手操作面板示意图1.程序的总体结构如图6-22所示为机械手系统的PLC梯形图程序的总体结构,将程序分为公用程序、自动程序、手动程序和回原位程序四个部分,其中自动程序包括单步、单周期和连续工作的程序,这是因为它们的工作都是按照同样的顺序进行,所以将它们合在一起编程更加简单。
机械手自动控制系统用PLC实现的程序设计
摘要本文介绍的物料搬运机械手可在空间抓放物体,可代替人工在高温和危险的作业区进行作业,主要作用是完成机械部件的搬运工作,能放置在各种不同的生产线或物流流水线中,使零件搬运、货物运输更快捷、便利。
本文利用MCGS全中文通用工控组态软件和基于MCGS全中文组态软件开发的计算机监控PLC模拟实验系统软件实现机械手的仿真,并用STEP7-Micro/WIN设计PLC的控制程序来实现对机械手的自动控制,从而实现了机械手自动化系统的控制过程。
关键词:PLC 机械手自动化程序设计目录摘要 (I)第1章课题介绍 (1)1.1 课题设计内容 (1)1.2 课题设计具体要求 (2)1.3 课题来源及研究的目的和意义 (2)第2章机械手和PLC的概念及选择 (3)2.1机械手的概念 (3)2.2 PLC的概念 (4)第3章 PLC控制机械手的系统 (5)3.1 I/O地址分配 (5)3.2分析系统的控制并设计PLC程序 (5)第4章调试机械手PLC控制程序 (7)第5章结论 (8)参考文献 (9)致谢 (10)附录A 指令语句表 (11)附录B梯形图程序 (17)第1章课题介绍1.1 课题设计内容机械手设有调整、连续、单周及步进四种工作方式,工作时要首先选择工作方式,然后操作对应按钮。
其工作示意图如图1.1所示。
图1.1机械手工作循环示意图1.1.1调整工作方式:可按相应按钮实现左移、右移、上移、下移、加紧、放松各个动作的单独调整。
1.1.2连续工作方式:按下起动按钮,机械手按下降→加紧→上升→右移→下降→放松→上升→左移的顺序周而复始的连续工作;按下停止按钮,机械手将自动结束本周期的工作,回到原位后停止。
按下急停按钮,系统立即停车。
1.1.3单周工作方式:按下起动按钮后,机械手按下降→加紧→上升→右移→下降→放松→上升→左移的顺序自动工作一个周期停止。
若要再工作一个周期,可再次按下起动按钮。
按下停止按钮,机械手将自动结束本周期的工作,回到原位后停止。
机械手PLC控制程序
机械手PLC控制程序第一篇:机械手PLC控制程序附录31.主程序:2.油泵电机保护及启停:3.手动:4.单步:5.单周期:6.自动:7.回原点:8.获取位置:9.子单周期:10.SBR_8:第二篇:plc机械手搬运机械手PLC控制系统设计摘要随着工业自动化的普及和发展,控制器的需求量逐年增大,搬运机械手的应用也逐渐普及,主要在汽车,电子,机械加工、食品、医药等领域的生产流水线或货物装卸调运, 可以更好地节约能源和提高运输设备或产品的效率,以降低其他搬运方式的限制和不足,满足现代经济发展的要求。
本机械手的机械结构主要包括由两个电磁阀控制的液压钢来实现机械手的上升下降运动及夹紧工件的动作,两个转速不同的电动机分别通过两线圈控制电动机的正反转,从而实现小车的快进、慢进、快退、慢退的运动运动;其动作转换靠设置在各个不同部位的行程开关(SQ1---SQ9)产生的通断信号传输到PLC控制器,通过PLC内部程序输出不同的信号,从而驱动外部线圈来控制电动机或电磁阀产生不同的动作,可实现机械手的精确定位;其动作过程包括:下降、夹紧、上升、慢进、快进、慢进、延时、下降、放松、上升、慢退、快退、慢退;其操作方式包括:回原位、手动、单步、单周期、连续;来满足生产中的各种操作要求。
关键词:搬运机械手,可编程控制器(PLC),液压,电磁阀ABSTRACT With the popularity of industrial automation and development, the demand for year-on-year increase of controller, handling the application of robot gradually popularity, mainly in the automotive, electronic, mechanical processing, food, medicine and other areas of the production line or cargo transport, we can be more good to save energy and improve the transport efficiency of equipment or products, to reduce restrictions on other modes of transportation and inadequate to meet the requirements of modern economic development.The manipulator mechanical structure includes two solenoid valves controlled by hydraulic manipulator steel to achieve the increased decline in sports and workpiece clamping action, the two different motor speed through the two motor coils positive control in order to achieve car of the fast-forward, slow forward, fast rewind, slow movement back movement;conversion by setting its action in various different parts of the trip switch(SQ1---SQ9)generated on-off signal transmission to the PLC controller, through the PLC internal different output signal, which drives the external coil to control the motor or solenoid valves have a different action, the robot can achieve precise positioning;their course of action include: decline in clamping increased, slow forward, fast forward, slow progress, the extension of , the drop in, relax, rise, slow back, rewind, slow back;its operation, including: Back in situ, manual, single-step, single cycle, continuous;to meet the production requirements of the various operations and maintenance.Keywords: handling mechanical hands, Programmable Logic Controller(PLC), hydraulic, solenoidvalve 目录前言………………………………………………………………………………….1 第一章机械手的概况 1.1 搬运机械手的应用简况…………………………………………………2 1.2 机械手的应用意义………………………………………………………3 1.3 机械手的发展概况………………………………………………………3 第三章搬运机械手PLC控制系统设计3.1 搬运机械手结构及其动作………………………………………………3.2 搬运机械手系统硬件设计……………………………………………… 3.3 搬运机械手控制程序设计……………………………………………… 1 操作面板及动作说明…………………………………………………… 2 I/O分配………………………………………………………………… 3 梯形图的设计…………………………………………………………… 1)梯形图的总体设计…………………………………………………… 2)各部分梯形图的设计………………………………………………… 3)绘制搬运机械手PLC控制梯形图……………………………………结论……………………………………………………………………………… 谢辞……………………………………………………………………………… 参考文献………………………………………………………………………………….附:语句表梯形图I/O接线图前言机械手:mechanical hand,也被称为自动手,auto hand 能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
机械手PLC梯形图程序
机械手PLC梯形图程序机械手系统的PLC梯形图程序1.程序的总体结构如图6-22所示为机械手系统的PLC梯形图程序的总体结构,将程序分为公用程序、自动程序、手动程序和回原位程序四个部分,其中自动程序包括单步、单周期和连续工作的程序,这是因为它们的工作都是按照同样的顺序进行,所以将它们合在一起编程更加简单。
梯形图中使用跳转指令使得自动程序、手动程序和回原位程序不会同时执行。
假设选择“手动”方式,则X0为ON、X1为OFF,此时PLC执行完公用程序后,将跳过自动程序到P0处,由于X0常闭触点为断开,故执行“手动程序”,执行到P1处,由于X1常闭触点为闭合,所以又跳过回原位程序到P2处;假设选择分“回原位”方式,则X0为OFF、X1为ON,跳过自动程序和手动程序执行回原位程序;假设选择“单步”或“单周期”或“连续”方式,则X0、X1均为OFF,此时执行完自动程序后,跳过手动程序和回原位程序。
图6-22 机械手系统PLC梯形图的总体结构2.各部分程序的设计(1)公用程序公用程序如图6-23所示,左限位开关X12、上限位开关X10的常开触点和表示机械手松开的Y4的常开触点的串联电路接通时,辅助继电器M0变为ON,表示机械手在原位。
公用程序用于自动程序和手动程序相互切换的处理,当系统处于手动工作方式时,必须将除初始步以外的各步对应的辅助继电器(M11-M18)复位,同时将表示连续工作状态的M1复位,否则当系统从自动工作方式切换到手动工作方式,然后又返回自动工作方式时,可能会出现同时有两个活动步的异常情况,引起错误的动作。
当机械手处于原点状态(M0为ON),在开始执行用户程序(M8002为ON)、系统处于手动状态或回原点状态(X0或X1为ON)时,初始步对应的M1O将被置位,为进入单步、单同期和连续工作方式作好准备。
如果此时M0为OFF状态,M1O将被复位,初始步为不活动步,系统不能在单步、单周期和连续工作方式下工作。
工业机械手PLC控制系统程序设计PPT课件
.
10
4、自动操作
根据图3--56所示的工业机械手自动运行状态转移图, 可绘出如图3--60所示的自动操作步进梯形图。
.
11
由于FNC60(IST)的支持,当工作方式选择开关SA2扳 到“步进”、“单周期”、“连续”方式时,该程序能使机械 手实现所需的工作运行。以“单周期”为例,其工作过程分析 如下:。
点待命。
.
14
若在机械手循环中途按动停止按钮SB3,就会接通禁止 转移继电器M8040,机械手停止运行;再按启动按钮SB2启动 脉冲继电器M8042将M8040断开,机械手断开,机械手从断点 处开始继续运行,回到原点自动停止。
对于“连续”工作方式,由于按动启动按钮后,M8041 总是接通,M8040总是断开,机械手能够实现连续自动循环; 按动停止按钮后,M8041和M8040均是断开的,机械手运动到 原点才停止。
57 OUT Y001
82 STL S21
58 LD X001
83 SET Y002
59 SET S11
84 OUT T0
61 STL S11
85 K 10
62 RST Y003
86 LD T0
63 OUT Y004
87 SET S22
.
17
89 STL S22 90 OUT Y001 91 LD X001 92 SET S23 94 STL S23 95 OUT Y003 96 LD X002 97 AND X004 98 SET S24 100 STL S24 101 OUT Y000 102 LD X000 103 SET S25 105 STL S25 106 RST Y002
PLC机械手程序的设计
PLc机械手程序的设计[公司名称][日期]目录1.引言1.1 目的1.2 背景1.3 范围2.PLc机械手设计概述2.1 技术要求2.2 系统架构2.3 设计原则3.机械手运动控制程序3.1 驱动器接口3.2 电机控制算法3.3 机械手运动轨迹规划3.4 通信协议4.输入输出接口设计4.1 传感器接口4.2 操作面板设计4.3 外部设备接口设计5.安全性设计5.1 紧急停止功能5.2 异常情况处理5.3 安全防护装置6.手动操作界面设计6.1 操作界面功能6.2 操作流程7.系统性能测试7.1 功能测试7.2 性能指标测试7.3 故障模拟测试8.程序备份与恢复8.1 程序备份方法8.2 程序恢复方法9.维护与升级9.1 维护计划9.2 升级方法10.附录10.1 机械手程序示例10.2 电路图10.3 设备清单1.引言1.1 目的本文档旨在详细描述PLc机械手程序设计的过程和要求,为相关工程师提供参考。
1.2 背景PLc机械手广泛应用于生产线上的自动化操作,本文档的目的是为了确保机械手程序的功能稳定和安全性。
1.3 范围本文档适用于PLc机械手程序的设计和开发。
2.PLc机械手设计概述2.1 技术要求在这一部分中,我们将详细描述PLc机械手程序的技术要求,包括性能指标、功能需求等。
2.2 系统架构在这一部分,我们将描述PLc机械手程序的系统架构,包括硬件和软件组件的关系和交互。
2.3 设计原则这一部分将介绍PLc机械手程序设计的原则和设计准则,确保程序的稳定性和可维护性。
3.机械手运动控制程序3.1 驱动器接口在这一部分中,我们将描述驱动器接口的设计和配置。
包括与电机驱动器的通信和控制。
3.2 电机控制算法这一部分将详细描述PLc机械手程序中所使用的电机控制算法,以确保机械手的运动平稳和精确。
3.3 机械手运动轨迹规划在这一部分,我们将描述机械手运动轨迹规划算法的设计和实现。
确保机械手运动轨迹的合理性和高效性。
机械手PLC梯形图程序
机械手系统的PLC梯形图程序1.程序的总体结构如图6-22所示为机械手系统的PLC梯形图程序的总体结构,将程序分为公用程序、自动程序、手动程序和回原位程序四个部分,其中自动程序包括单步、单周期和连续工作的程序,这是因为它们的工作都是按照同样的顺序进行,所以将它们合在一起编程更加简单。
梯形图中使用跳转指令使得自动程序、手动程序和回原位程序不会同时执行。
假设选择“手动”方式,则X0为ON、X1为OFF,此时PLC执行完公用程序后,将跳过自动程序到P0处,由于X0常闭触点为断开,故执行“手动程序”,执行到P1处,由于X1常闭触点为闭合,所以又跳过回原位程序到P2处;假设选择分“回原位”方式,则X0为OFF、X1为ON,跳过自动程序和手动程序执行回原位程序;假设选择“单步”或“单周期”或“连续”方式,则X0、X1均为OFF,此时执行完自动程序后,跳过手动程序和回原位程序。
图6-22 机械手系统PLC梯形图的总体结构2.各部分程序的设计(1)公用程序公用程序如图6-23所示,左限位开关X12、上限位开关X10的常开触点和表示机械手松开的Y4的常开触点的串联电路接通时,辅助继电器M0变为ON,表示机械手在原位。
公用程序用于自动程序和手动程序相互切换的处理,当系统处于手动工作方式时,必须将除初始步以外的各步对应的辅助继电器(M11-M18)复位,同时将表示连续工作状态的M1复位,否则当系统从自动工作方式切换到手动工作方式,然后又返回自动工作方式时,可能会出现同时有两个活动步的异常情况,引起错误的动作。
当机械手处于原点状态(M0为ON),在开始执行用户程序(M8002为ON)、系统处于手动状态或回原点状态(X0或X1为ON)时,初始步对应的M1O将被置位,为进入单步、单同期和连续工作方式作好准备。
如果此时M0为OFF状态,M1O将被复位,初始步为不活动步,系统不能在单步、单周期和连续工作方式下工作。
图6-23 公用程序(2)手动程序手动程序如图6-24所示,手动工作时用X14~X21对应的6个按钮控制机械手的上升、下降、左行、右行、松开和夹紧。
机械手自动操作控制的程序设计
机械手自动操作控制的程序设计目录1机械手的工作原理1.1机械手的详述……………………………………………………………………11.2机械手的工作方式 (2)2机械手控制程序设计2.1输出和输入点分配热蒙堡县原理接线图...................................................32.2控制程序 (4)3梯形图及指令表3.1梯形图....................................................................................93.2指令表 (11)总结..........................................................................................13参考文献....................................................................................14附录 (15)机械手自动操作控制的plc程序设计1机械手的工作原理1.1机械手的详述能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。
机械手主要由手部和运动机构共同组成。
手部就是用以抓持工件(或工具)的部件,根据被抓持物件的形状、尺寸、重量、材料和作业建议而存有多种结构形式,例如滚轮型、托持型和溶解型等。
运动机构,并使手部顺利完成各种旋转(转动)、移动或无机运动去同时实现规定的动作,发生改变被抓持物件的边线和姿势。
运动机构的滑行、伸缩式、转动等独立运动方式,称作机械手的自由度。
为了捕捉空间中任一边线和方位的物体,需要有6个自由度。
机械手监控系统程序
if 启动停止按钮=1 AND 复位停止按钮=0 THEN 定时器复位=0
定时器启动=1
ENDIF
if 启动停止按钮=0 THEN
定时器启动=0
ENDIF
if 复位停止按钮=1 AND 计时时间>=44 THEN 定时器启动=0
ENDIF
if 定时器启动=1 THEN
if 计时时间<5 THEN
下移信号=1
EXIT
ENDIF
IF 计时时间<7 THEN
下移信号=0
夹紧信号=1
EXIT
ENDIF
IF 计时时间<12 THEN
上移信号=1
EXIT
ENDIF
IF 计时时间<22 THEN
上移信号=0
右移信号=1
EXIT
ENDIF
IF 计时时间<27 THEN
右移信号=0
下移信号=1
EXIT
ENDIF
IF 计时时间<29 THEN
下移信号=0
夹紧信号=0
放松信号=1
EXIT
ENDIF
IF 计时时间<34 THEN
放松信号=0
上移信号=1
EXIT
ENDIF
IF 计时时间<44 THEN
上移信号=0
左移信号=1
EXIT
ENDIF
IF 计时时间>=44 THEN
左移信号=0
定时器复位=1
EXIT
ENDIF
ENDIF
IF 定时器启动=0 THEN
下移信号=0
上移信号=0
左移信号=0
右移信号=0 ENDIF。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、主程序main&ACCESS RVP1&REL 1&PARAM DISKPATH = KRC:\R1\ProgramDEF Pro_main( )INT l;FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI)GLOBAL INTERRUPT DECL 4 WHEN $IN[10]==FALSE DO Itrpt1 ()GLOBAL INTERRUPT DECL 5 WHEN $IN[11]==FALSE DO Itrpt1 () INTERRUPT DECL 6 WHEN $IN[9]==TRUE DO Itrpt1 ();地轨异常进入中断INTERRUPT ON 6;开地轨监视中断6IF NOT Gripper_ChkStatus(1,"C") THENGripper_SetStatus(1,"O")Part2InLeft = FALSEENDIFIF NOT Gripper_ChkStatus(2,"C") THENGripper_SetStatus(2,"O")Part1InRight = FALSEENDIFFOR l = 1 TO 14$OUT[l] = FALSEENDFOR;此循环语句在初始化时把所有端口清零复位。
IF $IN[5] THENMachine1_OnlyDrop = TRUEMachine2_OnlyDrop = TRUE;机台1有首件信号时,机台1与机台2第一次响应只放标志位置1 ELSEMachine1_OnlyDrop = FALSEMachine2_OnlyDrop = FALSEENDIF$FLAG[8]=FALSE;FLAG[8]是干什么用的?;ENDFOLD (INI);初始化完成$OV_PRO=70;限定系统运行速度;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP,$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDIF $IN_HOME THEN$OUT[5]=FALSE$OUT[8]=FALSE$OUT[11]=FALSEENDIFLOOPWAIT SEC 0.05IF $IN[1] AND NOT Part0InLeft AND Gripper_ChkStatus(3,"O") THEN ToPick_Search()ENDIFIF Part0InLeft AND ($IN[3] OR Machine1_OnlyDrop) AND Gripper_ChkStatus(1,"C") AND Gripper_ChkStatus(2,"O") THENMachine1()ENDIFGripper_ChkStatus(1,"O") THENMachine2()ENDIFIF Part2InLeft AND ($IN[8] OR Machine3_OnlyDrop) AND Gripper_ChkStatus(1,"C") THENMachine3()ENDIFENDLOOPENDDEF Itrpt1 ()HALTBRAKEEND2、取料程序(采用中断的方法自动探料,完成取料作业)&ACCESS RVO2&REL 1&PARAM DISKPATH = KRC:\R1\ProgramDEF ToPick_Search( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( );单独用了一个系统中INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)INTERRUPT DECL 1 WHEN $IN[10]==TRUE DO FOUND()SevenAxis_Run(1)GOTO MARK;FOLD PTP P1 CONT Vel=100 % PDAT2 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT2$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD;FOLD PTP P3 CONT Vel=100 % PDAT8 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P3, 3:C_DIS, 5:100, 7:PDAT8$BWDSTART=FALSEPDAT_ACT=PPDAT8FDAT_ACT=FP3PTP XP3 C_DIS;ENDFOLD;FOLD LIN P2 CONT Vel=2 m/s CPDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:2, 7:CPDAT2$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P1 Vel=0.05 m/s CPDAT1 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:, 5:0.05, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP1BAS(#CP_PARAMS,0.05)LIN XP1;ENDFOLD;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOME$H_POS=XHOMEPTP XHOME;ENDFOLDmark:Search()INTERRUPT OFF 1WAIT SEC 0XP4=$POS_ACT;FOLD LIN P4 CONT Vel=2 m/s CPDAT10 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P4, 3:C_DIS C_DIS, 5:2, 7:CPDAT10$BWDSTART=FALSELDAT_ACT=LCPDAT10FDAT_ACT=FP4BAS(#CP_PARAMS,2)LIN XP4 C_DIS C_DIS;ENDFOLDGripper_SetStatus(1,"O")LIN_REL{Z 15}LIN_REL{Z -17}Gripper_SetStatus(1,"C")Part0InLeft = TRUEWAIT SEC 0XP0=$POS_ACT;FOLD LIN P0 CONT Vel=0.025 m/s CPDAT8 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P0, 3:C_DIS C_DIS, 5:0.025, 7:CPDAT8$BWDSTART=FALSELDAT_ACT=LCPDAT8FDAT_ACT=FP0BAS(#CP_PARAMS,0.025)LIN XP0 C_DIS C_DIS;ENDFOLDWAIT SEC 0IF NOT $IN[10] THENGOTO markENDIF;FOLD LIN P1 CONT Vel=2 m/s CPDAT7 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:C_DIS C_DIS, 5:2, 7:CPDAT7$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP1BAS(#CP_PARAMS,2)LIN XP1 C_DIS C_DIS;ENDFOLDENDDEF Search( );FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)INTERRUPT ON 1;FOLD PTP P1 CONT Vel=100 % PDAT6 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD$OUT[16]=TRUE;FOLD LIN P3 CONT Vel=2 m/s CPDAT11 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:C_DIS C_DIS, 5:2, 7:CPDAT11$BWDSTART=FALSEFDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3 C_DIS C_DIS;ENDFOLD;FOLD LIN P2 CONT Vel=0.05 m/s CPDAT5 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:0.05, 7:CPDAT5$BWDSTART=FALSELDAT_ACT=LCPDAT5FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P1 Vel=0.02 m/s CPDAT6 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:, 5:0.02, 7:CPDAT6$BWDSTART=FALSELDAT_ACT=LCPDAT6FDAT_ACT=FP1BAS(#CP_PARAMS,0.02)LIN XP1;ENDFOLDWAIT SEC 0ENDBRAKELIN $POS_INT ;rise a littleRESUMEEND3、机台1取放料程序(完成机台1取放料动作与信号交互)&ACCESS RVO2&REL 1&PARAM DISKPATH = KRC:\R1\ProgramDEF Machine1( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)SevenAxis_Run(1);FOLD OUT 5 '' State=TRUE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:5, 3:, 5:TRUE, 6: $OUT[5]=TRUE;ENDFOLDIF NOT Machine1_OnlyDrop THEN;FOLD PTP P1 CONT Vel=100 % PDAT4 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT4$BWDSTART=FALSEPDAT_ACT=PPDAT4FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLDmark:;FOLD LIN P2 CONT Vel=2 m/s CPDAT4 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:2, 7:CPDAT4$BWDSTART=FALSELDAT_ACT=LCPDAT4FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P3 CONT Vel=2 m/s CPDAT5 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:C_DIS C_DIS, 5:2, 7:CPDAT5$BWDSTART=FALSELDAT_ACT=LCPDAT5FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3 C_DIS C_DIS;ENDFOLDGripper_SetStatus(2,"C")LIN_REL{Z 7.5}Gripper_SetStatus(2,"O");FOLD LIN P3 Vel=2 m/s CPDAT1 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(2,"C")Part1InRight = TRUE;FOLD LIN P2 Vel=0.05 m/s CPDAT6 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:, 5:0.05, 7:CPDAT6$BWDSTART=FALSELDAT_ACT=LCPDAT6FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2;ENDFOLDIF NOT $IN[11] THENGOTO markENDIF;FOLD PTP P4 CONT Vel=100 % PDAT6 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel=100 % PDAT10 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT10$BWDSTART=FALSEPDAT_ACT=PPDAT10FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT8 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT8$BWDSTART=FALSEPDAT_ACT=PPDAT8FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT7 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT7$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(1,"O");FOLD PTP P6 CONT Vel=100 % PDAT14 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT14$BWDSTART=FALSEPDAT_ACT=PPDAT14FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT9 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT9$BWDSTART=FALSEPDAT_ACT=PPDAT9FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDELSE;FOLD PTP P5 CONT Vel=100 % PDAT2 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT2$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT13 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT13$BWDSTART=FALSEPDAT_ACT=PPDAT13FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT9 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT9$BWDSTART=FALSELDAT_ACT=LCPDAT9FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(1,"O");FOLD PTP P6 Vel=100 % PDAT12 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:, 5:100, 7:PDAT12$BWDSTART=FALSEPDAT_ACT=PPDAT12FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT7 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT7$BWDSTART=FALSEPDAT_ACT=PPDAT7FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDMachine_Start(1);FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDENDIFIF Machine1_OnlyDrop THENMachine1_OnlyDrop = FALSEENDIFMachine_Start(1)END4、机台2取放料程序(完成机台2取放料动作与信号交互)&ACCESS RV2&REL 6&PARAM DISKPATH = KRC:\R1\ProgramDEF Machine2();FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI);ENDFOLD (INI)PTP $POS_ACTSevenAxis_Run(2);FOLD OUT 8 '' State=TRUE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:8, 3:, 5:TRUE, 6: $OUT[8]=TRUE;ENDFOLDIF NOT Machine2_OnlyDrop THEN;FOLD PTP P1 CONT Vel=100 % PDAT3 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT3$BWDSTART=FALSEPDAT_ACT=PPDAT3FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLDmark:;FOLD PTP P2 CONT Vel=100 % PDAT4 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P2, 3:C_DIS, 5:100, 7:PDAT4$BWDSTART=FALSEPDAT_ACT=PPDAT4FDAT_ACT=FP2BAS(#PTP_PARAMS,100)PTP XP2 C_DIS;ENDFOLD;FOLD LIN P3 Vel=2 m/s CPDAT4 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT4$BWDSTART=FALSELDAT_ACT=LCPDAT4FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(1,"C")LIN_REL{Z 7.5}Gripper_SetStatus(1,"O");FOLD LIN P3 Vel=2 m/s CPDAT0 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT0$BWDSTART=FALSELDAT_ACT=LCPDAT0FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(1,"C")Part2InLeft = TRUE;FOLD LIN P2 CONT Vel=0.05 m/s CPDAT3 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:0.05, 7:CPDAT3$BWDSTART=FALSELDAT_ACT=LCPDAT3FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2 C_DIS C_DIS;ENDFOLDIF NOT $IN[10] THENGOTO markENDIF;FOLD PTP P4 CONT Vel=100 % PDAT7 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:C_DIS, 5:100, 7:PDAT7$BWDSTART=FALSEPDAT_ACT=PPDAT7FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel=100 % PDAT14 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT14$BWDSTART=FALSEPDAT_ACT=PPDAT14FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT9 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT9$BWDSTART=FALSEPDAT_ACT=PPDAT9FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT7 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT7$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(2,"O");FOLD PTP P6 CONT Vel=100 % PDAT11 Tool[1] Base[0];%{PE}%R8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT11$BWDSTART=FALSEPDAT_ACT=PPDAT11FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT12 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT12$BWDSTART=FALSEPDAT_ACT=PPDAT12FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDELSE;FOLD PTP P5 CONT Vel=100 % PDAT13 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT13$BWDSTART=FALSEPDAT_ACT=PPDAT13FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel=100 % PDAT1 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P6, 3:C_DIS, 5:100, 7:PDAT1$BWDSTART=FALSEPDAT_ACT=PPDAT1FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel=0.25 m/s CPDAT1 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:0.25, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(2,"O");FOLD LIN P6 CONT Vel=2 m/s CPDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P6, 3:C_DIS C_DIS, 5:2, 7:CPDAT2$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP6BAS(#CP_PARAMS,2)LIN XP6 C_DIS C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel=100 % PDAT6 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P8, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDMachine_Start(2);FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLDENDIFIF Machine2_OnlyDrop THENMachine2_OnlyDrop = FALSEENDIFMachine_Start(2)END5、机台3取放料程序(完成机台3取放料动作与信号交互)&ACCESS RVP1&REL 6DEF Machine3( );FOLD INI;%{PE};FOLD BASISTECH INIGLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3BAS (#INITMOV,0 );ENDFOLD (BASISTECH INI);FOLD USER INI;Make your modifications here;ENDFOLD (USER INI)WAIT FOR $FLAG[1]$FLAG[8]=TRUE;ENDFOLD (INI)PTP $POS_ACTSevenAxis_Run(3);FOLD OUT 11 '' State=TRUE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:11, 3:, 5:TRUE, 6:$OUT[11]=TRUE;ENDFOLD;FOLD PTP P1 CONT Vel=100 % PDAT6 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:C_DIS, 5:100, 7:PDAT6$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD;FOLD PTP P2 CONT Vel=100 % PDAT2 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P2, 3:C_DIS, 5:100, 7:PDAT2$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP2BAS(#PTP_PARAMS,100)PTP XP2 C_DIS;ENDFOLD;FOLD LIN P3 Vel=0.25 m/s CPDAT1 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:0.25, 7:CPDAT1$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP3BAS(#CP_PARAMS,0.25)LIN XP3;ENDFOLDGripper_SetStatus(1,"O");FOLD LIN P2 CONT Vel=2 m/s CPDAT2 Tool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:2, 7:CPDAT2$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD PTP P4 CONT Vel=100 % PDAT3 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:C_DIS, 5:100, 7:PDAT3$BWDSTART=FALSEPDAT_ACT=PPDAT3FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel=100 % PDAT5 T ool[1] Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P5, 3:C_DIS, 5:100, 7:PDAT5$BWDSTART=FALSEPDAT_ACT=PPDAT5FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLDMachine_Start(3);FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT$BWDSTART=FALSEPDAT_ACT=PDEFAULTFDAT_ACT=FHOMEBAS(#PTP_PARAMS,100)$H_POS=XHOMEPTP XHOME;ENDFOLD$TIMER_STOP[1]=FALSEIF $TIMER[1]>0 THEN$TIMER_STOP[1]=TRUEENDIFIF Machine3_OnlyDrop THENMachine3_OnlyDrop = FALSEENDIFCount_Part=Count_Part+1IF Count_Part>=40 THENCount_Part=0SevenAxis_Run(4)WAIT SEC 0.1ENDIFEND6、地轨运动程序(完成与地轨信号交互及运动交互)&ACCESS RV2&REL 8&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabeDEF SevenAxis_Run(Num:IN)INT NumSWITCH NumCASE 1;FOLD PULSE 1 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:1, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[1], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT FOR $IN[2]$OUT[1] = FALSE$OUT[14] = FALSECASE 2;FOLD PULSE 2 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:2, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[2], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[2] = FALSE$OUT[14] = FALSECASE 3;FOLD PULSE 3 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:3, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[3], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[3] = FALSE$OUT[14] = FALSECASE 4;FOLD PULSE 4 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:4, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[4], TRUE,1);ENDFOLD;FOLD PULSE 14 '' State=TRUE Time=1 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:14, 3:, 5:TRUE, 6:, 8:1PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[4] = FALSE$OUT[14] = FALSEDEFAULTMsgQuit("Error")ENDSWITCHEND7、机台启动控制程序(完成机台启动,取消工作中信号给开始加工信号)&ACCESS RV2&REL 3&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\ExpertVorgabeDEF Machine_Start(Num:IN)INT NumSWITCH NumCASE 1;FOLD OUT 5 '' State=FALSE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:5, 3:, 5:FALSE, 6: $OUT[5]=FALSE;ENDFOLD;FOLD PULSE 6 '' State=TRUE Time=0.5 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:6, 3:, 5:TRUE, 6:, 8:0.5PULSE($OUT[6], TRUE,0.5);ENDFOLDCASE 2;FOLD OUT 8 '' State=FALSE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:8, 3:, 5:FALSE, 6: $OUT[8]=FALSE;ENDFOLD;FOLD PULSE 9 '' State=TRUE Time=0.5 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:9, 3:, 5:TRUE, 6:, 8:0.5PULSE($OUT[9], TRUE,0.5);ENDFOLDCASE 3;FOLD OUT 11 '' State=FALSE ;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:11, 3:, 5:FALSE,6:$OUT[11]=FALSE;ENDFOLD;FOLD PULSE 12 '' State=TRUE Time=0.5 sec;%{PE}%R 8.3.40,%MKUKATPBASIS,%COUT,%VPULSE,%P 2:12, 3:, 5:TRUE, 6:, 8:0.5PULSE($OUT[12], TRUE,0.5);ENDFOLDDEFAULTMsgQuit("Error")ENDSWITCHEND8、手爪控制程序(完成对手爪的控制)手爪1控制点位为OUT[16],对应检测为IN[10],对应中断4手爪2控制点位为OUT[15],对应检测为IN[11],对应中断5&ACCESS RV2&REL 50&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabeDEF Gripper_SetStatus(Num:IN,Status:IN)INT NumCHAR StatusSWITCH NumCASE 1SWITCH StatusCASE "O"IF NOT $T1 THENINTERRUPT OFF 4ENDIF$OUT[16] = FALSEWAIT SEC 0.3WAIT FOR NOT $IN[10]Part0InLeft = FALSEPart2InLeft = FALSECASE "C"IF NOT $T1 THENINTERRUPT ON 4ENDIF$OUT[16] = TRUEWAIT SEC 0.5WAIT FOR $IN[10]DEFAULTMsgQuit("Element Error") ENDSWITCHCASE 2SWITCH StatusCASE "O"IF NOT $T1 THENINTERRUPT OFF 5ENDIFINTERRUPT OFF 89$OUT[15] = FALSEWAIT SEC 0.3WAIT FOR NOT $IN[11]Part1InRight = FALSECASE "C"IF NOT $T1 THENINTERRUPT ON 5ENDIF$OUT[15] = TRUEWAIT SEC 0.5WAIT FOR $IN[11]Part1InRight = TRUEDEFAULTMsgQuit("Element Error")ENDSWITCHDEFAULTMsgQuit("Element Error") ENDSWITCHEND9、手爪真空检测(完成对掉料状况的检测)&ACCESS RV2&REL 10&PARAM EDITMASK = *&PARAM TEMPLATE = C:\KRC\Roboter\Template\FunctionVorgabe DEFFCT BOOL Gripper_ChkStatus(Num:IN,Status:IN)INT NumCHAR StatusSWITCH NumCASE 1SWITCH StatusCASE "O"IF NOT $OUT[16] AND NOT $IN[10] THENRETURN TRUEELSERETURN FALSEENDIFCASE "C"IF $OUT[16] AND $IN[10] THENRETURN TRUEELSERETURN FALSEENDIFDEFAULTMsgQuit("Element Error")ENDSWITCHCASE 2SWITCH StatusCASE "O"IF NOT $OUT[15] AND NOT $IN[11] THENRETURN TRUEELSERETURN FALSEENDIFCASE "C"IF $OUT[15] AND $IN[11] THENRETURN TRUEELSERETURN FALSEENDIFDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHCASE 3SWITCH StatusCASE "O"IF NOT $OUT[15] AND NOT $OUT[16] AND NOT $IN[10] AND NOT $IN[11] THENELSERETURN FALSEENDIFCASE "C"IF $OUT[15] AND $OUT[16] AND $IN[10] AND $IN[11] THEN RETURN TRUEELSERETURN FALSEENDIFDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHDEFAULTMsgQuit("Element Error")RETURN FALSEENDSWITCHENDFCT10、装夹检测子程序(完成对每台机的装夹检测与装夹异常信号交互)11、后台监视程序(对安全姿态信号自动触发等后台程序进行配置)&ACCESS R&COMMENT HandlerOnRobotFaultDEF IR_STOPM ( );-----------------------------------; Error Handling Robot Controller; Switch OFF and Switch ON processes; KRC Version >= V5.5;-----------------------------------;FOLD DECLARATIONS;FOLD USER DECL; Please insert user defined declarations;ENDFOLD (USER DECL);FOLD BASISTECH DECLBOOL ApplicationRunFlagDECL CHAR ID[3];ENDFOLD (BASISTECH DECL);ENDFOLD (DECLARATIONS);FOLD BASISTECH INITINTERRUPT OFF 3STOPM_FLAG=TRUE ;Reflects state of interrupt 3 to activate/deactivate $Stopmess interrupt ID[]="CTL"If ($STOPMESS==TRUE) THENBRAKE;ENDFOLD (BASISTECH INIT);FOLD USER STOP;Make your modifications here;ENDFOLD (USER STOP);FOLD BASISTECH STOPP00 (#EXT_ERR,#PGNO_GET,ID[],128 )ApplicationRunFlag=FALSEIF (Appl_Run>0) THENIF $OUT[Appl_Run] THENApplicationRunFlag=TRUE$OUT[Appl_Run]=FALSEENDIFENDIFREPEATPOWER=SYNC()HALTUNTIL (($STOPMESS==FALSE) AND ($POWER_FAIL==FALSE)) ;ENDFOLD (BASISTECH STOP);FOLD BASISTECH RESTARTP00 (#EXT_ERR,#PGNO_GET,ID[],0 )IF (ApplicationRunFlag==TRUE) THENIF (Appl_Run>0) THEN$OUT[Appl_Run]=TRUEENDIFENDIF;ENDFOLD (BASISTECH RESTART);FOLD USER RESTART;Make your modifications here;ENDFOLD (USER RESTART);FOLD BASISTECH REACTIVATEEndifINTERRUPT ON 3STOPM_FLAG=FALSE ;Reflects state of interrupt 3 to activate/deactivate $Stopmess interrupt ;ENDFOLD (BASISTECH REACTIVATE)END。