机器人码垛调试程序.
机器人码垛机操作规程

文件制修订记录一、设备操作员1.设备操作员是最熟悉设备的人,为了更好的使用和维护设备,设备操作员应具有一定的机械和电气方面的知识,有一定编程基础的更好。
2.设备操作员应知道设备上每一个按钮、阀门、光电、气缸、电机等主要部件的作用,知道此部件由谁控制或它控制谁,故障出现时,能快速地通过故障现象分析原因,想到可能出现问题的部件及解决办法。
排除故障的速度是一个设备操作员熟练程度的表现。
3.操作人员应该认真执行设备操作规程,保证设备正常运转,减少故障,防止事故发生。
4.设备操作员的基本任务有:设备的日常维护、操作设备前对设备现场清理、设备运行状态检查、常见故障排除、做好交接班工作和记录等。
二、设备介绍一楼的码垛设备包括机器人码垛机和供栈机、栈板线、进箱线AB和控制设备等辅助设备。
码垛机负责为A、B两条线码垛,A线为1.8L、0.9L线,B线为5L 线。
栈板线从供栈机开始依次包括出栈线、送栈线、码垛线A、码垛线B。
控制设备包括控制箱和控制柜,控制箱配合示教盘共同控制机器人码垛机,控制柜控制其他辅助设备以及码垛机的启动。
三、设备按钮操作说明1.控制箱操作面板上的按钮从左到右、从上到下的顺序依次为:方式开关——可进行自动(AUTO)与手动(T1、T2)的切换,其中T2操作时速度较快不易控制,不熟练时手动操作建议使用T1。
切换时需插入钥匙。
异常恢复(FAULT RESET)——当有异常状况时报警灯会亮,排除异常后按下此键可解除报警。
启动按钮(CYCLE START)——为操作方便和安全的考虑,此按键只起运行指示的作用,机器的启动将在控制柜上操作,当机器人处于自动运行状态时此灯会亮。
报警(FAULT)——当有异常状况时此灯会亮,此时机器人将不能启动。
紧急停止(EMERGENCY)——紧急时按下此键,可使机械手臂在任何位置强制停止,解除方法为向右旋转使其跳起来。
电源指示灯(POWER)——电源开关打开后灯亮,关闭后灯灭。
机器人码垛程序流程图

程序初始化开始复位原点等待A /B 线抓取命令当B 00
0=1时,选择抓取A
线
当B 000=3
时,选择抓取A /B 线向B 090(A B
线都有信号)写1当B 000=2
时,选择抓取B 线
判断是否有托盘判断产品种类Y E S N O 产品1产品2
判断抓取抓数执行抓取动作判断放箱抓数第几层、第几抓判断放箱托盘位判断放箱是否放满N O Y E S 判断抓取抓数执行抓取动作判断放箱抓数第几层、第几抓判断放箱托盘位判断放箱是否放满Y E S N O 选择抓取A 线C A L L A -L I N E -S T A R T 放箱完成回原点选择抓取B 线C A L L B -L I N E -S T A R T 放箱完成回原点向B 090(A B 线都有信号标志位)写0判断是否有托盘判断产品种类
Y E S N O 产品3产品4
判断抓取抓数执行抓取动作判断放箱抓数第几层、第几抓判断放箱托盘位判断放箱是否放满Y E S 判断抓取抓数执行抓取动作判断放箱抓数第几层、第几抓判断放箱托盘位判断放箱是否放满Y E S N O N O 判断1、2是否有托盘Y E S 判断3、4是否有托盘N O Y E S N O 判断是否有换罐命令跳转到换罐子程序
返回判断是否有出跺命令执行出跺子程序返回Y E S
Y E S N O N O。
23机器人码垛现场编程

