机械手自动化程序
机械手工件搬运PLC顺控程序
机械手工件搬运PLC顺控程序机械手工件搬运PLC顺控程序是一种自动化工艺,用于控制和协调机械手和工业车间中的其他设备,以完成物料和零件的搬运。
PLC(可编程逻辑控制器)是这个系统的核心部分,它包含了一个程序,用于控制机械手的动作,并协调搬运过程中的其他元素,例如输送带、传送机和各种传感器。
该系统的主要应用场景是工业生产线,例如汽车、电子和五金制品制造厂等。
其中最大的优点是实现了高效率、高精度和高质量的生产流程。
本文将深入探讨机械手工件搬运PLC顺控程序的构成、原理和应用,以帮助读者更好地理解和应用这个自动化系统。
1. 构件机械手工件搬运PLC顺控程序由以下四个构件组成:机械手、输送带、传送机和PLC控制器。
机械手是核心部件,它包括一个控制系统和一系列从动部件。
控制系统通常由一个工控机和一个专用的PLC控制器组成,它们负责控制机械手的动作,并与其他设备协调工作。
输送带和传送机是用来传输工件和零件的,通常安装在生产线上。
输送带通常是一条长度较长的带式输送机,由电机驱动,可在两端控制速度和停止运行。
传送机通常是一个类似于传送带的机械臂,负责在不同的生产器件之间传输物品。
这两个设备都配备了传感器,用于激活PLC控制器,以便向机械手指示何时进行抓取和卸载操作。
PLC控制器是整个系统的核心,由一个或多个微处理器组成。
它与机械手、输送带和传送机之间建立通信网络,以便管理工作流程,并实现自动化操作。
因为PLC控制器是可编程的,它可以根据需要进行定制操作,满足不同的生产要求。
2. 工作原理该系统的工作过程如下:- 首先,工件或零件通过输送带或传送机传输到机械手前方,触发传感器。
- 传感器激活PLC控制器,PLC控制器发送信号到机械手,让机械手开始运作。
- 机械手进行抓取动作,把工件从输送带或传送机上抓取下来。
- 机械手在特定的位置上停止,等待PLC控制器发送下一道指令。
- PLC控制器向机械手发送下一道指令,指示机械手如何移动或卸载工件。
简易机械手PLC控制
简易机械手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控制简易机械手。
机械手自动操作控制的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机械手的概述能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
机械手自动操作控制的PLC程序设计
中北大学信息商务学院课程设计说明书学生姓名: 学号:系: 机械自动化系专业: 机械设计制造及其自动化题目: 数控技术课程设计——机械手自动操作控制的PLC程序设计指导教师:职称:职称:2016年12月5日中北大学信息商务学院课程设计任务书2016/2017 学年第 1 学期所在系: 机械工程系专业: 机械设计制造及其自动化学生姓名: 学号:课程设计题目: 数控技术课程设计—机械手自动操作控制的PLC程序设计起迄日期: 2016年12月5日~2016年12月9日课程设计地点: 中北大学信息商务学院指导教师:系主任: 暴建岗下达任务书日期: 2016 年12月 5日课程设计任务书机械手将工件从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.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:要求独立完成机械手自动操作控制的PLC程序设计,包括程序的编制与调试,并根据规定格式完成课程设计说明书的撰写。
4.主要参考文献:按国标GB 7714—87《文后参考文献著录规则》书写:1. 廖常初,FX系列PLC编程的应用.北京:机械工业出版社,2005、42. 范永胜,王岷.电气控制与PLC应用.北京:中国电力出版社,20073. 齐从谦,王士兰.PLC技术及应用.北京:机械工业出版社,2000、8目录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 关闭涂装机械手自动化系统。
关闭涂装机械手自动化系统的主控制面板,并进行必要的系统维护工作。
总结:涂装机械手自动化系统操作流程的正确执行可以保证涂装质量和工作效率的提高。
在操作前需要确保准备工作的充分,包括检查设备状态、准备涂料和个人防护装备等。
epson机械手程序讲解
epson机械手程序讲解Epson机械手程序讲解Epson机械手是一种先进的自动化设备,广泛应用于工业生产线上。
它的功能强大,可以完成各种复杂的任务,如搬运、装配和焊接等。
今天,我将为大家详细介绍Epson机械手的工作原理和程序控制。
我们来了解一下Epson机械手的结构。
它由基座、臂、手和手指组成。
基座固定在工作台上,臂连接在基座上,并可以在三个方向上移动。
手则连接在臂的末端,并具有多个关节,使机械手可以灵活地移动和旋转。
手指用于抓取物体,具有可调节的力量和灵敏度。
Epson机械手的程序控制是通过编程实现的。
在编写程序之前,我们首先需要对任务进行分析和规划。
然后,我们可以使用Epson机械手的编程软件来编写程序。
编程软件提供了一系列的指令,可以控制机械手的各种动作,如移动、旋转和抓取等。
在编写程序时,我们需要考虑机械手的安全性和效率。
为了确保机械手的安全操作,我们需要设置一些限制条件,如最大速度和力量。
此外,我们还可以使用传感器来检测环境和物体,以避免碰撞和损坏。
一旦程序编写完成,我们就可以将其加载到机械手的控制器中。
控制器是机械手的"大脑",负责解析和执行程序。
一旦程序开始执行,机械手将按照指定的路径和动作进行操作。
通过不断的反馈和调整,机械手可以高效地完成任务。
Epson机械手的运行速度和精度非常高,可以大大提高生产效率和质量。
它可以在短时间内完成大量的工作,而且准确无误。
与传统的人工操作相比,机械手可以减少人力成本和劳动强度,并提高工作环境的安全性。
总结一下,Epson机械手是一种功能强大的自动化设备,可以完成各种复杂的任务。
通过编写程序和控制器的实施,机械手可以高效地工作,并提高生产效率和质量。
它为工业生产线带来了巨大的改变,使生产过程更加安全、快速和精确。
相信随着技术的不断发展,Epson机械手将会在更多领域得到应用。
机械手的程序设计
机械手的程序设计机械手是一种自动化装置,广泛应用于工业生产线、仓储物流等领域。
机械手的程序设计是指为机械手设定一系列的动作和任务,以实现特定的功能和工作流程。
本文将介绍机械手程序设计的基本原理和步骤。
一、机械手程序设计的基本原理机械手程序设计基于控制系统来实现。
控制系统包括硬件设备和软件程序两部分。
硬件设备主要包括机械手臂、传感器、执行器等,而软件程序则负责控制硬件设备的运作。
机械手程序设计的基本原理是将任务分解为一系列的运动和动作,并将其编程到机械手的控制系统中。
机械手可以通过各种传感器获取输入信号,并根据预先编写的程序进行相应的动作。
程序设计需要考虑到机械手的结构特点、工作环境以及任务需求,以保证机械手的安全性和工作效率。
二、机械手程序设计的步骤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程序
机械手控制plc程序【原创实用版】目录一、引言二、PLC 的基本概念与特点1.可编程逻辑控制器的定义2.PLC 的基本结构与工作原理3.PLC 的应用领域与优势三、PLC 程序设计方法与技巧1.指令的使用2.程序的设计流程3.程序的调试与优化四、机械手与 PLC 的结合1.机械手的基本概念与结构2.机械手的运动控制与 PLC 的关联3.实际应用案例分析五、结论正文一、引言随着科技的飞速发展,工业自动化技术在我国得到了广泛的应用,尤其是可编程逻辑控制器(PLC)技术。
PLC 作为一种广泛应用于工业自动化控制领域的设备,已经逐渐成为生产自动化过程中的重要组成部分。
机械手作为现代制造业中一种重要的自动化设备,其运动控制与 PLC 密切相关。
本文将围绕机械手控制 PLC 程序这一主题,介绍 PLC 的基本概念与特点,以及 PLC 程序设计方法与技巧,并结合实际案例分析机械手与PLC 的结合应用。
二、PLC 的基本概念与特点1.可编程逻辑控制器的定义可编程逻辑控制器(Programmable Logic Controller,简称 PLC),是一种专门用于工业自动化控制领域的数字计算机,具有较高的性能、可靠性和可维护性。
2.PLC 的基本结构与工作原理PLC主要由输入/输出(I/O)模块、中央处理器(CPU)、存储器和通信接口等组成。
其工作原理是:CPU根据输入信号的状态,执行存储器中预先编写好的程序,根据程序的逻辑关系,输出相应的控制信号,从而实现对机械设备等被控对象的自动化控制。
3.PLC 的应用领域与优势PLC 广泛应用于各种工业自动化控制场合,如生产线、机器人、自动化装配线等。
其优势主要体现在:较高的性价比、较强的通用性和可扩展性、易于编程与维护等。
三、PLC 程序设计方法与技巧1.指令的使用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单周工作方式:按下起动按钮后,机械手按下降→加紧→上升→右移→下降→放松→上升→左移的顺序自动工作一个周期停止。
若要再工作一个周期,可再次按下起动按钮。
按下停止按钮,机械手将自动结束本周期的工作,回到原位后停止。
工业自动化中的机械手臂编程与调试教程
工业自动化中的机械手臂编程与调试教程机械手臂在工业自动化中扮演着重要的角色,它可以完成许多重复、繁琐和危险的工作任务。
然而,机械手臂的编程和调试是一个复杂的过程,需要深入了解机械手臂的工作原理和编程技巧。
本文将为您介绍工业自动化中的机械手臂编程与调试的基本步骤与技巧。
第一步:了解机械手臂工作原理在编程和调试之前,了解机械手臂的工作原理是非常重要的。
大多数机械手臂由多个关节和执行器组成,通过控制这些关节和执行器的运动,可以实现机械手臂的各种功能。
掌握机械手臂的结构和工作原理,有助于更好地理解编程和调试过程中的问题和挑战。
第二步:选择适当的编程语言和环境机械手臂的编程语言和环境有很多选择,包括C/C++、Python、Visual Basic和RoboDK等。
选择适当的编程语言和环境取决于具体的应用需求和机械手臂的型号和品牌。
同时,了解编程语言和环境的特点和优缺点也是必要的,以便更好地应对编程和调试过程中的挑战。
第三步:编写机械手臂的运动控制程序编写机械手臂的运动控制程序是机械手臂编程的核心部分。
在编写程序之前,需要了解机械手臂的运动学和逆运动学原理,以及机械手臂的工作空间和运动范围。
根据具体的应用需求,编写程序来控制机械手臂的运动、定位和姿态调整等功能。
第四步:测试和调试机械手臂的编程程序完成编程后,需要对机械手臂的编程程序进行测试和调试,以确保其能够正常工作和完成预期的任务。
测试和调试过程中,需要注意机械手臂的各个关节和执行器的运动是否准确、是否有异常噪声或震动,并进行必要的调整和修正。
第五步:优化机械手臂的编程程序一旦机械手臂的编程程序能够正常工作,可以进一步优化程序,以提高机械手臂的运动效率和精度。
优化的方法包括调整运动路径、减少加速和减速时间、优化关节运动的顺序和速度等。
通过优化编程程序,可以提高机械手臂的运动效率和生产效率,减少能源消耗和材料浪费。
第六步:定期维护和保养机械手臂为了保证机械手臂的正常运行和延长其使用寿命,定期维护和保养是必要的。
PLC控制机械手程序
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控制机械手程序。
机械手自动化程序0915
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第一次响应只放标志位置1ELSEMachine1_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 DOIR_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}%R8.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+1Count_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)WAIT 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);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] = 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.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);ENDFOLDMsgQuit("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\vorgabe DEF 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]Part2InLeft = 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"INTERRUPT 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\FunctionVorgabeDEFFCT BOOL Gripper_ChkStatus(Num:IN,Status:IN)INT NumCHAR StatusSWITCH NumSWITCH StatusCASE "O"IF NOT $OUT[16] AND NOT $IN[10] THEN RETURN 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] THEN RETURN TRUEELSECASE "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] THENRETURN TRUEELSERETURN FALSEENDIFCASE "C"IF $OUT[15] AND $OUT[16] AND $IN[10] AND $IN[11] THENRETURN TRUERETURN 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 interruptID[]="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控制程序
机械手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机械手程序的设计引言PLC机械手程序设计是自动化控制领域中至关重要的一部分。
PLC(可编程逻辑控制器)是一种专门用于控制工业过程的计算机,而机械手是一种可编程的工业,可用于执行各种物料搬运和加工操作。
本文将介绍PLC机械手程序的设计方法和步骤。
设计步骤步骤一:分析需求在进行PLC机械手程序设计之前,需要对机械手的功能和需求进行充分的分析。
这包括确定机械手的动作方式、工作环境、工作对象等。
通过清晰地分析需求,可以为后续的程序设计提供明确的目标。
步骤二:编写程序框架在进行PLC机械手程序设计之前,我们可以先编写一个程序框架作为设计的起点。
程序框架应包括主程序和子程序的结构,以及各个程序块的名称和功能注释。
这有助于提高程序的可读性和可维护性。
步骤三:设计IO绑定机械手的控制信号通常通过IO(输入/输出)模块与PLC进行交互。
在设计程序时,需要确定每个输入和输出信号与机械手的具体控制功能之间的对应关系。
这可以通过一个IO绑定表或者注释来实现。
步骤四:编写主程序主程序是PLC机械手程序中最重要的部分。
在编写主程序时,需要确定机械手的运行模式,例如手动模式、自动模式或者远程模式。
需要根据需求设计机械手的运动流程和控制逻辑,包括机械手的起始位置、目标位置、速度和加速度等参数。
需要实现与机械手相关的安全保护措施,以确保工作的安全性和可靠性。
步骤五:编写子程序子程序是PLC机械手程序中用于执行特定功能的小程序。
在编写子程序时,需要根据需求设计每个子程序的功能和流程。
这包括机械手的抓取动作、释放动作、旋转动作等。
各个子程序之间可以通过调用和返回的方式实现程序的模块化和复用。
步骤六:和调试在完成PLC机械手程序的编写后,需要进行和调试以确保程序的正确性和稳定性。
这可以通过连接实际的机械手硬件进行现场,或者使用仿真器进行离线调试。
在和调试过程中,需要逐步检查各个程序块的运行情况,并进行必要的修正和优化。
机械手自动操作控制的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机械手的概述能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
机械手PLC控制程序
一、要求机械手的PLC控制1.设备基本动作:机械手的动作过程分为顺序的8个工步:既从原位开始经下降、夹紧、上升、右移、下降、放松、上升、左移8个动作后完成一个循环(周期)回到原位。
并且只有当右工作台上无工件时,机械手才能从右上位下降,否则,在右上位等待。
2.控制程序可实现手动、自动两种操作方式;自动又分为单工步、单周期、连续三种工作方式。
3.设计既有自动方式也有手动方式满足上述要求的梯形图和相应的语句表。
4. 在实验室实验台上运行该程序。
二参考1. “PLC电气控制技术——CPM1A系列和S7-200”书中212页“8.1.3机械手的控制”2. “机床电气控制”第三版王炳实主编书中156页“三、机械手控制的程序设计”。
3.“可编程控制器原理及应用”宫淑贞徐世许编著人民邮电出版社书中P168—P175例4.6。
其中工作方式时手动、自动(单步)、单周期、连续;还有自动工作方式下的误操作禁止程序段(安全可靠)。
注解:“PLC电气控制技术——CPM1A系列和S7-200”书中212页“8.1.3机械手的控制”例中只有手动和自动(连续)两种操作模式,使用顺序控制法编程。
PLC 机型选用CPM2A-40型,其内部继电器区和指令与CPM1A系列的CPM有所不同。
“机床电气控制”第三版王炳实主编书中156页“三、机械手控制的程序设计”。
本例中的程序是用三菱公司的F1系列的PLC指令编制。
有手动、自动(单工步、单周期、连续)操作方式。
手动方式与自动方式分开编程。
参考其编程思想。
“可编程控制器原理及应用”宫淑贞徐世许编著人民邮电出版社书中P168—P175例4.6。
其中工作方式有手动、自动(单步)、单周期、连续;还有自动工作方式下的误操作禁止程序段(安全可靠)。
用CPM1A编程。
这里“误操作禁止”是指当自动(单工步、单周期、连续)工作方式时,按一次操作按钮自动运行方式开始,此后再按操作按钮属于错误操作,程序对错误操作不予响应。
机械手自动操作控制的PLC程序设计.
中北信息商务学院课程设计说明书学生姓名:学号:系:机械自动化系专业:机械设计制造及其自动化题目:数控技术课程设计——机械手自动操作控制的PLC程序设计指导教师:职称:职称:2016年12月5日机械手自动操作控制的PLC程序设计1中北信息商务学院课程设计任务书2016/2017 学年第 1 学期所在系:机械工程系专业:机械设计制造及其自动化学生姓名:学号:课程设计题目:数控技术课程设计—机械手自动操作控制的PLC程序设计起迄日期:2016年12月5日~2016年12月9日课程设计地点:中北大学信息商务学院指导教师:系主任:暴建岗下达任务书日期: 2016 年12月 5日机械手自动操作控制的PLC程序设计2课程设计任务书机械手自动操作控制的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)机械手自动操作控制的PLC程序设计11机械手的工作原理1.1机械手的概述能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。
- 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")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。