我们来解释下,我们首先要定一个基准点,我们的下面所有的点位的偏移都是在基准点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;
- ENDWHILE
- WHILE jishu1 > 5 DO !计算产品有几行,一行产品有5个, 当产品满足5时.会在Y方向 jishu1 := jishu1 - 5; 加1.当产品不满1行时,程序会继续往下运行。
- ny := ny + 1;
- ENDWHILE
- WHILE jishu1 > 1 DO ! 最后计算产品在一列有几个产品,也就是产品在X方向的位置
- jishu1 := jishu1 - 1;
- nx := nx + 1;
- ENDWHILE
- X := nx * dx; !X方向偏移的距离
- Y := ny * dy; !Y方向偏移的距离
- Z := nz * dz; !Z方向偏移的距离
- ENDPROC
- PROC quliao() ! 放料程序
- IF nproduct = 1 THEN
- fristpoint;
- ENDIF
- IF nproduct > 1 THEN
- pallet1; !码垛计算程序
- 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; !抬高点
- ENDIF
- ENDPROC
复制代码
|