工业机器人码垛现场编程主讲:王晓勇学习目标学会码垛目标点示教学会常用码垛程序编写目录》0102码垛指令编程码垛现场程序案例1码垛指令编程当关闭轴配置监控后,机器人在运动过程中采取最接近当前轴配置数据的配置到达指定目标点。
一、码垛指令编程运动控制指令-ConfL应用:对机器人运行姿态进行限制与调整,程序运行时,使机器人运行姿态得到控制。
系统默认值为ConfL \on。
实例:ConfL\on; ConfL\off;限制:机器人冷启动,新程序载入与程序重置后,系统自动设置为默认值。
备注一、码垛指令编程运动控制指令-ClkReset实例ClkReset clock;Clock:时钟名称。
(Clock )应用:将机器人相应的时钟复位,常用于记录循环时间或机器人跟踪输送链。
ClkReset clock1; ClkStart Clock1; RunCycle; ClkStop Clock1;nCycleTime:=ClkRead(clock1);TPWrite “Last Cycle Time:“\Num:=nCycleTime一、码垛指令编程运动触发指令-TriggIOTriggIO TriggData,Distance[\Start]|[\Time][\Dop]|[\Gop]|[\Aop]|[\ProcID],SetValue[\DODelay];[TriggData]: 触发变量名称。
(triggdata)Distance: 触发距离mm。
(unm)[\Start]: 触发起始开关。
(switch)[\Time]: 时间触发开关。
(switch)[\Dop]: 时间数字输出。
(signaldo)一、码垛指令编程运动触发指令-TriggIOTriggIO TriggData,Distance[\Start]|[\Time][\Dop]|[\Gop]|[\Aop]|[\ProcID],SetValue[\DODelay];[\Gop] : 触发组合输出。
工业机器人码垛工作站安装与调试教学能力比赛教案

工业机器人码垛工作站安装与调试教学能力比赛教案教案名称:工业机器人码垛工作站安装与调试教学能力比赛教案教学目标:1. 学习工业机器人码垛工作站的基本原理和工作流程。
2. 掌握工业机器人码垛工作站的安装和调试方法。
3. 培养学生的团队合作和问题解决能力。
4. 提高学生的实际操作和技术应用能力。
教学内容:1. 工业机器人码垛工作站的基本原理和工作流程介绍。
2. 工业机器人码垛工作站的安装步骤和注意事项。
3. 工业机器人码垛工作站的调试方法和常见问题解决。
4. 实际操作演练和比赛准备。
教学步骤:第一步:工业机器人码垛工作站的基本原理和工作流程介绍(30分钟)1. 介绍工业机器人码垛工作站的定义、作用和应用领域。
2. 详细解释工业机器人码垛工作站的工作流程,包括从接收订单到完成码垛的整个过程。
第二步:工业机器人码垛工作站的安装步骤和注意事项(60分钟)1. 介绍工业机器人码垛工作站的各个组成部分,包括机器人、传感器、控制系统等。
2. 分步骤演示工业机器人码垛工作站的安装过程,包括机器人的安装、传感器的安装和控制系统的连接。
3. 强调安装过程中的注意事项,如安全操作、正确连接和固定等。
第三步:工业机器人码垛工作站的调试方法和常见问题解决(60分钟)1. 介绍工业机器人码垛工作站的调试方法,包括机器人的校准、传感器的调试和控制系统的配置。
2. 分析工业机器人码垛工作站常见问题,如机器人运动不准确、传感器故障等,并提供解决方法。
第四步:实际操作演练和比赛准备(120分钟)1. 将学生分成小组,每个小组安装和调试一台工业机器人码垛工作站。
2. 每个小组根据教师提供的实际任务,进行实际操作演练。
3. 比赛准备:每个小组根据比赛要求,进行工业机器人码垛工作站的优化和调试,以提高工作效率和准确性。
教学评估:1. 学生的理论知识掌握情况,包括工业机器人码垛工作站的基本原理和工作流程。
2. 学生的实际操作能力,包括工业机器人码垛工作站的安装和调试。
ABB机器人码垛程序

