ABB工业机器人现场编程-码垛应用
工业机器人典型应用—码垛应用站—码垛站PLC编程

1 程序流程分析
线体正转工作流程
线体正转工作流程是将托盘A上货物拆 垛,线体正转,A段上货物传送到B段, B段取货物,在托盘B上码垛。工作时, 首选判断“B段是否允许取料”信号, 然后判断是否有货物在B段等待机器人 抓取,若无货物,线体正转;若有货物, 线体停止正转,B段货物归正,归正后 等待机器人抓取。
2 PLC程序编写
允许取(放)料程序段
第一段梯形图: 在机器人控制模式下,判断A段
是否允许放(取)料,若满足条件, TIM001启动18×100ms定时。 第二段梯形图: 定时到后,判断B端是否有料等待 机器人抓取(B端优先于A端),若 无,输出A段允许机器人放(取) 料,允许机器人A段抓放料操作。
定时时间到后,判断B端是否需要抓料(B端优先于A端),若无,输出A段允许机器人放(取) 料,允许机器人在A段进行抓放料操作。
2 PLC程序编写
线体正反转程序段(A段)
线体正转程序段输出单元是Q100.4(A段)与Q100.6(B段),线体反转程序段输出单元是Q100.5 (A段)与Q100.7(B段)。A、B段线体正反转的控制程序相似,下面以A段正反转程序段进行讲解。 A段变频正转(Q100.4)
第二部分
PLC程序编写
2 PLC程序编写
允许取(放)料程序段
允许取(放)料程序段输出单元是Q101.0(A段)与Q101.1(B段。A段允许信号是 PLC输出到机器人,并允许机器人在A段工作的允许信号,其触发流程是线体正转时, 检查A段是否有货物,若有,输出允许机器人继续放货物信号;线体反转时,检查A段 是否有货物需要机器人抓取,若有,输出允许机器人抓取货物信号。 (1)A段允许取料条件: 机器人控制+机器人线体反转+A段工件检测1(ON)+A段工件检测2(ON) (2)A段允许放料条件: 机器人控制+机器人线体正转+A段工件检测1(OFF)+A段工件检测2(OFF)
ABB机器人码垛应用及方案制作-干货!

ABB码垛助手的相关介绍
码垛助手优点
界面友好
支持中文,基于示教器界面,不需要额外硬件。 图形界
面友好 ,扩充方便 ,可以加载用户化照片,界面,公司标志。
简单易用
安装简单, 用图形编程代替Rapid编程,简单易学, 无需
专业人员。操作培训简单明了,工人容易接受。
节省成本
轻松应对多品种, 新产品; 一种产品, 普通操作可以搞定,
用于纸箱码垛(可平抓竖放)
用于纸箱或其他码垛和拆垛
用于纸箱拆垛和码垛
© ABB
| Slide 11
用于纸箱或其他整层码垛
ABB码垛机器人的相关介绍
ABB标准的机器人夹具
Claw for IRB 460 / IRB 660 爪手夹具
Vacuum for IRB 460 / IRB 660 真空吸盘夹具
1 Zone Clamp for IRB 460 单区域夹板夹具
2 Zone Clamp for IRB 660 双区域夹板夹具
© ABB
| Slide 12
码垛应用方案制作的基本流程及注意事项
机器人方案的制作流程
信息收集
产品数据 码垛数据 现场数据 工艺需求 功能需求 特殊要求
数据分析
抓放状态 夹具评估 产能评估 抓放方式 场地空间
© ABB
| Slide 9
ABB码垛机器人的相关介绍
常用的码垛应用
Glass Bottle/玻璃瓶
Carton/纸箱
Tin cans/马口铁罐
Shrinking/热缩膜
Turn-over boxes/周转箱
Sack/大袋
© ABB
| Slide 10
ABB码垛机器人的相关介绍
ABB工业机器人码垛教学编程案例分析

Internal Combustion Engine & Parts•147 •ABB工业机器人码垛教学编程案例分析吴应桦(河南工程学院工程训练中心,郑州451191)摘要:工业机器人,是通过计算机编程控制来进行行动完成各种工作的自动化的设备,在当今社会的大环境趋势下,工业机器人 的应用越来越广泛,增长迅速。
当前局势下,越来越多的院校为了顺应潮流,先后开设了工业机器人的课程。
随着经济和社会的进一步 发展,我国的人口红利则会逐步的消失,在大量的劳动密集型产业中,采用工业机器人来替代人工操作,则可以持续性的保持工业的 生产效率和竞争力。
关键词:工业机器人;计算机控制;编程;码垛1课前相关知识要点①工业机器人本身是一种由关节和机械臂的组成,有着自身的动力源和行动能力,既能够按照人类的操作和控制来进行行动,也可以由实现编排好的程序来控制其行为,更高级的工业机器人则可以根据人工智能规划出的行动纲领来进一步的行动。
②所谓码垛,就是指把物体按照一定的顺序,一层一 层的摆放整齐,常见于物流行业和运输行业,以及仓库存储等。
传统的码垛,主要依靠人力以及叉车或者吊车等来进行,在码垛过程中,费时费力,由于准确度相对较低,码垛还有一定的限制,当达到一定的数量或者高度时,倾塌的风险也随之上升。
③ 码垛机器人,就是现代化的计算机程序和传统的机 械传动相结合的产物。
主要功能以码垛操作为主,工作对象各种以长方体形状为主的货件。
在行业中应用广泛,节约劳动力和空间,并且操作工程中准确度高、运输速度快、稳定性高以及工作效率高等特点。
2码垛操作的分析① 在进行码垛操作的编程之前,学生需要掌握各种运 动指令的添加操作以及代码关键词所代表的含义,例如关节运动、圆弧运动以及线性运动等。
②将8块规格为200*50*5(此处单位为mm,下同)的长方体物件,摆放在尺寸为200*200的平面桌面上,分别按照如图中所示的摆放方式摆放,其中带括号数字的代表放置的顺序。
码垛程序详解,如何编写ABB码垛程序?

码垛程序详解,如何编写ABB码垛程序?在编写码垛程序之前,我们首先要清楚码垛是什么,码垛其实就是机械手的基于一个基准点所做的偏移,中心思想就是满几进1。
我们来解释下,我们首先要定一个基准点,我们的下面所有的点位的偏移都是在基准点X Y Z方向上的偏移。
如图所示:以物体1的位置为基准点,当我们在X正方向以40mm的距离的偏移做偏移运动。
如图在X方向我们假设摆放5个物体,我们这一行的空间就用完了,我们就需要在重新开始一行来摆放我们的物体,所以我们就是需要在Y方向进行偏移,偏移35mm的距离,来继续摆放我们的物体。
如下图:假设当我们在Y方向上只能摆放4行物体时,当我们摆满4行物体,最下面一层就已经被我们摆满,这时候我们还要摆放就只能接着向上摆放,也就是往Z方向上偏移了。
如下图所示;当我们明白码垛的含义之后,我们再来看下在ABB机械手中如何编写码垛程序。
机器计算的方式和我们运算的刚好相反,机器是先计算层数,再计算行数,最后再计算产品在一列中的位置。
如下PROC pallet1() !码垛计算程序jishu1 := nproduct; !产品计数nx := 0; !列数ny := 0; !行数nz := 0; !层数dx := 0 - kuan; ! X方向偏移距离dy := chang; ! Y方向偏移距离dz := 0 - gao; !Z方向偏移距离WHILE jishu1 > 20 DO !程序会先计算产品有几层,当产品满足一层有20时,会在Z方向 jishu1 := jishu1 - 20; 加1。
当产品不满一层时,程序会继续往下运行。
nz := nz + 1;ENDWHILEWHILE jishu1 > 5 DO !计算产品有几行,一行产品有5个,当产品满足5时.会在Y方向 jishu1 := jishu1 - 5; 加1.当产品不满1行时,程序会继续往下运行。
ny := ny + 1;ENDWHILEWHILE jishu1 > 1 DO !最后计算产品在一列有几个产品,也就是产品在X方向的位置jishu1 := jishu1 - 1;nx := nx + 1;ENDWHILEX := nx * dx; !X方向偏移的距离Y := ny * dy; !Y方向偏移的距离Z := nz * dz; !Z方向偏移的距离ENDPROCPROC quliao() !放料程序IF nproduct = 1 THENfristpoint;ENDIFIF nproduct > 1 THENpallet1; !码垛计算程序SetDO DO11_CONTROL_1, 1;MoveJ Offs(q10,X,Y,Z + 200), v1000, z1, tool0\WObj:=wobj_shangxialiao; !抬高点MoveL Offs(q10,X,Y,Z), v300, fine, tool0\WObj:=wobj_shangxialiao; !放料点,偏移点位WaitTime 1;MoveL Offs(q10,X,Y,Z+200), v300, fine, tool0\WObj:=wobj_shangxialiao; !抬高点ENDIFENDPROC详细的程序可以私聊我。
6.1 ABB工业机器人重叠式码垛应用编程

5
6
7
8
1
2
3
4
X
任务一:重叠式码垛应用编程
五、设计重叠式码垛流程
1.工件拾取位置计算
从1计数,会产生很多加1、减1的操作 实际使用中可从0开始计数,工件号变为0-7, 行数为0-1,列数为0-3
任务一:重叠式码垛应用编程
二、码垛类型
任务一:重叠式码垛应用编程
二、码垛类型
任务一:重叠式码垛应用编程
三、FOR指令(P154)
FOR指令,实现循环功能的语句,作用是根据条件让某些语句循环执行, 在RAPID程序中,FOR循环语句的语法格式如下:
FOR 变量名 FROM 表达式1 TO 表达式2 DO 程序语句;
三、FOR指令
第三次执行:
任务一:重叠式码垛应用编程
三、FOR指令
第四次执行:
任务一:重叠式码垛应用编程
四、表达式的编辑
1、使用功能按钮编辑表达式
在程序编写过程中,有时会遇到单个变量无 法完全表达参数的情况,例如需要的值是1个常 数和1个变量之和,此时就涉及表达式的使用。 表达式指定了一个值的求值方法,在程序中用指 令参数“<EXP>”来表示。
五、设计重叠式码垛流程
1.工件拾取位置计算
Y 1、2、3、4号工件为第一行 5、6、7、8号工件为第二行
初始工件位置计算程序: PickHang:=((N-1)DIV 4)+1; PickLine:=((N-1)MOD 4)+1; PickoffX:= (PickLine-1)*50; PickoffY:= (PickHang-1)*75;
ENDFOR 其中,变量名为计数变量,实现对循环进行计数,语句被执 行一次之后变量的值加1(默认);表达式1的运算结果为计数变量 的初始值;表达式2的运算结果为计数变量的终止值,当计 数变量的值大于表达式2的值时循环将结束。
ABB机器人4轴码垛项目编程教学【教程】

1、码垛知识储备1.1 轴配置监控指令ConfL :其指定ABB机器人在线性运动及圆弧运动过程中是否严格遵循程序中已设定的轴配置参数。
默认情况下轴配置监控是打开的,当关闭轴配置监控后,机器人在运动过程中采取*接近当前轴配置数据的配置到达指定目标点。
例如:目标点p10中,数据[1,0,1,0]就是此目标点的轴配置数据;ConST robtarget p10 :=[[*,*,*],[*,*,*,*],[1,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];ConfL \Off;MoveL p10, v1000, fine, tool0;机器人自动匹配一组*接近当前各关节轴姿态的轴配置数据移动至目标点p10,到达p10点时,轴配置数据不一定为程序中指定的[1,0,1,0]在某些应用场合,如离线编程创建目标点或手动示教相邻两目标点间轴配置数据相差较大时,在机器人运动过程中容易出现报警“轴配置错误”而造成停机,此种情况下,若对轴配置要求较高,则一般通过添加中间过渡点,若对轴配置要求不高,则可通过指令ConfL\Off关闭轴监控,使机器人自动匹配可行的轴配置来到达指定目标点。
注:CofJ用法与ConfL相同,只不过前者为关节线性运动过程中的轴监控开关,影响的是MoveJ;而后者为线性运动过程中的轴监控开关,影响的是MoveL。
1.2 计时指令在机器人运动过程中,我们经常需要利用计时功能来计算当前机器人运行节拍,并通过写屏指令显示相关信息。
这里我们以一个完整的计时案例来学习一下关于计时并显示计时信息的综合运用:VAR clock clock1;!定义时钟数据clock1VAR num CycleTime;!定义数字型数据CycleTime,用于存储时间数值ClkReset clock1;!时钟复位ClkStart clock1;!开始计时机器人运动指令等ClkStop clock1;!停止计时CycleTime :=ClkRead(clock1);!读取时钟当前数值,并赋值给CycleTimeTPErase;!清屏TPWrite “The Last CycleTime is ”\Num:= CycleTime ;!写屏,在示教器屏幕上显示节拍信息,假设当前数值CycleTime为10,则示教器屏幕上*终显示信息为:“The Last CycleTime is 10”1.3 动作触发指令TriggL:在线性运动过程中,在指定位置准确的触发事件(如置位输出信号、激活中断等)。
阐述abb机器人 码垛程序编程 方法与步骤

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

二、实践操作
2、导入并放置工作站3D模型
• 在“基本”功能选项卡,单击“浏览几何体”,选择“导入几何体”,导 入码垛_输送链1的3D模型,如图7-9、7-10所示。
7-9 浏览导入几何
7-10 导入码垛_输送链1
二、实践操作
2、导入并放置工作站3D模型
• 码垛_输送链1的3D模型导入完成后,还需要设置其位置,如图7-11、7-12 所示。
二、实践操作
1、解包工作站压缩包
• 双击压缩包文件“7-1 example_搬 运码垛工作站.rspag”,如图7-3所 示。 • 工作站解包向导,如图7-4所示。 • 根据提示,单击“下一个”,选择 和设置合适的解包路径(注意路径 中不能出现中文字符),如图7-5所 示。
图7-3 搬运码垛工作站压 缩包
7-14 导入码垛-输送链2
7-15 码垛-输送链2导入完成
二、实践操作
2、导入并放置工作站3D模型
• 码垛_输送链2的3D模型导入完成后,还需要设置其位置,如图7-16、7-17 所示。
7-16 设定码垛-输送链2的位置
7-17 完成码垛-输送链2的位置设定
二、实践操作
2、导入并放置工作站3D模型
• 设定码垛堆放平台1的位置,如图7-22、7-23所示。
7-22 设定码垛-堆放平台1的位置
7-23 完成码垛-堆放平台1的位置设定
二、实践操作
2、导入并放置工作站3D模型
• 设定码垛堆放平台2的位置,如图7-24、7-25所示。
7-24 设定码垛-堆放平台2的位置
7-25 完成码垛-堆放平台2的位置设定
7-31 机械装置命名为夹爪
二、实践操作
3、创建机器人用的夹爪工具
如何通过ABB机器人创建码垛程序

如何通过ABB机器人创建码垛程序ABB机器人是一种先进的自动化解决方案,可以用于创建码垛程序来提高生产效率和减少人力成本。
以下是如何通过ABB机器人创建码垛程序的详细步骤:1.设计产品排列方案:在创建码垛程序之前,需要设计产品的排列方案。
这涉及到确定产品的属性、尺寸和重量,以及确定如何合理地排列产品以最大程度减少空隙,并确保产品之间的稳定性。
2.创建工作站布局:根据产品排列方案,创建机器人的工作站布局。
这包括确定机器人放置的位置、输送带的位置和运动轨迹等。
在布局过程中,要确保机器人可以高效地访问和处理产品,并且具有足够的空间来执行码垛任务。
3.编写机器人控制程序:使用ABB机器人编程语言(如RAPID)编写机器人控制程序。
这个程序将指导机器人在码垛过程中的动作和行为。
编写程序时,需要定义机器人的运动路径、姿势和速度,以及如何识别和处理产品。
编写程序前,可以先使用ABB机器人的模拟器进行测试和调试。
4.设置机器人传感器:配置机器人所需的传感器以实现精确的产品识别和定位。
这可以包括视觉传感器、激光传感器和力传感器等。
传感器将帮助机器人准确地捕捉和处理产品信息。
5.运行和优化码垛程序:将编写的程序上传到机器人控制系统中,并启动机器人以执行码垛任务。
在运行过程中,监视机器人的行为和性能,并根据需要进行优化和调整。
这可能涉及到调整程序参数、修改工作站布局或更改产品排列方案。
通过不断优化,可以提高码垛的效率和准确性。
6.故障排除和维护:在使用ABB机器人创建码垛程序后,持续监测机器人的运行状态,并定期进行维护和保养。
及时发现和解决故障可以确保机器人的稳定性和持续运行。
总结起来,通过ABB机器人创建码垛程序需要经历设计产品排列方案、创建工作站布局、编写机器人控制程序、设置机器人传感器、运行和优化码垛程序以及故障排除和维护等步骤。
这些步骤的顺序和重要性可能会因具体的码垛需求而有所不同。
因此,在实际操作中,应根据特定的应用场景和要求进行调整和优化。
ABB机器人码垛程序

MODULE 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<0、25 thenClkStart CLK2;ELSEClkStop CLK2;ENDIFElseClkStop CLK2;EndIFEndprocPROC InitAll()MoveHome;Reset DO10_1JiaZhua;Reset DO10_2YaBan;Reset DO10_3ZhuaOK;Reset DO10_4MaDuoOK;Waittime 0、5;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;!MoveLOffs(pPlace1,nOffsX1,nOffsY1,nOffsZ1),vTurn,z10,tGripper\WObj:=wobj0;MoveL pPlace1, vMiddle, fine, tGripper\WObj:=wobj0;Open1;ConfL\Off;MoveLOffs(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:=0、5,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);TempP1、trans、z:=500 ; 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 0、0;Reset DO10_1JiaZhua;waittime 0、1;!Waittime nTimeGripper;ENDPROCPROC Close1()Set DO10_1JiaZhua;Waittime 0、0;WaitDI DI10_4Zhua1End, 1;Set DO10_2YaBan;Waittime 0、0;!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;!pAbovePick、trans、z:= pAfterPick、trans、z;!pAbovePick、trans、y:= pAfterPick、trans、y-500;!pAfterPick、trans、y:= pAfterPick、trans、y-500; ENDPROCPROC 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;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;bTag:=True;CASE 2:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 3:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 4:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 5:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+20;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;!Layer2CASE 6:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 7:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 8:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 9:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW-25;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 10:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;!Layer3CASE 11:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;bTag:=True;CASE 12:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 13:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 14:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 15:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;!layer4CASE 16:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+3*nBagH+80;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 17:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+3*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 18:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 19:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW-25;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 20:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;!layer5CASE 21:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500;bTag:=True;CASE 22:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500;CASE 23:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500;CASE 24:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500;CASE 25:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500;!layer6CASE 26:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+5*nBagH-50;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+nBagH;CASE 27:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+5*nBagH-50;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500+nBagH;CASE 28:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH-45;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+nBagH;CASE 29:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW-25;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH-45;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500+nBagH;CASE 30:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+4*nBagH-45;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+500+nBagH; !layer7CASE 31:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+2*nBagH;bTag:=True;CASE 32:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+2*nBagH; CASE 33:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+2*nBagH; CASE 34:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+2*nBagH; CASE 35:pPlace1:=pBase90;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y+25;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+2*nBagH; !layer8CASE 36:pPlace1:=pBase180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+7*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+3*nBagH;CASE 37:pPlace1:=pBase0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL-5;pPlace1、trans、z:=pPlace1、trans、z+7*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+3*nBagH;CASE 38:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=100;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+3*nBagH;CASE 39:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+2*nBagW-30;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=100;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+3*nBagH;CASE 40:pPlace1:=pBase270;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+6*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=100;nLevel:=2;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+450+3*nBagH;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;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=600;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700;bTag:=True;CASE 2:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 3:pPlace1:=p25Base90;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 4:pPlace1:=p25Base180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 5:pPlace1:=p25Base270;pPlace1、trans、x:=pPlace1、trans、x-nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 6:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagW;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 7:pPlace1:=p25Base90;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 8:pPlace1:=p25Base180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y-nBagW;pPlace1、trans、z:=pPlace1、trans、z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700;CASE 9:pPlace1:=p25Base270;pPlace1、trans、x:=pPlace1、trans、x-nBagL-nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700;bTag:=True;CASE 10:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL+nBagW;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700;CASE 11:pPlace1:=p25Base90;pPlace1、trans、x:=pPlace1、trans、x+nBagL+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700;CASE 12:pPlace1:=p25Base180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y-nBagL-nBagW;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 13:pPlace1:=p25Base270;pPlace1、trans、x:=pPlace1、trans、x-nBagL;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 14:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 15:pPlace1:=p25Base90;pPlace1、trans、x:=pPlace1、trans、x+nBagL;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 16:pPlace1:=p25Base180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y-nBagL;pPlace1、trans、z:=pPlace1、trans、z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+500;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+700; CASE 17:pPlace1:=p25Base270;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;bTag:=True;CASE 18:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 19:pPlace1:=p25Base90;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 20:pPlace1:=p25Base180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 21:pPlace1:=p25Base270;pPlace1、trans、x:=pPlace1、trans、x-nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 22:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagW;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400; CASE 23:pPlace1:=p25Base90;pPlace1、trans、x:=pPlace1、trans、x+nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 24:pPlace1:=p25Base180;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y-nBagW;pPlace1、trans、z:=pPlace1、trans、z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;CASE 25:pPlace1:=p25Base270;pPlace1、trans、x:=pPlace1、trans、x-nBagL-nBagW;pPlace1、trans、y:=pPlace1、trans、y;pPlace1、trans、z:=pPlace1、trans、z+3*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;pAbovePlace:=pPlace1;pAbovePlace、trans、z:=pPick、trans、z+400;bTag:=True;CASE 26:pPlace1:=p25Base0;pPlace1、trans、x:=pPlace1、trans、x;pPlace1、trans、y:=pPlace1、trans、y+nBagL+nBagW;pPlace1、trans、z:=pPlace1、trans、z+3*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1、2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick、trans、z:=pPick、trans、z+400;。
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、法律名词及注释:(待补充)。
ABB机器人码垛案例分析

ABB机器人码垛案例分析
案例:机器人从传送带P10处使用吸盘工具取料进行码垛,物料到位传感器的信号为数字输入信号变为1,码垛堆如图所示,物料为边长50mm的立方体,吸盘工作信号为数字输出DO1置为1.作为安全位HOME,请利用偏移、循环,赋值等功能编写工作程序。
思路解析:
Main()
Reset do1. 复位
机器人回到HOME点
nx := 0
While nx < 2, do
Ny :=0
While Ny < 6 do
机器人移动P10上方(偏移值100)
等待DI1 信号
机器人移动P10,
抓取吸气(设置do1)
等待时间0.5秒
机器人机器人移动P10上方(偏移值100)
机器人机器人移动P20上方(偏移值100)
机器人机器人移动P20
放下物料(重置do1)
等待时间0.5秒
机器人机器人移动P20上方(偏移值100)
Movel offs(p20 ,nx*50,Ny*50 , 0 )
增量函数
Ny = Ny + 1
End whlie
nx = nx+1。
6.2 ABB工业机器人纵横交错式码垛应用编程

任务二:纵横交错式码垛应用编程
一、条件判断指令
PROC rIF01() IF flag1 = TRUE THEN reg1 := reg1 + 1; WaitTime 1; ENDIF state1:=0; ENDPROC
任务二:纵横交错式码垛应用编程
一、条件判断指令 (2)Compact IF 紧凑型 结构:IF 执行:Compact IF紧凑型条件判断 指令用于当一个条件满足后,就执 行一句指令(特点:单组条件,单 句指令),如果条件不满足就不执 行后面单句语句。
任务二:纵横交错式码垛应用编程
四、纵横交错式码垛流程设计
任务二:纵横交错式码垛应用编程
四、纵横交错式码垛流程设计(P168)
1.拾取位置计算
Pickhang :=N DIV 4; PickLine := N MOD 4; PickOffX:= Pickhang*60; PickOffY:= PickLine*30;
PutOffsX:=0; PutOffsY:= (N MOD 2) *30 ; PutOffsA:=0; ENDIF
任务二:纵横交错式码垛应用编程
四、纵横交错式码垛流程设计(P168)
2.放置位置计算
N为2、3、6、7时实际对应是偶数层,即第2和4层。 偶数层的X、Y及角度偏移值计算如下: IF ((N DIV 2) MOD 2)=1 THEN PutOffsX:=-15+(N MOD 2) *30; PutOffsY:=15 PutOffsA:=90; ENDIF
任务二:纵横交错式码垛应用编程
二、无条件跳转指令(P167)
无条件跳转指令(GOTO)用于将程序执行跳转到 相同程序内的标签所指向的程序位置。 GOTO Label; 当前指令必须与指令 label 同时使用,执行当前 指令后,机器人将从相应标签位置 Label 处继续 运行程序指令。 Label:程序执行位置标签。
ABB工业机器人现场编程-码垛应用

学习目标
1
了解机器人码垛应用
学习使用IO指令控制机器人夹具 掌握ABS和offs功能 设计并实现码垛操作
2
3
4
1.1 机器人码垛应用
1.各位老师是否听过码垛机、码垛机械手、码垛机器人这 样的名词? 2.我们面前的ABB-IRB120肯定是可以完成码垛应用的,但 能不能叫它是码垛机器人呢? 3.什么是通用工业机器人?什么是特种工业机器人? 4.现在市面上的焊接机器人又是怎么构成的呢? 5.码垛指的到底是什么意思? 6.码垛主要应用在什么工序?
指令集2.Set 逻辑判断: (1)变量A赋值 (2)示教取件原点及调用offs功 能计算偏移量 (3)调用FOR语句进行循环控制 指令集3. MoveL、MoveJ、MoveC
动作4.Reset 需要考虑: (1)变量B赋值 (2)示教摆件原点及调用offs功 能计算偏移量 (3)调用FOR语句进行循环控制
动作1.前往取件点路径 动作2.取件点取件 需要考虑: (1)确定取件组内成员数 (2)确定取件原点及偏移量 (3)确定取件次数 动作3.前往摆件点路径 动作4.摆件点摆件 需要考虑: (1)确定摆件组内成员数 (2)确定摆件原点及偏移量 (3)确定摆件次数 指令集1.MoveL、MoveJ、MoveC
注意:取件/摆件原点示教在高于平放物料块上表面40MM的位置 思考:如果需要连续码垛2个以上的物料块应该怎么处理?
1.2 使用IO指令控制机器人夹具
1.安装并调试气动夹具 2.使用示教器“IO仿真”测试夹具 3.使用示教器设置功能键用于快捷操作夹具
4.使用IO指令方式操作夹具
1.3 ABS和offs功能
1. 详细内容请参考《工业机器人实操与应用技巧》第5章
基于abb机器人码垛搬运流程

基于abb机器人码垛搬运流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!ABB 机器人码垛搬运流程通常包括以下步骤:1. 系统初始化:启动机器人系统和相关设备。
ABB机器人码垛程序

MODULE 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<0.25 thenClkStart CLK2;ELSEClkStop CLK2;ENDIFElseClkStop CLK2;EndIFEndprocPROC InitAll()MoveHome;Reset DO10_1JiaZhua;Reset DO10_2YaBan;Reset DO10_3ZhuaOK;Reset DO10_4MaDuoOK;Waittime 0.5;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;!MoveLOffs(pPlace1,nOffsX1,nOffsY1,nOffsZ1),vTurn,z10,tGripper\WObj:=wobj0;MoveL pPlace1, vMiddle, fine, tGripper\WObj:=wobj0;Open1;ConfL\Off;MoveLOffs(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:=0.5,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);TempP1.trans.z:=500 ; 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 0.0;Reset DO10_1JiaZhua;waittime 0.1;!Waittime nTimeGripper;ENDPROCPROC Close1()Set DO10_1JiaZhua;Waittime 0.0;WaitDI DI10_4Zhua1End, 1;Set DO10_2YaBan;Waittime 0.0;!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;!pAbovePick.trans.z:= pAfterPick.trans.z;!pAbovePick.trans.y:= pAfterPick.trans.y-500;!pAfterPick.trans.y:= pAfterPick.trans.y-500;ENDPROCPROC 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;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;bTag:=True;CASE 2:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 3:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 4:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 5:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+20;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;!Layer2CASE 6:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 7:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 8:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 9:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-25;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 10:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;!Layer3CASE 11:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;bTag:=True;CASE 12:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 13:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 14:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 15:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;!layer4CASE 16:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+3*nBagH+80;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 17:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+3*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 18:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 19:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-25;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 20:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;!layer5CASE 21:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500;bTag:=True;CASE 22:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500; CASE 23:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500; CASE 24:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500;CASE 25:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-300;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500;!layer6CASE 26:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+5*nBagH-50;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+nBagH;CASE 27:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+5*nBagH-50;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500+nBagH;CASE 28:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH-45;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+nBagH;CASE 29:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-25;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH-45;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500+nBagH;CASE 30:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+4*nBagH-45;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500+nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+500+nBagH; !layer7CASE 31:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH;bTag:=True;CASE 32:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH; CASE 33:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH; CASE 34:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH; CASE 35:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH; !layer8CASE 36:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+7*nBagH-40;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;CASE 37:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;pPlace1.trans.z:=pPlace1.trans.z+7*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;CASE 38:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=100;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;CASE 39:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-30;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=100;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;CASE 40:pPlace1:=pBase270;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-60;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=100;nLevel:=2;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;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;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=600;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;bTag:=True;CASE 2:pPlace1:=p25Base0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 3:pPlace1:=p25Base90;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 4:pPlace1:=p25Base180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 5:pPlace1:=p25Base270;pPlace1.trans.x:=pPlace1.trans.x-nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 6:pPlace1:=p25Base0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagW;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 7:pPlace1:=p25Base90;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 8:pPlace1:=p25Base180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y-nBagW;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;CASE 9:pPlace1:=p25Base270;pPlace1.trans.x:=pPlace1.trans.x-nBagL-nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;bTag:=True;CASE 10:pPlace1:=p25Base0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL+nBagW;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;CASE 11:pPlace1:=p25Base90;pPlace1.trans.x:=pPlace1.trans.x+nBagL+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;CASE 12:pPlace1:=p25Base180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y-nBagL-nBagW;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;CASE 13:pPlace1:=p25Base270;pPlace1.trans.x:=pPlace1.trans.x-nBagL;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;CASE 14:pPlace1:=p25Base0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagL;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700;CASE 15:pPlace1:=p25Base90;pPlace1.trans.x:=pPlace1.trans.x+nBagL;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 16:pPlace1:=p25Base180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y-nBagL;pPlace1.trans.z:=pPlace1.trans.z+nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+500;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+700; CASE 17:pPlace1:=p25Base270;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;bTag:=True;CASE 18:pPlace1:=p25Base0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 19:pPlace1:=p25Base90;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 20:pPlace1:=p25Base180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 21:pPlace1:=p25Base270;pPlace1.trans.x:=pPlace1.trans.x-nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400; CASE 22:pPlace1:=p25Base0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y+nBagW;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 23:pPlace1:=p25Base90;pPlace1.trans.x:=pPlace1.trans.x+nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 24:pPlace1:=p25Base180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y-nBagW;pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;pAbovePlace.trans.z:=pPick.trans.z+400;CASE 25:pPlace1:=p25Base270;pPlace1.trans.x:=pPlace1.trans.x-nBagL-nBagW;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z+3*nBagH;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1;。
ABB工业机器人现场编程码垛应用ppt

机器视觉技术的融合
随着机器视觉技术的不断发展,未来abb工业机器人将更加依赖 于视觉系统进行物体识别、定位和跟踪,提高作业效率。
人工智能与机器学习的应用
人工智能和机器学习技术的进步将使abb工业机器人在编程、故 障诊断、预测性维护等方面实现更高效、智能化的操作。
云技术与物联网的结合
abb工业机器人将进一步与云技术和物联网技术结合,实现远程 监控、数据共享和优化调度,提高生产效率。
abbot工业机器人的型号与规格
型号:Abbot工业机器人主要有IRB120 、IRB140、IRB240等型号。
IRB240:负载24公斤,重复精度 ±0.03mm。
IRB140:负载14公斤,重复精度 ±0.05mm。
规格
IRB120:负载12公斤,重复精度 ±0.05mm。
abbot工业机器人的应用领域
述
工业机器人的定义与特点
定义:工业机器人是一种自动化机器,可以在各 种环境中感知并操作,具有很高的灵活性和适应 性。
特点
高效性:工业机器人可以连续工作,提高生产效率 。
精准性:工业机器人的操作精度高,可以减少 人为误差。
可靠性:工业机器人具有很高的可靠性,可以 降低故障率。
可编程性:工业机器人可以通过编程进行控制 ,实现不同的功能。
abb工业机器人现场编 bot工业机器人概述 • abbot工业机器人现场编程 • abbot工业机器人码垛应用 • abbot工业机器人现场编程与码垛应用的前景
与挑战 • 参考文献
01 引言
背景介绍
工业机器人是现代制造业的重要组成部分,随着劳动力成本的上升和制造业对效 率的追求,工业机器人在制造业中的应用越来越广泛。
经济性与社会效益的平衡
ABB工业机器人码垛编程位置计算方案的比较分析

ABB工业机器人码垛编程位置计算方案的比较分析摘要:码垛是工业机器人现场最典型的应用之一,工业机器人码垛在提升生产效率的同时能够完成恶劣的生产环境下的工作任务。
因此,掌握合理的码垛编程方法具有重要意义。
本文以长方体工件码垛为例,基于ABB的IRB120机器人,深入分析比较了两种不同码垛编程的位置计算方案。
关键词:工业机器人;码垛;编程码垛编程是工业机器人编程与操作技术人员必须掌握的技能之一,但在实际应用过程中,可以通过多种不同的方案实现码垛任务,本文主要以长方体工件码垛为例,针对两种常见的码垛编程的位置计算方案进行了分析比较,帮助技术人员实习高效编程。
1.长方体工件码垛任务分析长方体码垛是工业现场最常见的码垛应用之一,为使垛型结构更规范、稳固,常常需要设置为奇偶层不同的排列方式,如图1所示。
码垛任务要求为,当传送线上长方体工件到位后,机器人从原点出发到工件位置进行吸取,并将吸取的工件放置到码垛盘上,码垛形状如图1,每层5个工件,共10个工件,奇偶层排列不同,码垛结束后,机器人回到原点。
图1长方体码垛排列要求2.基于TEST指令的码垛方案TEST条件指令为码垛中常用的指令之一,可以通过判断码垛工件的个数ncount,确定码垛工件的放置点,分析长方体工件的码垛任务要求后可知,可以确定pBase1和pBase2两个基准点,其他点位通过偏移计算得出,具体位置计算程序如图3所示,其中长方体工件长为L,宽为W。
图2选取两个放置基准点图3基于TEST指令的位置计算程序设计该方案的优点是TEST指令用法简单,程序结构清晰,易于学习和掌握。
但缺点是若需要进行多层码垛,则需要编写多行程序,占用空间较大。
3.基于数组应用的码垛方案所谓数组,就是有序的元素序列,这和我们码垛产品有行有列的特性是一致的。
由此,我们可以想到利用数组实行码垛工件位置的确定。
在此方案中,我们只需要确定一个基准点pBase1,再结合Reltool旋转指令,将工件位置存于数组中,即可完成码垛位置计算程序,如图4所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习目标
1 了解机器人码垛应用 2 学习使用IO指令控制机器人夹具 3 掌握ABS和offs功能 4 设计并实现码垛操作
1.1 机器人码垛应用
1.各位老师是否听过码垛机、码垛机械手、码垛机器人这 样的名词? 2.我们面前的ABB-IRB120肯定是可以完成码垛应用的,但 能不能叫它是码垛机器人呢? 3.什么是通用工业机器人?什么是特种工业机器人? 4.现在市面上的焊接机器人又是怎么构成的呢? 5.码垛指的到底是什么意思? 6.码垛主要应用在什么工序?
动作1.前往取件点路径
动作2.取件点取件 需要考虑: (1)确定取件组内成员数 (2)确定取件原点及偏移量 (3)确定取件次数
动作3.前往摆件点路径
动作4.摆件点摆件 需要考虑: (1)确定摆件组内成员数 (2)确定摆件原点及偏移量 (3)确定摆件次数
指令集1.MoveL、MoveJ、MoveC
指令集2.Set 逻辑判断: (1)变量A赋值 (2)示教取件原点及调用offs功
1.2 使用O指令控制机器人夹具
1.安装并调试气动夹具 2.使用示教器“IO仿真”测试夹具 3.使用示教器设置功能键用于快捷操作夹具 4.使用IO指令方式操作夹具
1.3 ABS和offs功能
1. 详细内容请参考《工业机器人实操与应用技巧》第5章
(1)ABS (2)offs
1.3 设计并实现码垛操作
注意:取件/摆件原点示教在高于平放物料块上表面40MM的位置
思考:如果需要连续码垛2个以上的物料块应该怎么处理?
感谢亲观看此幻灯片,此课件部分内容来源于网络, 如有侵权请及时联系我们删除,谢谢配合!
能计算偏移量 (3)调用FOR语句进行循环控制
指令集3. MoveL、MoveJ、MoveC
动作4.Reset 需要考虑: (1)变量B赋值 (2)示教摆件原点及调用offs功
能计算偏移量 (3)调用FOR语句进行循环控制
1.3 设计并实现码垛操作
单次码垛过程
1.MoveL p10,v200,fine,tool1\Wobj:=wobj1;//运动到取件原点 2.MoveL offs(p10,0,0,-50),v200,fine,tool1\Wobj:=wobj1; //沿取件原点Z轴方 向下移50mm,使夹具头深入物料 3.Set DO10_1;//夹具夹紧 4. MoveL p10,v200,fine,tool1\Wobj:=wobj1;//提起物料 5. MoveL p20,v200,fine,tool1\Wobj:=wobj1;//运动到摆件原点 6. MoveL offs(p20,0,0,-50),v200,fine,tool1\Wobj:=wobj1;//沿摆件原点Z轴方 向下移50mm,使物料贴“地” 7. Reset DO10_1;//夹具松开 8. MoveL p20,v200,fine,tool1\Wobj:=wobj1;//提起夹具