ABB机器人与视觉控制器的通讯技术,看了就知道
在一些工厂里你是否经常看到下图这样的一些自动化设备,他的里边有用到机器人与相机通讯完成物料位置的检测与物料抓放等功能,那么恭喜你,几分钟时间阅读完这篇文章你就懂了。
小编花了不少时间收集整理资料,下面是主要的实现步骤,一起来看看:
1. 了解机器人硬件系统
2. 掌握机器人的编程
3. 了解视觉系统
4. 掌握视觉控制器的编程
5. 机器人与视觉系统的联接
6. 编制机器人与视觉控制器的通讯程序
一、我们先来看看所需要使用的硬件:
查阅基恩士视觉控制器厂家的说明书,配套对应的视觉相机,所支持的相机个数与分辨率是固定的,不能随意选择,如下图选的是基恩士厂家配套的相机与镜头
光源
相机与镜头
机器人控制器 与 视觉控制器
二、接下来了解通讯方面的知识:
目前我们采用的是通过网口的方式进行通讯,那么socket到底是怎么一回事呢,看看下文你就有答案:
1)什么是socket通讯?
就是TCP/IP通讯,无协议,在微软环境下称为socket
2)socket通讯能干什么?
可以收发制定的数据,包括sting字符串,byte数组等
3)创建socket机器人需要什么选项?
ABB机器人需要616-1 PC-INTERFACE选项,然后通过网线接口连接到基恩士的视觉控制器从而实现以太网的通讯。
介绍了那么多,相信此时的你已经知道需要准备哪些硬件,并进行怎样的系统连接才能完成通讯了。
(文章来源:技成培训原创,作者:黄擎乾,未经允许不得随意转载)
↓学习资料
ABB机器人与视觉通信发送数据
关注“PLC发烧友 ”,一起涨知识!
回复:机器人,领机器人全套电子资料包
导读:在工作中,通常会使用机器人去实现物料的抓取,而物料的颜色、形状、大小、角度等参数,机器人无法去实现,而视觉相机有可以实现这一功能。但是双方交换数据时,需要编程人员去规约或者提取。今天就和大家聊聊ABB机器人与视觉的通信及数据处理。
本次机器人与视觉这边,我们采用的是Socket通信。这种协议我们在这不作介绍,主要的重点是给大家介绍双方数据的提取和转换过程。
如图1,机器人欲抓起物料,但是物料的角度只能通过视觉相机这边提供给机器人(2D相机,可以识别平面旋转角度)。
图1
在编程之前,我们要掌握机器人去准确抓取一个物料的条件有两个:1.物料的位置值 2.物料的旋转角度值。所以,需要视觉这边提供3个数据,分别是:物料的X和Y位置数据和Z旋转角度值。但是ABB机器人工具的旋转姿态由q1/q2/q3/q4四个参数(四元素)决定,而视觉相机发过来的值是旋转角度值(欧拉角),所以要通过欧拉角转换为四元素机器人才能调整适合的工具姿态去抓取物料。
MODULE Module1
VAR num cam_x:=0;定义视觉发送X位置数据值
VAR num cam_y:=0; 定义视觉发送y位置数据值
VAR num cam_angle:=0; 定义视觉发送旋转角度数据值
CONST robtarget p10:=[[-1.289131E-05,3.351449E-06,237.1972],[0.01633704,-3.806521E-08,0.9998665,-3.595199E-08],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
定义安全位置点数据
Var robtarget 定义抓取位置点数据
ppick:=[[24.6736,49.99907,19.99434],[0.01633701,-5.075877E-09,0.9998665,-2.882863E-08],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR socketdev Socket1;定义套接字数据
VAR string received_string;定义字符串数据
VAR num startBit1; 定义num数据startBit1
VAR num startBit2; 定义num数据startBit2
VAR num startBit3; 定义num数据startBit3
VAR num startBit4; 定义num数据startBit4
VAR num startBit5; 定义num数据startBit5
VAR num EndBit1; 定义num数据
VAR num EndBit2; 定义num数据
VAR num EndBit3; 定义num数据
VAR num LenBit1; 定义num数据
VAR num LenBit2; 定义num数据
VAR num LenBit3; 定义num数据
VAR num Lenstring; 定义num数据
VAR string XData:=""; 定义num数据
VAR string yData:=""; 定义num数据
VAR string AngleData:=""; 定义num数据
PERS num X; 定义num数据
PERS num Y; 定义num数据
PERS num Angle; 定义num数据
以下是ABB机器人程序编写:(视觉发送给机器人的数据以字符串的格式发送并分号进行隔开,例如“12.3;33.5;24.2”)
PROC main()
SocketCreate Socket1; 创建套接字
SocketConnect Socket1, "127.0.0.1", 3000; 连接套接字
WHILE TRUE DO
SocketSend Socket1\Str:="hello server";发送数据给视觉相机
SocketReceive Socket1\Str:=received_string; 接收数据到机器人
TPWrite "server wrote-"+received_string; 写屏
DecodeData; 数据解析程序
cal_data; 欧拉角四元素转换程序
r_move; 抓取程序
ENDWHILE
ERROR 出错将关闭通信
SocketClose Socket1;
ENDPROC
PROC DecodeData()数据转换程序
VAR string Strread:=""; 定义字符串数据
VAR bool datatrue:=FALSE;定义布尔数据
Strread:=received_string; !接收来的数据存入Strread
Lenstring:=StrLen(Strread); !判断接收来的数据长度
startBit1:=1;
EndBit1:=StrFind(Strread,startBit1,";"); 查找第一个分号
LenBit1:=EndBit1-startBit1; 确定第一个数据的长度
startBit2:=EndBit1+1;
EndBit2:=StrFind(Strread,startBit2,";"); 查找第二个分号
LenBit2:=EndBit2-startBit2;确定第二个数据的长度
startBit3:=EndBit2+1; 查找第三个分号
EndBit3:=StrFind(Strread,startBit3,";"); 确定第三个数据的长度
LenBit3:=EndBit3-startBit3;
XData:=StrPart(Strread,startBit1,LenBit1); 截取第一个数据
yData:=StrPart(Strread,startBit2,LenBit2); 截取第二个数据
AngleData:=StrPart(Strread,startBit3,LenBit3); 截取第三个数据
datatrue:=StrToVal(XData,cam_x); 字符串转换为num
datatrue:=StrToVal(yData,cam_y); 字符串转换为num
datatrue:=StrToVal(AngleData,cam_angle); 字符串转换为num
ENDPROC
PROC cal_data()欧拉角四元素转换程序
VAR num rx;定义num数据
VAR num ry; 定义num数据
VAR num rz; 定义num数据
ppick.trans.z:=0; 2D视觉平面旋转,Z为0
rx:=EulerZYX(\X,ppick.rot); 四元素转换为欧拉角X
ry:=EulerZYX(\Y,ppick.rot); 四元素转换为欧拉角Y
rz:=EulerZYX(\z,ppick.rot); 四元素转换为欧拉角Z
ppick.trans.x:=cam_x; 相机X位置值给到抓取点X
ppick.trans.y:=cam_y; 相机Y位置值给到抓取点Y
ppick.rot:=OrientZYX(cam_angle,ry,rx); 欧拉角转换为四元素
ENDPROC
PROC r_move()抓取程序
MoveL Offs(ppick,0,0,30),v1000,z50,xipan\WObj:=Workobject_2;
移动到抓取点上方
MoveL ppick,v1000,fine,xipan\WObj:=Workobject_2; 移动到抓取点
WaitTime 0.5;等待0.5秒
MoveL Offs(ppick,0,0,30),v1000,fine,xipan\WObj:=Workobject_2; 移动到抓取点上方
MoveL p10,v1000,fine,xipan\WObj:=Workobject_2;回到安全点
ENDPROC
ENDMODULE
结束语:ABB机器人与视觉相机的通信并且实现抓取,主要掌握以下几个知识点即可解决:
1.视觉会发送哪几个数据给机器人,以什么格式进行发送?
2.视觉发送数据给了机器人,如何提取出来?
3.视觉发送的数据欧拉角如何转换成机器人的工具旋转角度
没有视觉的话我们可以采用调试软件进行测试。如图2
图2
来源:技成培训网——PLC发烧友,作者:郭彪,未经授权不得转载
回复:机器人,领机器人全套资料电子包
相关问答
plc和视觉通信程序怎么写?
编写PLC和视觉通信程序需要具备一定的编程知识和相关硬件设备的操作经验。以下是一个简单的步骤:首先,确定所使用的PLC和视觉设备的型号,了解其支持的通信协...
plc怎么结合视觉实现精准定位?
PLC结合视觉实现精准定位的方法如下:图像处理:通过相机采集图像,然后使用PLC中的图像处理算法对图像进行处理,提取出需要定位的物体特征。位置计算:根据提...
视觉检测设备和plc之间是通过什么通讯的?
通过以太网通信的形式进行数据交互;视觉检测系统与,PLC,的硬件连接,视觉检测过程的,PLC,控制逻辑,1/10,1,视觉检测系统与,PLC,的硬件连接,CCD,视,觉检测,系...
想系统学习PLC,不知道哪有免费的视频教程和编程软件,跪求各位大神指教?
哪有免费的视频教程和编程软件?类似的问题平台有很多,记得也回答了很多。看到问题中免费二字,也能略知你当前对学习的心态。免费的视频教程,有价值的专业...
怎么学习机器视觉?这个行业有前途吗?
机器视觉会有前途。我是从事自动化行业的,这几年机器视觉的应用真的是风生水起。特别是在工业4.0,大数据,AI,深度学习这些高大上高科技名词的带动下,机器...
plc梯形图里中闪控制在什么地方?
PLC梯形图中闪控制一般体现在Timer和Counter模块上。Timer模块可以设置计时器的时间,在触发条件满足时输出信号,即控制某个设备或过程在一段时间内持续执行或...
老表们跪求解答小榄技术好的PLC编程,PLC编程操作方便吗??
[回答]宇丰更好地绕开障碍物代替工人完成枯燥动作宇丰视觉检测系统就是用工业相机代替人眼睛去完成识别、测量、定.位等功能。宇丰使用视觉检测系统能有效...
学plc编程月薪能达到1万吗?
这套方法完全可以让你轻松编程,潇洒生活!在接触工控行业的这九年里,我...6.程序编好了去调试过程中,缺少实际调试工程经验7.遇到复杂的工程,没有思路,心里发慌...
麻烦各位老师,求解答,服务专业的PLC编程系统哪家专业,PLC...
[回答]宇丰视觉点胶机能够实现精确、高速、全自动点胶的原因与其内部结构密切相关。视觉点胶机由三大部分组成:执行机构、驱动机构和控制系统。视觉点胶机...
怎么学习labview视觉入门?
一台电脑和一部相机就够了。只要nimax里能取到图,labview也能实现,不需要什么数据采集卡。一台电脑和一部相机就够了。只要nimax里能取到图,labview也能实...