A B B机器人码垛程序(总11页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchMODULE MainModulePROC Main()TPErase;TPReadNum nCount1, "Qing Shu Ru Yi Ma Bao Shu!" ;TPReadNum nJob, "Qing Shu Ru Mo Shi:50KG:=1,25KG:=2!";InitAll;WHILE TRUE DOReadType;clock2re;PickIF;clock2re;PlaceOF;ENDWHILEENDPROCPROC clock2re()!tempint:=movstat;IF DI10_1Product0K = 0 or DI10_2TuoPanOK = 0 ThenIF tempint< thenClkStart CLK2;ELSEClkStop CLK2;ENDIFElseClkStop CLK2;EndIFEndprocPROC InitAll()MoveHome;Reset DO10_1JiaZhua;Reset DO10_2YaBan;Reset DO10_3ZhuaOK;Reset DO10_4MaDuoOK;Waittime ;bPickPart:=FALSE;ClkReset CLK1;ClkStart CLK1;ClkReset CLK2;MoveL Offs(pPick,0,0,400), vFast, z10, tGripper\WObj:=wobj0;ENDPROCPROC PickIF()IF bPickPart = FALSE AND nJob <> 0 AND DI10_1Product0K = 1 THEN!CalculatePick;MoveJ Offs(pPick,0,0,400), vFast, z200, tGripper\WObj:=wobj0;!MoveLDO Offs(pPick,0,0,100), vFast, z20, tool0\WObj:=wobj0, DO10_1JiaZhua, 1;MoveL pPick, vFast, fine, tGripper\WObj:=wobj0;Close1;GripLoad LoadFull;Accset 50,50;HandshakeIF;bPickPart:=TRUE;ConfL\Off;MoveJ pAfterPick, vFast, z60, tGripper\WObj:=wobj0;ENDIFENDPROCPROC PlaceOF()IF DI10_2TuoPanOK = 1 AND bPickPart = TRUE THENCalculatePlace;ConfL\Off;!MoveL Offs(pOver,0,0,nOffsZ2), vFast, z200, tGripper;IF bTag=true thenAccset 70, 70;MoveJ pAbovePlace, vFast, z10, tGripper\WObj:=wobj0;elseAccset 90, 90;MoveJ pAbovePlace, vFast, z10, tGripper\WObj:=wobj0;EndifAccset 100,100;! place first boxConfL\Off;!MoveL Offs(pPlace1,nOffsX1,nOffsY1,nOffsZ1),vTurn,z10,tGripper\WObj:=wobj0;MoveL pPlace1, vMiddle, fine, tGripper\WObj:=wobj0;Open1;ConfL\Off;MoveL Offs(pPlace1,0,0,nOffsZ1),vMiddle,z5,tGripper\WObj:=wobj0;GripLoad LoadEmpty;Accset 100,100;bPickPart:=FALSE;Incr nCount1;HandshakeOF;MoveJ pAbovePick, vFast, z200, tGripper\WObj:=wobj0;MoveL Offs(pPick,0,0,400), vFast, z10, tGripper\WObj:=wobj0;!MoveJ pHome, vFast, z200, tGripper;ENDIFENDPROCPROC HandshakeIF()IF nJob=1 THEN!Set DO10_3ZhuaOK;ENDIFIF nJob=2 THEN!Set DO10_3ZhuaOK;ENDIFENDPROCPROC HandshakeOF()IF (nCount1=40 and nJob =1) or (nCount1=80 and nJob =2) THEN Set DO10_4MaDuoOK;WaitDI DI10_2TuoPanOK, 0;SetDO\SDelay:=,DO10_4MaDuoOK,0;nCount1:=0;ClkStop CLK1;ClkStop CLK2;TPErase;nCycleCount:=ClkRead(CLK1);Waitingtime:=ClkRead(CLK2);TPWrite "Cycle time: "\Num:=nCycleCount;TPWrite "Waiting time in this Cycle: "\Num:=Waitingtime;ClkReset CLK2;ClkReset CLK1;ClkStart CLK1;ENDIFENDPROCPROC MoveHome()TempP1:=CRobT(\Tool:=tool0 \WObj:=wobj0);; MoveJ TempP1, v1000, z20, tGripper;MoveJ pHome, v1000, z20, tGripper;ENDPROCPROC ReadType()IF nPriority = 1 AND DI10_1Product0K = 1 THEN!nJob:=1;! Incr nPriority;ELSEIF nPriority = 2 AND DI10_1Product0K = 1 THEN!nJob:=2;!Incr nPriority;ELSE!nJob:=0;!Incr nPriority;!IF nPriority>2 nPriority:=1;ENDIFENDPROCPROC Open1()Reset DO10_2YaBan;Waittime ;Reset DO10_1JiaZhua;waittime ;!Waittime nTimeGripper; ENDPROCPROC Close1()Set DO10_1JiaZhua;Waittime ;WaitDI DI10_4Zhua1End, 1;Set DO10_2YaBan;Waittime ;!Waittime nTimeGripper;WaitDI DI10_4Zhua1End, 1;!WaitDI DI10_6Zhua2End, 1; ENDPROCPROC CalculatePick()IF nJob = 1 THENpPick:=pPick1;ELSEIF nJob = 2 THENpPick:=pPick1;ENDIF!pAbovePick:=pPick;!pAfterPick:=pPick;!Pattern80;! CalculatePlace()IF nJob = 1 THENnBagL:=nBag50L;nBagW:=nBag50W;nBagH:=nBag50H;Pattern80;ELSEIF nJob = 2 THENnBagL:=nBag25L;nBagW:=nBag25W;nBagH:=nBag25H;Pattern100;ENDIF!pAbovePlace:=pPlace1;pAfterPlace:=pAbovePlace;ENDPROCPROC Pattern80()bTag:=FALSE;TEST nCount1+1CASE 1:pPlace1:=pBase180; 2:pPlace1:=pBase0; 3:pPlace1:=pBase90; 4:pPlace1:=pBase90; 5:pPlace1:=pBase90; CASE 6:pPlace1:=pBase180; 7:pPlace1:=pBase0; 8:pPlace1:=pBase270; 9:pPlace1:=pBase270; 10:pPlace1:=pBase270; 11:pPlace1:=pBase180; CASE 12:pPlace1:=pBase0; 13:pPlace1:=pBase90; 14:pPlace1:=pBase90; 15:pPlace1:=pBase90;CASE 16:pPlace1:=pBase180; 17:pPlace1:=pBase0; 18:pPlace1:=pBase270; 19:pPlace1:=pBase270; 20:pPlace1:=pBase270; 21:pPlace1:=pBase180; CASE 22:pPlace1:=pBase0; 23:pPlace1:=pBase90; 24:pPlace1:=pBase90; 25:pPlace1:=pBase90;pPlace1:=pBase180;27:pPlace1:=pBase0;28:pPlace1:=pBase270;29:pPlace1:=pBase270;30:pPlace1:=pBase270;31:pPlace1:=pBase180;CASE 32:pPlace1:=pBase0;33:pPlace1:=pBase90;34:pPlace1:=pBase90;35:pPlace1:=pBase90;36:pPlace1:=pBase180;37:pPlace1:=pBase0;38:pPlace1:=pBase270;39:pPlace1:=pBase270;40:pPlace1:=pBase270;DEFAULT:ErrWrite "Wrong box Count...","Single box must be the last one of a Pallet";Stop;EXIT;ENDTESTENDPROCPROC Pattern100()bTag:=FALSE;TEST nCount1+1CASE 1:pPlace1:=p25Base270;2:pPlace1:=p25Base0;pPlace1:=p25Base90;pPlace1:=p25Base180; 5:pPlace1:=p25Base270; CASE 6:pPlace1:=p25Base0; 7:pPlace1:=p25Base90; 8:pPlace1:=p25Base180; 9:pPlace1:=p25Base270; 10:pPlace1:=p25Base0; 11:pPlace1:=p25Base90; 12:pPlace1:=p25Base180; 13:pPlace1:=p25Base270; CASE 14:pPlace1:=p25Base0; 15:pPlace1:=p25Base90; 16:pPlace1:=p25Base180; 17:pPlace1:=p25Base270; 18:pPlace1:=p25Base0; 19:pPlace1:=p25Base90; 20:pPlace1:=p25Base180; 21:pPlace1:=p25Base270; CASE 22:pPlace1:=p25Base0; 23:pPlace1:=p25Base90; 24:pPlace1:=p25Base180; 25:pPlace1:=p25Base270; 26:pPlace1:=p25Base0; 27:pPlace1:=p25Base90; 28:pPlace1:=p25Base180;29:pPlace1:=p25Base270; CASE 30:pPlace1:=p25Base0; 31:pPlace1:=p25Base90; 32:pPlace1:=p25Base180; 33:pPlace1:=p25Base270; 34:pPlace1:=p25Base0; 35:pPlace1:=p25Base90; 36:pPlace1:=p25Base180; 37:pPlace1:=p25Base270; CASE 38:pPlace1:=p25Base0; 39:pPlace1:=p25Base90; 40:pPlace1:=p25Base180; 41:pPlace1:=p25Base270; 42:pPlace1:=p25Base0; 43:pPlace1:=p25Base90; 44:pPlace1:=p25Base180; 45:pPlace1:=p25Base270; CASE 46:pPlace1:=p25Base0; 47:pPlace1:=p25Base90; 48:pPlace1:=p25Base180; 49:pPlace1:=p25Base270; 50:pPlace1:=p25Base0; 51:pPlace1:=p25Base90; 52:pPlace1:=p25Base180; 53:pPlace1:=p25Base270;CASE 54:pPlace1:=p25Base0; 55:pPlace1:=p25Base90; 56:pPlace1:=p25Base180; 57:pPlace1:=p25Base270; 58:pPlace1:=p25Base0; 59:pPlace1:=p25Base90; 60:pPlace1:=p25Base180; 61:pPlace1:=p25Base270; CASE 62:pPlace1:=p25Base0; 63:pPlace1:=p25Base90; 64:pPlace1:=p25Base180; 65:pPlace1:=p25Base270; 66:pPlace1:=p25Base0; 67:pPlace1:=p25Base90; 68:pPlace1:=p25Base180; 69:pPlace1:=p25Base270; CASE 70:pPlace1:=p25Base0; 71:pPlace1:=p25Base90; 72:pPlace1:=p25Base180; 73:pPlace1:=p25Base270; 74:pPlace1:=p25Base0; 75:pPlace1:=p25Base90; 76:pPlace1:=p25Base180; 77:CASE 78:79:pPlace1:=p25Base90;80:pPlace1:=p25Base180;DEFAULT:ErrWrite "Wrong box Count...","Single box must be the last one of a Pallet";Stop;EXIT;ENDTESTENDPROCENDMODULE。
阐述abb机器人 码垛程序编程 方法与步骤

ABB机器人是一种自动化工业机器人,可用于各种生产线上的码垛操作。
码垛是指将产品按照一定的规则叠放起来,以方便运输、存储或其他后续处理。
在生产环境中,码垛通常需要精确的排列和叠放,而ABB机器人可以通过编程实现自动化的码垛操作,提高生产效率和准确性。
在实际操作中,编写ABB机器人的码垛程序是至关重要的。
下面我们将结合ABB机器人的特点和编程方法,详细阐述ABB机器人码垛程序编程的方法与步骤。
1. 确定码垛需求和规则在进行ABB机器人码垛程序编程之前,首先需要确定具体的码垛需求和规则。
这包括需要码垛的产品规格、堆放的方式、堆放的高度、堆放的稳定性要求等。
只有明确了这些需求和规则,才能更好地进行编程设计。
2. 了解ABB机器人的编程语言ABB机器人使用的是ABB RobotStudio软件,可以通过该软件进行编程。
了解该软件的编程语言和功能,是进行码垛程序编程的基础。
该软件支持多种编程语言,包括ABB的RAPID编程语言和基于图形的FlexPendant编程方式,可以根据实际情况选择合适的编程方式进行操作。
3. 编写码垛程序在确定了需求和规则,并掌握了相应的编程语言和工具之后,就可以开始编写码垛程序。
首先需要创建一个新的项目,并在项目中创建一个新的程序。
然后根据产品规格和堆放规则,编写具体的码垛程序。
这包括机器人的移动路径规划、夹爪的动作控制、产品的堆放位置计算等。
4. 调试和优化程序编写完成后,需要进行程序的调试和优化。
这包括在仿真环境中模拟运行程序,检查程序的运行效果和是否符合需求和规则。
如果发现问题,需要对程序进行优化和修改,直至达到理想的效果。
5. 在实际环境中应用程序在程序调试和优化完成后,可以将程序应用到实际的生产环境中。
在操作时需要注意安全和稳定性,确保码垛操作的效率和准确性。
总结起来,ABB机器人的码垛程序编程需要根据需求和规则进行编程设计,掌握ABB RobotStudio软件的编程语言和功能,编写码垛程序,进行调试和优化,最后将程序应用到实际环境中。
fanuc机器人码垛编程实例

fanuc机器人码垛编程实例
(最新版)
目录
1.FANUC 机器人码垛编程概述
2.码垛编程的实例分析
3.码垛编程的优点与应用范围
正文
一、FANUC 机器人码垛编程概述
FANUC 机器人作为全球知名的工业机器人品牌,其码垛编程是机器人在搬运过程中实现自动化的重要手段。
码垛编程是针对机器人搬运货物时需要堆叠摆放的一种编程方式,通过合理设置码垛的形状、大小和摆放顺序,从而实现货物的高效搬运。
二、码垛编程的实例分析
假设有一个场景,需要用 FANUC 机器人将不同尺寸的货物进行码垛摆放。
首先,需要确定码垛的形状,例如,可以将货物摆放成 3x3 的正方形码垛。
接下来,通过编程设定机器人的运动轨迹和顺序,以完成码垛的搭建。
具体编程步骤如下:
1.设定机器人的初始位置和姿态;
2.设定机器人的运动轨迹,以完成货物的抓取;
3.设定机器人将货物摆放到码垛上的位置和姿态;
4.循环重复以上步骤,直至码垛搭建完成。
三、码垛编程的优点与应用范围
码垛编程具有以下优点:
1.提高搬运效率:通过合理设置码垛的形状和大小,可以减少机器人在搬运过程中的运动时间,从而提高整体效率。
2.节省空间:码垛摆放方式可以有效利用仓库空间,减少货物摆放所需的面积。
3.便于管理:码垛编程使得货物摆放更加规范,便于仓库管理和查找。
码垛编程在以下场景中有广泛应用:
1.仓库货物搬运;
2.生产线上的物料配送;
3.物流中心的货物分拣等。
abb机器人搬运码垛程序

abb搬运码垛程序目录:1、简介2、系统硬件2.12.2 码垛工作台3、系统软件3.1 ABB RobotStudio3.2 码垛程序4、编程步骤4.1 创建工作目录4.2 连接4.3 创建码垛程序4.4 算法设计4.5 编写程序代码4.6 调试程序5、运行程序6、附件1、简介:本文档将介绍ABB在搬运和码垛任务中的程序开发方法。
通过使用ABB RobotStudio软件,结合和码垛工作台的硬件设备,可以实现自动化的搬运码垛操作。
2、系统硬件:2.1 :- 品牌:ABB- 型号:- 功能:搬运和码垛任务2.2 码垛工作台:- 品牌:- 型号:- 功能:提供码垛操作的工作平台,包括传送带、传感器等附件3、系统软件:3.1 ABB RobotStudio:- 版本:- 功能:用于程序的开发、调试和仿真3.2 码垛程序:- 开发环境:ABB RobotStudio- 功能:实现在搬运和码垛任务中的运动控制和路径规划4、编程步骤:4.1 创建工作目录:- 在ABB RobotStudio中创建新的工作目录,用于存放码垛程序和相关文件4.2 连接:- 使用ABB RobotStudio中的连接功能,将开发环境与实际的进行连接4.3 创建码垛程序:- 在工作目录中创建新的码垛程序- 设定的起始位置和姿态- 设置码垛工作台的位置和尺寸参数4.4 算法设计:- 根据具体的码垛任务需求,设计相应的算法- 包括货物识别、路径规划、运动控制等方面的算法设计4.5 编写程序代码:- 使用ABB RobotStudio提供的编程语言,编写的运动控制和路径规划代码- 根据算法设计的结果,将相应的命令和参数写入程序4.6 调试程序:- 在ABB RobotStudio中进行程序的调试和仿真- 检查程序的正确性和稳定性,进行必要的修改和优化5、运行程序:- 将调试好的程序至实际的系统- 配置工作环境,包括码垛工作台的准备、传感器的调整等 - 运行程序,观察的运动和码垛任务的执行情况6、附件:本文档涉及的附件包括:- ABB RobotStudio软件安装包- 和码垛工作台的规格参数文档 - 码垛程序源代码文件- 算法设计文档和相关说明7、法律名词及注释:(待补充)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PROC main(
Label1:
Inital;
WHILETRUEDO
Pick;
Pallet;
IF pndi13_diection_selet = 1 THEN
Pallet;
ELSE
Pallet_vert;
ENDIF
IF nCount = Totality THEN MoveLpHome, v800, fine, tool0;
PulseDO\PLength:=1, pndo10_palletOK_part; IF pndi12_palletOK_all = 1 THEN PulseDO\PLength:=1, pndo11_palletOK_all; Stop;
ENDIF
GOTO Label1;
ENDIF
ENDWHILE
ENDPROC
PROC Inital(
MoveJpHome, v600, fine, tool0; Totality :=n_Totality;
Row :=n_Row;
Height := 1;
Y := 1;
H1 := 1;
H2 := 1;
nCount := 0;
PulseDO\PLength:=0.5, do00_tuici; Reset do00_tuici;
Reset do01_shangci;
Reset pndo09_pick_ok;
Reset pndo10_palletOK_part; Reset pndo11_palletOK_all; ENDPROC
PROC Pallet(
MoveL pPlace_safe10, v600, z100, tool0;
MoveJ pPlace_safe30, v600, z100, tool0;
pPlace := pPlace_base;
IF Height MOD 2 = 1 THEN
pPlace := Offs(pPlace,X_offser,Y_offser - (Y - 1 * 61,Z_offser + (H1 -
1 * 28;
ELSE
pPlace := Offs(pPlace,X_offser,Y_offser + 15 - (Y - 1 * 61,Z_offser + (H2 - 1 * 26; ENDIF
MoveLOffs(pPlace,0,0,50, v300, fine, tool0\WObj:=wobj_place; MoveLpPlace, v20, fine, tool0\WObj:=wobj_place;
PulseDO\PLength:=1, do00_tuici;
WaitTime 1;
WaitDI di01_tuici_OK, 1;
MoveLOffs(pPlace,0,0,300, v300, z30, tool0\WObj:=wobj_place;
MoveL pPlace_safe30, v600, z50, tool0;
IncrnCount;
IF Y = Row THEN
Y := 0;
Incr Height;
IF Height MOD 2 = 1 THEN
Incr H1;
ELSE
Incr H2;
ENDIF
ENDIF
Incr Y;
ENDPROC
PROC Pallet_vert(
MoveL pPlace_safe100, v600, z100, tool0;
MoveJ pPlace_safe110, v600, z100, tool0;
MoveJ pPlace_base2, v50, fine, tool0\WObj:=wobj_place;
pPlace := place_base2;
IF Height MOD 2 = 1 THEN
pPlace := Offs(pPlace,X_offser,Y_offser - (Y - 1 * 61,Z_offser + (H1 - 1 * 28; ELSE
pPlace := Offs(pPlace,X_offser,Y_offser + 15 - (Y - 1 * 61,Z_offser + (H2 - 1 * 26;
ENDIF
MoveLOffs(pPlace,0,0,50, v300, fine, tool0\WObj:=wobj_place; MoveLpPlace, v20, fine, tool0\WObj:=wobj_place;
PulseDO\PLength:=1, do00_tuici;
WaitTime 1;
WaitDI di01_tuici_OK, 1;
MoveLOffs(pPlace,0,0,300, v300, z30, tool0\WObj:=wobj_place; MoveL pPlace_safe30, v600, z50, tool0;
IncrnCount;
IF Y = Row THEN
Y := 0;
Incr Height;
IF Height MOD 2 = 1 THEN
Incr H1;
ELSE
Incr H2;
ENDIF
ENDIF
Incr Y;
ENDPROC
PROC Pick(
MoveJ p10, v600, fine, tool0;
WaitDI pndi09_can_pick, 1;
MoveLpPick_base, v20, fine, tool0\WObj:=wobj0;
pPick := pPick_base;
pPick := Offs(pPick,0,-L_offser / 2,0;
MoveLOffs(pPick,0,0,70, v200, fine, tool0\WObj:=wobj0; IF Height MOD 2 = 1 THEN
MoveLpPick, v20, fine, tool0\WObj:=wobj0;
ELSE
MoveLOffs(pPick,0,0,15, v20, fine, tool0\WObj:=wobj0; ENDIF
PulseDO\PLength:=1, do01_shangci;
WaitDI di02_shangci_OK, 1;
MoveLOffs(pPick,0,0,100, v150, z50, tool0\WObj:=wobj0; MoveLOffs(pPick,0,0,400, v400, z50, tool0\WObj:=wobj0; PulseDO\PLength:=1, pndo09_pick_ok;
ENDPROC
PROC wobj_place0(
MoveL p_x1, v20, fine, tool0;
MoveL p_x2, v20, fine, tool0;
MoveLp_y, v20, fine, tool0;
ENDPROC
PROC set_home(
WZSphDef\Inside, shape1, home_C1, 100;
WZDOSet\Temp, home_wz\Before, shape1, pndo07_home, 1; ENDPROC PROC ppp(
IDelete intno1;
CONNECT intno1 WITH kkk;
ISignalDI\Single, di01_tuici_OK, 1, intno1;
IWatch intno1;
MoveL p30, v100, fine, tool0;
MoveL p40, v20, fine, tool0;
ENDPROC
TRAP kkk
StopMove;
WaitTime 3;
!WaitDI di01_tuici_OK, 0; StartMove;
MoveJ p50, v100, fine, tool0; IDelete intno1;
ENDTRAP ENDMODULE。