视觉把坐标传给机器人,机器人根据坐标去拿料
接线:用的海康的镜头 机器人是PNP输出 海康接个1千欧的电阻 接的机器人db652板14和15口子
VP设置 作为 服务器 abb位客户端
发往abb的xy坐标
通信成功会如下图所示
ABB需要的配置项
ABB多任务走通信把传过来的字符串处理成坐标
三个函数完成处理
视觉传过来的值 string1
如下处理 我是本地链接 端口5001
strFind(待处理字符串,传过来的起始值,结束值)
strPart(字符串,第几个开始数,结束值) 逗号不需要,所以结束值-1
flag1、flag2位bool类型 需要判断true false
一下是ABB的数据声明
PERS robtarget p10:=[[657.91,-134.19,197.53],[4.83528E-05,0.0026046,-0.999997,-2.91403E-05],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERS num X:=657.92;
PERS num Y:=-134.19;
TASK PERS tooldata tool1:=[TRUE,[[0,0,200],[1,0,0,0]],[2,[10,0,0],[1,0,0,0],0,0,0]];
CONST robtarget p20:=[[635.05,132.17,171.91],[0.000129884,7.76924E-05,-1,-3.07718E-05],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERS bool flag1:=TRUE;
PERS bool flag2:=TRUE;
PERS bool flag3:=TRUE;
PERS num R:=2.41;
PERS num R1:=228.093;
这是简单拿放料demo 该点位、声明 ,可以直接用
PROC main()
INI;
WHILE TRUE DO
ConfL\Off;
WaitTime 1;
PulseDO\PLength:=2, DO14;
IF flag1 = TRUE AND flag2 = TRUE AND flag3 = TRUE THEN
p10.trans.x := X;
p10.trans.y := Y;
!方形需要设置旋转
R1 := 90+R * 57.3;
MoveL Offs(p10,-200,0,20), v100, z50, tool1;
MoveL RelTool(p10,0,0,-30\Rz:=R1), v100, z50, tool1;
MoveL RelTool(p10,0,0,0\Rz:=R1), v100, fine, tool1;
Set DO1;
WaitTime 0.5;
MoveL RelTool(p10,0,0,-30\Rz:=R1), v100, z50, tool1;
MoveL Offs(p20,0,0,50), v100, z50, tool1;
MoveL p20, v100, fine, tool1;
Reset DO1;
WaitTime 0.5;
MoveL Offs(p20,0,0,50), v100, z50, tool1;
flag1 := FALSE;
flag2 := FALSE;
flag3 := FALSE;
ENDIF
ENDWHILE
ENDPROC
PROC INI()
Reset DO1;
Reset DO14;
flag1 := FALSE;
flag2 := FALSE;
flag3 := FALSE;
Set DO8;
ENDPROC