机械手自动化程序
- 格式:docx
- 大小:15.95 KB
- 文档页数:18
机械手工件搬运PLC顺控程序机械手工件搬运PLC顺控程序是一种自动化工艺,用于控制和协调机械手和工业车间中的其他设备,以完成物料和零件的搬运。
PLC(可编程逻辑控制器)是这个系统的核心部分,它包含了一个程序,用于控制机械手的动作,并协调搬运过程中的其他元素,例如输送带、传送机和各种传感器。
该系统的主要应用场景是工业生产线,例如汽车、电子和五金制品制造厂等。
其中最大的优点是实现了高效率、高精度和高质量的生产流程。
本文将深入探讨机械手工件搬运PLC顺控程序的构成、原理和应用,以帮助读者更好地理解和应用这个自动化系统。
1. 构件机械手工件搬运PLC顺控程序由以下四个构件组成:机械手、输送带、传送机和PLC控制器。
机械手是核心部件,它包括一个控制系统和一系列从动部件。
控制系统通常由一个工控机和一个专用的PLC控制器组成,它们负责控制机械手的动作,并与其他设备协调工作。
输送带和传送机是用来传输工件和零件的,通常安装在生产线上。
输送带通常是一条长度较长的带式输送机,由电机驱动,可在两端控制速度和停止运行。
传送机通常是一个类似于传送带的机械臂,负责在不同的生产器件之间传输物品。
这两个设备都配备了传感器,用于激活PLC控制器,以便向机械手指示何时进行抓取和卸载操作。
PLC控制器是整个系统的核心,由一个或多个微处理器组成。
它与机械手、输送带和传送机之间建立通信网络,以便管理工作流程,并实现自动化操作。
因为PLC控制器是可编程的,它可以根据需要进行定制操作,满足不同的生产要求。
2. 工作原理该系统的工作过程如下:- 首先,工件或零件通过输送带或传送机传输到机械手前方,触发传感器。
- 传感器激活PLC控制器,PLC控制器发送信号到机械手,让机械手开始运作。
- 机械手进行抓取动作,把工件从输送带或传送机上抓取下来。
- 机械手在特定的位置上停止,等待PLC控制器发送下一道指令。
- PLC控制器向机械手发送下一道指令,指示机械手如何移动或卸载工件。
epson机械手程序讲解Epson机械手是一种工业机器人,通常用于自动化生产线上的装配、搬运和加工等任务。
它们可以根据预先设定的程序执行各种复杂的动作,从而提高生产效率和质量。
下面我将从不同角度讲解Epson机械手的程序。
首先,Epson机械手的程序可以通过专门的机器人编程软件进行编写和编辑。
这些软件通常提供了图形化的用户界面,使操作人员可以直观地创建机器人动作序列,设置运动路径、速度、加减速度和姿态等参数。
此外,一些软件还支持基于模拟的程序验证,以确保程序的准确性和安全性。
其次,Epson机械手的程序通常包括了各种运动指令、逻辑控制和传感器反馈等元素。
例如,可以通过编程指定机械手的起始位置、目标位置和中间路径,还可以添加逻辑判断,使机械手根据不同的情况执行不同的动作,同时还可以集成传感器反馈,实现对工件位置、质量等信息的实时监测和响应。
此外,Epson机械手的程序还可以与其他设备进行接口和通讯,实现自动化生产线的协调作业。
通过编写程序,可以实现机械手与输送带、加工设备、检测设备等的联动操作,从而实现整个生产过程的自动化控制和优化。
最后,Epson机械手的程序还需要考虑安全性、稳定性和可维护性等方面。
在编写程序时,需要充分考虑机械手在工作过程中的安全保护措施,避免发生意外伤害。
同时,还需要考虑程序的稳定性和可维护性,确保程序的稳定运行和便于日常维护和升级。
总的来说,Epson机械手的程序编写涉及到多个方面,包括机器人编程软件的使用、运动控制、逻辑控制、传感器接口、设备通讯、安全性和稳定性等。
通过合理的程序设计和编写,可以充分发挥Epson机械手在自动化生产中的作用,提高生产效率和质量。
简易机械手PLC控制简介在制造业中,机械手是一种关键的工业自动化设备,用于处理和搬运物品。
机械手的控制非常重要,它决定了机械手的精度和效率。
PLC (可编程逻辑控制器)是一种常用的控制设备,它可以编程来控制机械手的运动和动作。
本文将介绍如何使用PLC控制一个简易机械手的运动。
所需硬件和软件•一台简易机械手•一个PLC设备•一个用于编程的PLC软件步骤步骤一:连接PLC设备和机械手首先,将PLC设备连接到机械手控制器上。
确保连接正确,以便PLC能够发送指令给机械手控制器。
步骤二:安装PLC软件并编程在电脑上安装PLC软件,并启动软件。
创建一个新的项目,并选择适当的PLC类型和通信配置。
然后,开始编程。
步骤三:设置输入输出(IO)点在PLC软件中,设置适当的输入输出(IO)点,以接受和发送信号。
例如,设置一个输入点来接收机械手的位置信号,以便PLC可以确定机械手的当前位置。
同时,设置一个输出点来发送控制信号给机械手,以控制它的动作。
步骤四:编写程序逻辑使用PLC软件编写机械手的控制程序。
根据机械手的需求,编写逻辑来控制机械手的运动和动作。
例如,如果机械手需要抓取一个物体并将其放置到另一个位置,那么编程逻辑应该包括机械手的移动和抓取指令。
确保编写的逻辑合理且有效。
步骤五:测试和调试在PLC软件中,模拟机械手的动作并进行测试。
确保PLC能够正确地控制机械手的运动。
如果发现错误或问题,进行调试并修正程序逻辑。
步骤六:上传程序到PLC当测试和调试完成后,将编写的程序上传到PLC设备中。
确保上传的程序可以在PLC上正确运行。
步骤七:运行机械手一切准备就绪后,运行机械手。
PLC将根据编写的逻辑控制机械手的运动和动作。
结论使用PLC控制机械手是一种常见的工业自动化方法。
通过编写合理的程序逻辑,PLC可以控制机械手的运动和动作,提高生产效率和精度。
希望本文能够帮助读者了解如何使用PLC控制简易机械手。
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。
简易机械手PLC控制示意图如下:2、控制方式:1)手动操作:将机械手复归至原点位置。
2)连续运行:在原点时,按启动按钮,按工作循环图边疆工作一个周期。
一个工作周期工艺过程:原点下降夹紧(T)上升右移下降松(T)上升左移至原点。
3、显示控制Y0------下降Y1------夹紧、放松Y2------上升Y3------右移Y4------左移参考答案:(1)I/O输入、输出分配X0 起动Y0------下降X1 下限X2 上限Y1------夹紧、放松X3 右限X4 左限Y2------上升X5 手动/自动X6 下降Y3------右移X7 夹紧、放松X10 上升Y4------左移X11 右移X12 左移Y5------原点X13 原点X14 急停/复位(2)PLC输入、输出图(3)状态流程图(4)步进状态图X5CJ P0X6Y0 X14 ZRST S20 S28 X7Y1 ZRST Y0 Y5 X10Y2X11Y3X12Y4FENDP0自动程序RETENDS20(5)编写程序LD X5 SET S22CJ P0 STL S22LD X6 RST Y1OUT Y0 OUT T0 K20LD X7 LD T0OUT Y1 SET S23LD X10 STL S23OUT Y2 OUT Y2LD X11 LD X2OUT Y3 SET S24LD X12 STL S24OUT Y4 OUT Y3LD X13 LD X3OUT Y5 SET S25FEND STL S25P0 OUT Y0LD M8000 LD X1SET S0 SET S26STL S0 STL S26LD X14 SET Y1ZRST S20 S28 OUT T1 K20ZRST Y0 Y5 LD T1LD X2 SET S27AND X4 STL S27SET S20 OUT Y2STL S20 LD X2SET Y1 SET S28OUT Y5 STL S28LD X0 OUT Y4SET S21 LD X4STL S21 OUT S20OUT Y0 RETLD X1 END。
epson机械手程序讲解Epson机械手程序讲解Epson机械手是一种先进的自动化设备,广泛应用于工业生产线上。
它的功能强大,可以完成各种复杂的任务,如搬运、装配和焊接等。
今天,我将为大家详细介绍Epson机械手的工作原理和程序控制。
我们来了解一下Epson机械手的结构。
它由基座、臂、手和手指组成。
基座固定在工作台上,臂连接在基座上,并可以在三个方向上移动。
手则连接在臂的末端,并具有多个关节,使机械手可以灵活地移动和旋转。
手指用于抓取物体,具有可调节的力量和灵敏度。
Epson机械手的程序控制是通过编程实现的。
在编写程序之前,我们首先需要对任务进行分析和规划。
然后,我们可以使用Epson机械手的编程软件来编写程序。
编程软件提供了一系列的指令,可以控制机械手的各种动作,如移动、旋转和抓取等。
在编写程序时,我们需要考虑机械手的安全性和效率。
为了确保机械手的安全操作,我们需要设置一些限制条件,如最大速度和力量。
此外,我们还可以使用传感器来检测环境和物体,以避免碰撞和损坏。
一旦程序编写完成,我们就可以将其加载到机械手的控制器中。
控制器是机械手的"大脑",负责解析和执行程序。
一旦程序开始执行,机械手将按照指定的路径和动作进行操作。
通过不断的反馈和调整,机械手可以高效地完成任务。
Epson机械手的运行速度和精度非常高,可以大大提高生产效率和质量。
它可以在短时间内完成大量的工作,而且准确无误。
与传统的人工操作相比,机械手可以减少人力成本和劳动强度,并提高工作环境的安全性。
总结一下,Epson机械手是一种功能强大的自动化设备,可以完成各种复杂的任务。
通过编写程序和控制器的实施,机械手可以高效地工作,并提高生产效率和质量。
它为工业生产线带来了巨大的改变,使生产过程更加安全、快速和精确。
相信随着技术的不断发展,Epson机械手将会在更多领域得到应用。
机械手的程序设计机械手是一种自动化装置,广泛应用于工业生产线、仓储物流等领域。
机械手的程序设计是指为机械手设定一系列的动作和任务,以实现特定的功能和工作流程。
本文将介绍机械手程序设计的基本原理和步骤。
一、机械手程序设计的基本原理机械手程序设计基于控制系统来实现。
控制系统包括硬件设备和软件程序两部分。
硬件设备主要包括机械手臂、传感器、执行器等,而软件程序则负责控制硬件设备的运作。
机械手程序设计的基本原理是将任务分解为一系列的运动和动作,并将其编程到机械手的控制系统中。
机械手可以通过各种传感器获取输入信号,并根据预先编写的程序进行相应的动作。
程序设计需要考虑到机械手的结构特点、工作环境以及任务需求,以保证机械手的安全性和工作效率。
二、机械手程序设计的步骤1. 分析任务需求:首先,需要对机械手的任务需求进行详细的分析和了解。
这包括任务的性质、工作空间的要求、物体的尺寸和重量等。
只有清楚了解任务需求,才能更好地进行程序设计。
2. 设计动作序列:根据任务需求,设计机械手的动作序列。
动作序列是指机械手需要执行的一系列动作和运动。
可以根据实际情况将任务分解为多个子任务,并设计相应的动作序列。
3. 编写程序代码:根据设计的动作序列,编写程序代码。
程序代码需要根据机械手控制系统的编程语言和平台来编写。
常用的编程语言包括C++、Python等。
4. 调试和优化:完成程序编写后,需要对程序进行调试和优化。
通过调试和测试可以发现和解决程序中的错误和问题,并对程序进行优化,提高机械手的工作效率和稳定性。
5. 上机验证和应用:在调试和优化完成后,将程序加载到机械手的控制系统中,并进行实际的上机验证和应用。
根据实际情况对程序进行进一步的调整和改进,以满足任务需求。
三、机械手程序设计的挑战和解决方案1. 运动规划:机械手的运动规划是程序设计的核心问题。
机械手的运动规划需要考虑到物体的位置、运动轨迹、碰撞检测等因素,以实现精确的动作控制。
制造系统自动化技术作业题目:搬运机械手运动控制系统设计班号:学号:姓名:日期:一、设计要求1. 搬运机械手功能示意图2.基本要求与参数本作业要求完成一种二指机械手的运动控制系统设计。
该机械手采用二指夹持结构,如图 1所示,机械手实现对工件的夹持、搬运、放置等操作。
以夹持圆柱体为例,要求设计运动控制系统及控制流程。
机械手通过升降、左右回转、前后伸缩、夹紧及松开等动作完成工件从位置 A 到 B 的搬运工作, 具体操作顺序:逆时针回转 (机械手的初始位置在 A 与 B 之间— >下降— >夹紧— >上升— >顺时针回转— >下降— >松开— >上升,机械手的工作臂都设有限位开关 SQ i 。
设计参数: (1抓重 :10Kg(2最大工作半径:1500mm (3运动参数:伸缩行程:0-1200mm ; 伸缩速度:80mm/s; 升降行程:0-500mm ; 升降速度:50mm/s 回转范围:0-1800控制器要求:(1在 PLC 、单片机、 PC 微机或者 DSP 中任选其一;(2具备回原点、手动单步操作及自动连续操作等基本功能。
AB工件SQ 1SQ 46夹紧松开二、驱动及传动方案的设计及部件的选择初步选定为圆柱坐标式机械手。
, 它适用于搬运和测量工件。
具有直观性好, 结构简单,本体占用的空间较小,而动作范围较大等优点。
圆柱坐标式机械手的工作范围可分为:一个旋转运动, 一个直线运动, 加一个不在直线运动所在的平面内的旋转运动;二个直线运动加一个旋转运动。
选用液压传动系统,工作稳定,易于控制。
1 手部抓取缸液压原理图采用: YF-B10B溢流阀2FRM5-20/102调速阀23E1-10B二位三通阀2 摆动液压回路采用: 2FRM5-20/102调速阀 34E1-10B 换向阀 YF-B10B 溢流阀 3 小臂伸缩缸液压回路采用:YF-B10B 溢流阀 2FRM5-20/102 调速阀 23E1-10B 二位三通阀 4 总体系统图三、二指夹持机构的设计及计算夹紧机械手, 根据工件的形状, 采用最常用的外卡式两指钳爪, 夹紧方式用常闭史弹簧夹紧,松开时,用单作用式液压缸。
机械手的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。
工业自动化中的机械手臂编程与调试教程机械手臂在工业自动化中扮演着重要的角色,它可以完成许多重复、繁琐和危险的工作任务。
然而,机械手臂的编程和调试是一个复杂的过程,需要深入了解机械手臂的工作原理和编程技巧。
本文将为您介绍工业自动化中的机械手臂编程与调试的基本步骤与技巧。
第一步:了解机械手臂工作原理在编程和调试之前,了解机械手臂的工作原理是非常重要的。
大多数机械手臂由多个关节和执行器组成,通过控制这些关节和执行器的运动,可以实现机械手臂的各种功能。
掌握机械手臂的结构和工作原理,有助于更好地理解编程和调试过程中的问题和挑战。
第二步:选择适当的编程语言和环境机械手臂的编程语言和环境有很多选择,包括C/C++、Python、Visual Basic和RoboDK等。
选择适当的编程语言和环境取决于具体的应用需求和机械手臂的型号和品牌。
同时,了解编程语言和环境的特点和优缺点也是必要的,以便更好地应对编程和调试过程中的挑战。
第三步:编写机械手臂的运动控制程序编写机械手臂的运动控制程序是机械手臂编程的核心部分。
在编写程序之前,需要了解机械手臂的运动学和逆运动学原理,以及机械手臂的工作空间和运动范围。
根据具体的应用需求,编写程序来控制机械手臂的运动、定位和姿态调整等功能。
第四步:测试和调试机械手臂的编程程序完成编程后,需要对机械手臂的编程程序进行测试和调试,以确保其能够正常工作和完成预期的任务。
测试和调试过程中,需要注意机械手臂的各个关节和执行器的运动是否准确、是否有异常噪声或震动,并进行必要的调整和修正。
第五步:优化机械手臂的编程程序一旦机械手臂的编程程序能够正常工作,可以进一步优化程序,以提高机械手臂的运动效率和精度。
优化的方法包括调整运动路径、减少加速和减速时间、优化关节运动的顺序和速度等。
通过优化编程程序,可以提高机械手臂的运动效率和生产效率,减少能源消耗和材料浪费。
第六步:定期维护和保养机械手臂为了保证机械手臂的正常运行和延长其使用寿命,定期维护和保养是必要的。
PLC控制机械手程序一、概述PLC(可编程逻辑控制器)是一种专门用于工业自动化控制的计算机控制系统,它通过编程来控制机械设备的运行。
机械手是一种用于自动化生产的机械装置,它能够摹拟人手的动作,完成物料的搬运和组装等工作。
本文将介绍如何编写PLC控制机械手程序,以实现自动化生产过程中的物料搬运任务。
二、程序编写步骤1. 确定任务需求在编写PLC控制机械手程序之前,首先需要明确任务的具体需求。
例如,需要将物料从一个位置搬运到另一个位置,或者需要对物料进行组装等操作。
明确任务需求有助于确定程序的逻辑和功能。
2. 设计程序框图根据任务需求,设计程序的框图。
程序框图是一种图形化的表示方法,用于描述程序的执行流程和逻辑关系。
可以使用专业的PLC编程软件进行设计,或者手绘程序框图。
3. 编写程序代码根据程序框图,编写程序代码。
PLC的编程语言通常是基于 ladder diagram(梯形图)的,它使用类似于电路图的图形符号表示程序的逻辑关系。
根据任务需求,使用适当的逻辑运算、计时器、计数器等功能块来编写程序代码。
4. 调试程序编写完程序代码后,需要对程序进行调试。
可以使用PLC的仿真软件进行调试,摹拟机械手的运行过程,检查程序的逻辑是否正确,是否能够实现预期的功能。
5. 上机械手进行实际测试经过程序调试后,将程序下载到PLC控制器中,然后连接机械手进行实际测试。
在测试过程中,需要对机械手的运行轨迹、速度、力度等进行监控和调整,确保机械手能够准确地完成任务。
三、示例程序下面是一个简单的示例程序,用于将物料从起始位置搬运到目标位置。
1. 定义输入输出变量输入变量:- 按钮1:启动按钮- 传感器1:起始位置传感器- 传感器2:目标位置传感器输出变量:- 电磁阀1:机械手抓取气缸控制- 电磁阀2:机械手放置气缸控制2. 编写程序代码根据任务需求和输入输出变量的定义,编写程序代码如下:```Network 1: Main// 定义变量VarStartButton: BOOL; // 启动按钮StartSensor: BOOL; // 起始位置传感器TargetSensor: BOOL; // 目标位置传感器GrabCylinder: BOOL; // 机械手抓取气缸控制 PlaceCylinder: BOOL; // 机械手放置气缸控制 End_Var// 程序逻辑Network 1.1: Start// 按钮1按下时,启动机械手StartButton := I:1/0;StartSensor := I:2/0;TargetSensor := I:3/0;If StartButton ThenGrabCylinder := True; // 启动机械手抓取气缸 End_IfEnd_NetworkNetwork 1.2: Move// 当机械手抓取到物料后,挪移到目标位置If StartSensor And GrabCylinder ThenGrabCylinder := False; // 住手机械手抓取气缸PlaceCylinder := True; // 启动机械手放置气缸End_IfEnd_NetworkNetwork 1.3: Finish// 当机械手到达目标位置后,任务完成If TargetSensor And PlaceCylinder ThenPlaceCylinder := False; // 住手机械手放置气缸End_IfEnd_NetworkEnd_Network```四、总结通过以上步骤,我们可以编写出一个简单的PLC控制机械手程序。
中北大学信息商务学院课程设计说明书学生姓名:学号:系:机械自动化系专业:机械设计制造及其自动化题目:数控技术课程设计——机械手自动操作控制的PLC程序设计指导教师:职称:职称:2016年12月5日中北大学信息商务学院课程设计任务书2016/2017 学年第 1 学期所在系:机械工程系专业:机械设计制造及其自动化学生姓名:学号:课程设计题目:数控技术课程设计—机械手自动操作控制的PLC程序设计起迄日期:2016年12月5日~2016年12月9日课程设计地点:中北大学信息商务学院指导教师:系主任:暴建岗下达任务书日期: 2016 年12月 5日课程设计任务书1.设计目的:通过对机械手自动操作控制的PLC程序设计,使学生在熟练机械手的动作顺序与原理的基础上,学会应用PLC。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):机械手将工件从A工作台搬到B工作台。
机械手的工作过程由8个动作完成一个循环,如图所示。
取放工件的上升/下降和左移/右移分别用YV1、YV3、YV4和YV5控制,夹具的夹紧和放松由电磁阀YV2控制。
当工件搬到B工作台返回时,用光电开关SQ7发出无工件信号。
(1)采用内部移位寄存器M100~ M117逐位输出方式实现顺序控制,移位条件是对各限位开关(SQ1~SQ6)的状态检测来决定。
(2)夹紧或放松动作,分别用定时器T450、T451延时控制。
(3)采用具有保持功能的辅助继电器M202驱动夹紧阀。
通过本课程设计,完成①输入输出信号分析与PLC I/O分配图②PLC选型③主要元器件型号的选择④主接线图设计⑤完成梯形图设计并完成相应指令。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:目录1机械手的工作原理1.1 机械手的概述 (1)1.2 机械手的工作方式 (2)2机械手控制程序设计2.1 输入和输出点分配表及原理接线图 (3)2.2 控制程序 (4)3梯形图及指令表3.1 梯形图 (9)3.2 指令表 (11)总结 (13)参考文献 (14)附录 (15)1机械手的工作原理1.1机械手的概述能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
机械手臂编程方式机械手臂是目前工业领域中广泛应用的自动化设备之一,它的任务是完成机械加工、组装等重复性较强的工作,大大提高了生产效率。
而机械手臂的编程方式则是控制机械手臂进行相应动作的关键。
机械手臂的编程方式有哪些呢?下面我们就来一一介绍。
第一种,基于示教编程方式。
这是最早的机械手臂编程方式,操作人员通过机械臂手柄或者教导器,现场演示需要完成的动作,机械手臂自动将动作录制下来,并存储下来。
当需要执行该动作时,机械手臂就会自动执行存储的动作。
这种编程方式适用于一些重复性较强、操作规律性较强的任务,如流水线组装、物料搬运等,但是它有很大的局限性,这种编程方式难以实现一些较为复杂、多变的任务。
第二种,基于离线编程方式。
这种编程方式将机械手臂的编程和现场操作分离。
在计算机上安装专门的编程软件,编写机械手臂的程序并储存到计算机上,然后将编写好的程序下载到机械手臂的控制器中。
这种编程方式可以有效地提高效率,而且能够很好地适应不同的任务类型,但是它需要专业的编程人员来完成,对——操作人员的要求也较高。
第三种,基于机器学习的编程方式。
作为一种新兴的编程方式,机器学习技术对机械手臂的编程方式带来了革命性的变化。
它是基于人工智能算法的自主学习和自主适应,通过训练机械手臂进行人类行为模拟,从而实现机械手臂完成复杂的任务。
它可以快速地适应新任务,并且不需要人工编程,大大减少了人员培训成本,大大提高生产效率。
总的来说,机械手臂的编程方式日趋多样化,每一种编程方式都有自己的优势和特点,面对复杂多变、频繁更新的生产任务,我们需要结合任务特点选用最合适的编程方式。
同时,在提高生产效率的同时,也要注意保证机械手臂的安全保障和人机协同。
涂装机械手自动化系统操作流程涂装机械手自动化系统是现代工业生产中广泛应用的一种设备,它能够实现物体的自动喷涂,提高生产效率和涂装质量。
为了正确操作涂装机械手自动化系统,以下是一个操作流程的示例。
一、准备工作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 关闭涂装机械手自动化系统。
关闭涂装机械手自动化系统的主控制面板,并进行必要的系统维护工作。
总结:涂装机械手自动化系统操作流程的正确执行可以保证涂装质量和工作效率的提高。
在操作前需要确保准备工作的充分,包括检查设备状态、准备涂料和个人防护装备等。
mcgs机械手控制实例简介本文介绍了mcgs机械手控制实例的基本概念和操作步骤。
mcgs是一种常用的人机界面软件,可用于控制和监视机械手的运动和操作。
通过本文,您将学习如何使用mcgs软件来控制机械手,实现自动化操作。
准备工作在开始控制机械手之前,您需要做一些准备工作:1.安装mcgs软件:您可以从官方网站上下载并安装mcgs软件。
2.连接机械手:将机械手与电脑进行连接,确保连接正常。
步骤以下是使用mcgs软件控制机械手的步骤:1.打开mcgs软件:在电脑上找到mcgs软件的图标,并双击打开软件。
2.创建新项目:在mcgs软件的主界面上,选择“新建项目”,输入项目名称和保存路径,并点击“确定”。
3.添加机械手控制组件:在mcgs软件的项目界面上,点击“组态”模块,在工具栏中找到“机械手控制”组件,并拖拽到画布上。
4.配置机械手参数:选中机械手控制组件,在属性面板中配置机械手的参数,例如串口通信方式、波特率、校验位等。
5.添加按钮组件:在mcgs软件的项目界面上,点击“组态”模块,在工具栏中找到“按钮”组件,并拖拽到画布上。
6.配置按钮参数:选中按钮组件,在属性面板中配置按钮的参数,例如显示文本、字体大小、按钮颜色等。
7.添加按钮点击事件:选中按钮组件,在属性面板中找到“点击事件”,并点击“编辑”按钮。
8.编写按钮点击事件脚本:在按钮点击事件脚本编辑器中,编写机械手控制的脚本代码。
例如,通过调用mcgs提供的机械手API来控制机械手的运动。
9.保存并运行项目:点击mcgs软件的运行按钮,保存项目并运行。
10.测试机械手控制:点击按钮组件,测试机械手的运动状态是否符合预期。
扩展功能通过以上步骤,您已经实现了基本的mcgs机械手控制实例。
以下是一些扩展功能的建议:1.添加更多按钮组件:使用mcgs软件提供的按钮组件,添加更多按钮,以实现不同的机械手运动控制。
2.添加图形化界面:通过mcgs软件提供的图形化界面组件,设计一个更美观和直观的机械手控制界面。
目录1机械手的工作原理1.1 机械手的概述 (1)1.2 机械手的工作方式 (2)2机械手控制程序设计2.1 输入和输出点分配表及原理接线图 (3)2.2 控制程序 (4)3梯形图及指令表3.1 梯形图 (9)3.2 指令表 (11)总结 (13)参考文献 (14)附录 (15)1机械手的工作原理1.1机械手的概述能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。
机械手主要由手部和运动机构组成。
手部是用来抓持工件(或工具)的部件,根据被抓持物件的形状、尺寸、重量、材料和作业要求而有多种结构形式,如夹持型、托持型和吸附型等。
运动机构,使手部完成各种转动(摆动)、移动或复合运动来实现规定的动作,改变被抓持物件的位置和姿势。
运动机构的升降、伸缩、旋转等独立运动方式,称为机械手的自由度。
为了抓取空间中任意位置和方位的物体,需有6个自由度。
自由度是机械手设计的关键参数。
自由度越多,机械手的灵活性越大,通用性越广,其结构也越复杂。
一般专用机械手有2~3个自由度。
机械手的种类,按驱动方式可分为液压式、气动式、电动式、机械式机械手;按适用范围可分为专用机械手和通用机械手两种;按运动轨迹控制方式可分为点位控制和连续轨迹控制机械手等。
机械手通常用作机床或其他机器的附加装置,如在自动机床或自动生产线上装卸和传递工件,在加工中心中更换刀具等,一般没有独立的控制装置。
有些操作装置需要由人直接操纵,如用于原子能部门操持危险物品的主从式操作手也常称为机械手。
机械手虽然目前还不如人手那样灵活,但它具有能不断重复工作和劳动、不知疲劳、不怕危险、抓举重物的力量比人手大等特点,因此,机械手已受到许多部门的重视,并越来越广泛地得到了应用,例如:1、机床加工工件的装卸,特别是在自动化车床、组合机床上使用较为普遍。
机械手自动生产操作一:开机程序 1:开机前先检查空气压力表是否为:5kg/c m 。
2:打开配电箱的电源,再打开掌上控制器的开关,确认电路正常。
3:检查注射机的安全门信号:机器在开模完位置时信号显示:MOP*(开),机器在关模完位置时信号显示:MCP*(开)。
4:把设备的开模位置开到安全位置。
防止机械手在下来时碰伤模具或者机械手。
机械手在动状态下时,按下降调整设备和机械手的合适位置。
5:控制器的面板按为开,按键为关。
“*”为打开状态,“-”为关闭状态。
二:形式设定方法1:按键,再按键。
选择下面的需要形式: * MP 制品侧使用 机械手从产品的侧面取出。
* MR 浇道侧使用 机械手从浇道的侧面取出.(一般为关闭状态)* MA 在前进位置下降 设定在*时即先前进再下降,设定在“-”时即先下降再前进。
* ME 顶出连动使用 即机器在顶出时机械手同步吸附和夹取产品。
可以选择T19的时间设定来配合动作。
* MK 模内开放使用(一般为关闭状态)即机械手夹好产品后退在还没有上升前夹具开放。
* M2 落下侧下降可产品在落下侧的下降位置中开放。
* MTS 取出侧姿势用因为产品太长或者安全门太高防止碰撞而设定,横行前先90度回转以后,再横行动作。
*MPS 姿势回转使用产品在落下侧的位置做90度回转复归动作。
* MTA 前进后再横行在上升位置还没有横行前,先做前进以后再横行。
(因为产品太长防止碰到机器和产品设定。
)*MPF 料口走出中开放即料头在横行中先放下料根,等到T16的时间到了以后再继续前进到落下侧放下产品,方便粉碎料根。
* M4V 真空确认使用即机械手吸着产品后用信号开关监控。
打开后开关位置需要作调整。
* M4P 成品确认使用即机械手夹着产品后用信号开关监控。
打开后开关位置需要作调整三:时间的设定方法1:T1 下降时间从取出手臂下降到前进中间的时间。
2:T2 前进时间从手臂前进到夹具闭合的中间时间。
3:T3 顶出连动等待机器顶出动作到夹具闭合开始的中间时间。
自动化冲床机械手自动化冲床机械手是一种用于工业生产中的自动化设备,它能够完成冲床操作过程中的各种动作和任务。
本文将详细介绍自动化冲床机械手的工作原理、主要组成部分、技术参数以及应用领域等内容。
一、工作原理自动化冲床机械手是通过编程控制实现自动化操作的,其工作原理主要包括以下几个步骤:1. 接收指令:机械手通过与控制系统连接,接收来自控制系统的指令。
2. 运动控制:根据接收到的指令,机械手通过控制系统控制各个关节的运动,实现冲床操作过程中的各种动作。
3. 传感器反馈:机械手配备了各种传感器,用于检测工件的位置、尺寸等信息,并将这些信息反馈给控制系统,以便进行精确的运动控制。
4. 完成任务:机械手根据指令和传感器反馈的信息,完成冲床操作过程中的各项任务,如抓取工件、放置工件、调整工件位置等。
二、主要组成部分自动化冲床机械手主要由以下几个组成部分构成:1. 机械结构:包括机械臂、关节、末端执行器等,用于实现机械手的运动和动作。
2. 控制系统:包括控制器、编程设备等,用于控制机械手的运动和动作。
3. 传感器系统:包括位置传感器、力传感器等,用于检测工件的位置、尺寸以及机械手的力量等信息。
4. 电气系统:包括电机、电源等,用于提供动力和电源供应。
5. 通信系统:用于与其他设备或系统进行数据交换和通信。
三、技术参数自动化冲床机械手的技术参数通常包括以下几个方面:1. 载荷能力:指机械手能够承载的最大重量,通常以千克为单位。
2. 作业半径:指机械手末端执行器的最大作业范围,通常以毫米为单位。
3. 重复定位精度:指机械手在重复执行同一动作时的定位精度,通常以毫米为单位。
4. 运动速度:指机械手在执行动作时的最大运动速度,通常以毫米/秒为单位。
5. 控制精度:指机械手在执行动作时的控制精度,通常以毫米为单位。
四、应用领域自动化冲床机械手广泛应用于各个领域的工业生产中,主要包括以下几个方面:1. 汽车制造:机械手可以用于汽车冲压生产线上的冲床操作,如车身冲压、零部件冲压等。
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$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$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD;FOLD PTP P3 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT8FDAT_ACT=FP3BAS(#PTP_PARAMS,100)PTP XP3 C_DIS;ENDFOLD;FOLD LIN P2 CONT Vel$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P1 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP1BAS(#CP_PARAMS,0.05)LIN XP1;ENDFOLD;FOLD PTP HOME Vel$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$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$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$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$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD$OUT[16]=TRUE;FOLD LIN P3 CONT Vel$BWDSTART=FALSELDAT_ACT=LCPDAT11FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3 C_DIS C_DIS;ENDFOLD;FOLD LIN P2 CONT Vel$BWDSTART=FALSELDAT_ACT=LCPDAT5FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P1 Vel$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)$OUT[5]=TRUE;ENDFOLDIF NOT Machine1_OnlyDrop THEN;FOLD PTP P1 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT4FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLDmark:;FOLD LIN P2 CONT Vel$BWDSTART=FALSELDAT_ACT=LCPDAT4FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD LIN P3 CONT Vel$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$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(2,"C") Part1InRight = TRUE;FOLD LIN P2 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT6FDAT_ACT=FP2BAS(#CP_PARAMS,0.05)LIN XP2;ENDFOLDIF NOT $IN[11] THENGOTO markENDIF;FOLD PTP P4 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT10FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT8FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(1,"O");FOLD PTP P6 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT14FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT9FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDELSE;FOLD PTP P5 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT13FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT9FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7Gripper_SetStatus(1,"O");FOLD PTP P6 Vel$BWDSTART=FALSEPDAT_ACT=PPDAT12FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6;ENDFOLD;FOLD PTP P8 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT7FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDMachine_Start(1);FOLD PTP HOME Vel$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)$OUT[8]=TRUEIF NOT Machine2_OnlyDrop THEN ;FOLD PTP P1 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT3FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLDmark:;FOLD PTP P2 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT4FDAT_ACT=FP2BAS(#PTP_PARAMS,100)PTP XP2 C_DIS;ENDFOLD;FOLD LIN P3 Vel$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$BWDSTART=FALSELDAT_ACT=LCPDAT0FDAT_ACT=FP3BAS(#CP_PARAMS,2)LIN XP3;ENDFOLDGripper_SetStatus(1,"C")Part2InLeft = TRUE;FOLD LIN P2 CONT Vel$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$BWDSTART=FALSEPDAT_ACT=PPDAT7FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;ENDFOLD;FOLD PTP P5 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT14FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT9FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT7FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(2,"O");FOLD PTP P6 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT11FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT12FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDELSE;FOLD PTP P5 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT13FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLD;FOLD PTP P6 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT1FDAT_ACT=FP6BAS(#PTP_PARAMS,100)PTP XP6 C_DIS;ENDFOLD;FOLD LIN P7 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP7BAS(#CP_PARAMS,0.25)LIN XP7;ENDFOLDGripper_SetStatus(2,"O");FOLD LIN P6 CONT Vel$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP6BAS(#CP_PARAMS,2)LIN XP6 C_DIS C_DIS;ENDFOLD;FOLD PTP P8 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP8BAS(#PTP_PARAMS,100)PTP XP8 C_DIS;ENDFOLDMachine_Start(2);FOLD PTP HOME Vel5: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)$OUT[11]=TRUE;ENDFOLD;FOLD PTP P1 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT6FDAT_ACT=FP1BAS(#PTP_PARAMS,100)PTP XP1 C_DIS;ENDFOLD;FOLD PTP P2 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT2FDAT_ACT=FP2BAS(#PTP_PARAMS,100)PTP XP2 C_DIS;ENDFOLD;FOLD LIN P3 Vel$BWDSTART=FALSELDAT_ACT=LCPDAT1FDAT_ACT=FP3BAS(#CP_PARAMS,0.25)LIN XP3;ENDFOLDGripper_SetStatus(1,"O");FOLD LIN P2 CONT Vel$BWDSTART=FALSELDAT_ACT=LCPDAT2FDAT_ACT=FP2BAS(#CP_PARAMS,2)LIN XP2 C_DIS C_DIS;ENDFOLD;FOLD PTP P4 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT3FDAT_ACT=FP4BAS(#PTP_PARAMS,100)PTP XP4 C_DIS;FOLD PTP P5 CONT Vel$BWDSTART=FALSEPDAT_ACT=PPDAT5FDAT_ACT=FP5BAS(#PTP_PARAMS,100)PTP XP5 C_DIS;ENDFOLDMachine_Start(3);FOLD PTP HOME Vel$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\vorgabe DEF SevenAxis_Run(Num:IN)INT NumSWITCH NumCASE 1PULSE($OUT[1], TRUE,1);ENDFOLDPULSE($OUT[14], TRUE,1);ENDFOLDWAIT FOR $IN[2]$OUT[1] = FALSE$OUT[14] = FALSECASE 2PULSE($OUT[2], TRUE,1)PULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[2] = FALSE$OUT[14] = FALSECASE 36:, 8:1PULSE($OUT[3], TRUE,1);ENDFOLDPULSE($OUT[14], TRUE,1);ENDFOLDWAIT SEC 0.5WAIT FOR $IN[2]$OUT[3] = FALSE$OUT[14] = FALSECASE 4PULSE($OUT[4], TRUE,1);ENDFOLDPULSE($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$OUT[5]=FALSE;ENDFOLDPULSE($OUT[6], TRUE,0.5);ENDFOLDCASE 2$OUT[8]=FALSE;ENDFOLDPULSE($OUT[9], TRUE,0.5);ENDFOLDCASE 3$OUT[11]=FALSE;ENDFOLDPULSE($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。