abb机器人码垛详细编程教程【完整版】
所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
举例:
int a[10]; 说明整型数组a,有10个元素。若要表示第10个元素,则使用a[9]。第一个则是a[0]。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch,有20个元素。
在ABB机器人中,数组分为一维数组、二维数组、三维数组,那它们的区别在哪里呢?我们编程需要用到几维数组呢?那我们来看看例子:
一维数组:
当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。

注意:ABB机器人中第一个元素为:num1{1},而非num1{0},所以num1中有三个元素,第一个元素值为5,而非第0个元素值为5。
二维数组:

理解完了数组之后,我们来看一下,具体编程案例吧!如图中,有4个点需要计算,以第1点位基准。(每个方块的长宽都是200mm*200mm)

数组建立

接下来我们来看一下在示教器里怎么编辑吧!(新建一个数组 reg6{4,3}),建立好了数组之后编程就按上述方式即可!
1.新建一个4行3列的数组,名称为reg6。

2.把计算出来的偏移值填进去。{1,1}代表第一个产品X轴偏移值,{1,2}代表第一个产品Y轴偏移值,{1,1}代表第一个产品z轴偏移值。


如果是两层的码垛(8个产品),则只需要建立reg6{8,3}数组,XY值不变,只是Z轴位置改变了。最后我们看到的程序就是这样的:
CASE 1:
pick := Offs(p10,reg6{1,1},reg6{1,2},reg6{1,3});
CASE 2:
pick := Offs(p10,reg6{2,1},reg6{2,2},reg6{2,3});
CASE 3:
pick := Offs(p10,reg6{3,1},reg6{3,2},reg6{3,3});
CASE 4:
pick := Offs(p10,reg6{4,1},reg6{4,2},reg6{4,3});
CASE 5:
pick := Offs(p10,reg6{5,1},reg6{5,2},reg6{5,3});
CASE 6:
pick := Offs(p10,reg6{6,1},reg6{6,2},reg6{6,3});
CASE 7:
pick := Offs(p10,reg6{7,1},reg6{7,2},reg6{7,3});
CASE 8:
pick := Offs(p10,reg6{8,1},reg6{8,2},reg6{8,3});
NDPROCPROC 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;
预留夹具动作时间,以保证夹具已将产
等待时间间根据实际情况调整其大小