ABB机器人码垛程序中断初始化,当右侧满载码盘单位信号变为0时,即表示满载码盘被取走,则触发中邮程序lleR.复位右侧满载信号、满载布尔量等
ENDPROCPROC rPick0
抓取程序ClkReset Timerl;
复位时钟ClkStart Timerl;
开始计时rCalPosition;
计算位置,包括抓取位置、抓取安全位置、放置位置等
MoveJ Offs(pPick 0,0,nPickH),vMaxEmpty,z50,tGripperWObj:= wobj0;
利用MoveJ移动至抓取位置正上方
MoveL pPick,vMinLoad.fine,fGripperWObj:=wobj0;
利用MoveL移动至抓取位置Set do00 ClampAct;
置位夹板信号,将夹板收紧,夹取产品Waitime 0.3;
预留夹具动作时间,以保证夹具已将产品夹紧,等待时间根据实际情况来调整其大小:若有夹紧反馈信号,则可利用WaitDI指令等待反馈信号变为1,从而替代固定的等待时间
GripLoad LoadFull;
加载载荷数据
TiggL 0ft(pickc0.O,nPickH),vMin od,Hokot.x50.GripperWObj:-wobj0;
利用TiggL移动至抓取正上方并调用触发事件HookAct,即在距离到达点10m处将钩爪收紧,防止产品在快速移动中掉落
MoveL Pisa.sMaxLaL.20.GipperWObj:=wobj0
利用MoveL移动至抓取安全位置ENDPROC
PROC Paco
放置程序
Wobhj-CurWob;
位置正上方 rWobj CurWobj;出在离开放置位置正上
事件HookOf,并调用触发!利用TiggL移动至放置位置,方点位10mm后将钩爪放开
Reset do00 ClampAct;
复位夹板信号,夹板松开,放下产品Waitimne 0.3;
预留夹具动作时间,以保证夹具已将产
等待时间间根据实际情况调整
其大小
GripLoad LoadO;
加载载荷数据Load0 .0 Ci,WObis CurWobj;MoveL Ofs(place .pIacmeCmMemEme.z.JLtGripperoo.-!利用MoveL移动至放置位置正上方rPlaceRD
调用放置计数程序,其中会执行计数加1操作,并判断当前码盘是否已满载MoveJ pPickSafe,vMaxEmpty,z50,tGripper\WObj:=wobj0;
利用MoveJ移动至抓取安全位置,以等待执行下一次循环ClkStop Timerl;!停止计时
nCycleTime: CkRead(Timerl);
读取时钟数值,并赋值给nCyeleTimeENDPROC
PROC ryleChecko
周期循环检查TPErase;
TPWrite 'The Robout s rmingn
TPWhie "ast零消解并显示当前机器人运行状态ycletime is:提示上次循环运行时间"WNum-nCycleTimet
TPWiteimher ofthe Boxes in the Right pallet is:"Num nCount R-1;
pWile "The mumber ofhe BO起示当前左右码盘上面已摆放产品1个数。由于nCount L和nCount R表示的是F
示当 此处显示的是码盘上已摆放的产品数,所以在当前计数数将要摆放的第多少个产品,
面减去1 , L-FALSE AND di02 PlelenPtoe L-I AND dio0 BoxknPos_L-1) ORIF (alleFutR FALSEAND di03 PaletnPose R=1 AND di01 BoxInPos_R-1) THEN(allelFullL
bReady:=TRUE;ELSE
bReady:=FALSE;
判断当前工作站状况,机器人继续执行码垛任务:只要左右两侧有任何一侧满足码垛条件, 则布尔量bReady否则布尔量bReady为FALSE,机器人则等待码垛条件
为TRUE,的满足
ENDIFENDPROC
PROC rCalPositionO
计算位置程序bGetPosition:=FALSE;
复位完成计算位置标识
WHILE bGetPosition=FALSE DO
若未完成计算位置,则重复执行WHILE循环
TEST nPallt
利用TEST判断执行码垛检测标识的数值,1为左侧, 2为右侧
CASE I:
若为1,则执行左侧检测
IF bPalletFull L=FALSE AND di02_ PalletInPos L=1 AND di00 BoxInPos_ L=1 THEN
判断左侧是否满足码垛条件,若条件满足则将左侧的基准位置数值赋值给当前执
于位置数据
pPick pPick L;
pPlaceB plicBee雅目标点 当前放置位
PlacBase9 P
将左侧放置位置易到
CurWobj 系数据献值给 从而计制码盘工件坐标释pla-patem一放置位置功能程!调用计并赋值给当成当前放置目标点放的位置数据,开展bePosition!已完则将究成计算位宣标TRUEnalleNo:=l;将码垛计数标识置为1,则后续会执行行左侧码垛计算累计;识置为TRUE
置基准点
收
ELSE
bePosion-FALSE;
若左侧不满足码垛任务,
则完成计算位置标识置为FALSE,则程序会再次执行
WHILE循环
ENDIF
nlle-2E循环。 ;检测右侧是否满足码垛条件
1!将码垛检测标识置为2,则下次执行HLE循环时
CASE 2:
!若为2,则执行右侧检测
IF bleull R FALSE AND di03 PltPos R=1 AND di1 BoxInPos R=l THEN
!判断右侧是否满足码垛条件, 若条件满足,则将右侧的基准位置数值赋值给当前执行位置数据
pPick pPick R;
将右侧抓取目标点数据赋值给当前抓取目标点placBaseo-oPaceBae. R;placBac90:=pPlaceBase90 R;
将右侧放置位置基准目标点数据CurWobj- WbjPalle R;
博右衡码堂工件坐标系数据赋值给当前工件坐标系
赋值给当前放置位置基准点
plaPeaemnCouo R)
P调用计算放置位置功能程序,同时写入右侧计数参数,从而计算出当前需婴摆
,并赋值给 当前放置目标点
校的位置数据,GetPosition:=TRUE;
ne已完成计算位置则将完成计算位标识置为TRUenPalletNo:=2;
将码操计数标识置为2.则后续会执行右侧码垛计算累计
ELSE
tPosition:=FALSE;
b若右侧不满足码垛任务, 则将完成计算位置标识置为FALSE,则程序会再次执!若右侧不FWHILE循环
ENDIF
Pallt:=1;
将码垛检测标识置为1,则下次执行WHILE循环时检测左侧是否满足码垛条件
DEFAULT:
TPERASE;
TPWRITE "The data 'nPaller is erorplease check it!";Stop;
数据nPallet数值出错处理,提示操作员检查并停止运行ENDTESTENDWHILE
此种程序结构便 于程序的扩展,假设在此两进两出的基础上改为四进四出,则可并列写入CASE 3和CASE4。在CASE中 切换Pallet的数值,是为了将各线体作为并列处理,则执行完左侧后,下次优先检测右侧, 之后下次再优先检测左侧
ENDPROC
FUNC robtarget pPattern (num nCount)
计算摆放位置功能程序,调用时需写入计数参数,以区别计算左侧或右侧的摆放
位置
VAR robarge pTanget
定义个目标点数据, 用于返回摆放目标点数据IF nCoum>= ANd nCountc-s THEN、
根据判断结ENDIF 每层堆放5个个产品),眼安全高度设置果来设置抓取安全位置,以保证机器人不会与己的取点为基准偏移出垛产品发生碰撞, 来的,变该安全目在实际中由现场实际情况来调整。此案例中p的安全位置是以抓取化县根据码垛层费数的增加而改也可单独去示教一个抓取后的安全目标点,同样根据此数据的不同
同数值计算出
不同摆放位置的目标点
数据
CASE 1:
pacet.tans. xplacaBac.ocansCpargtas.EpPacBacocanscyspTaget. rans. z:placBasco.oans..
pTarget.rot:=pPlaceBase0.rot;pargtof.pPlaceBaseoerobcofog
pTaget:- Ofrpapar.Cnpenaton[nCout,,,,
Compensation{nCount,2,Compensation {nCount,3});
若为1,则放置在**个摆放位置,以摆放基准目标点为基准,分别在X、Y、Z方向做相应偏移,同时指定TCP姿态数据、轴配置参数等。为方便对各个摆放位置进行微调,利用Offs功能在已计算好的摆放位置基础上沿着X、Y、Z再进行微调,其中调用的是已创建的数组Compensation,例如摆放**一个位置时nCount为1,patgrfiac.omeotono1.1,Comesation[l,2},Copensation{131)如果发现**一个摆放位置向X负方向偏了5mm,则只需在程序数据数组Cmosioi将**组数中的**个数设为5, 即可对其X方向摆放位置进行微调。
位置1与创建好的放置基准点placeBase0 重合,则直接将pPlaceBase0各项数据赋值给当前放置目标点:相对于pPlaceBase0,位置2只是在X正方向偏移了一个产 品长度,只需在pPlaceBase0日标点X数据上面加上一个产品长度即可;位置3则pPlaceBase90重合,依次米推,则可计算出剩余的全部摆放位置。在码垛应用过程中,通常是奇数层跺型一致, 偶数层跺型一致, 这样只要算出**层和第二层之后,第三层算位置时可直接复制**层各项CASE,然后在其基础上在Z轴正方向上面叠加相应的产品高度即可完成。第四层则直接复制第二层各项CASE,然后在其基础上在Z轴正方向上面叠加相应的产品高度即可完成。以此类推,即可完成整个跺型的计算。来源 网络
————————————————
更多详情:ABB机器人