CONGEX康耐视智能相机与三菱PLC通讯设置
实现如下功能:
(0)监控相机在线离线 (完成)
(1)拍照 (完成反馈) (完成)
(1) 切换作业 (完成)
(2) 接收数据 (完成)
(5) 发送数据 (完成)
相机设置截图以及说明:
(1) 传感器》》网络设置》》 SLMP 扫描。
(2) 控制器选默认(当然根据现场型号来确定),IP地址填对方PLC IP地址。
(3) 端口号跟PLC工程师定义 (没有使用的端口),轮询时间 100 ms 。
相机设置及截图说明:
(1) 控制字和状态字和profinet 类似 查看SLMP的通讯说明文档即可。
注:三菱PLC一个设备地址对应16 Bit 注意匹配说明文档。
(2) 输入组件 对应着job号 和 userdata 两部分 需要注意的是 切换作业需要 脱机-输入作业号-execute commend –联机
发送数据需要 写入数据-Setuserdata –拍照。
(3) 输出组件包括 当前作业号 以及最终 输出的结果。
(4) 读取userdata 使用的函数是 readuserdatabuffer() 和 getbufferdata()
输出结果使用的是 writeresultbuffer() 使用默认或是SLMP scanner.
设置D – 数据寄存器是注意保留足够的空间。
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程序-ZOL问答
不管是什么PLC读取PLC程序的方法基本都一样。第一步:在电脑上安装与PLC对应的编程软件(一般买PLC时就随机带光盘,没有就网上下载)第二步:要有该PLC对应的数据...
松下FP1系列PLC编程软件-ZOL问答
可以给plc设置密码,有4个等级的防护有用(0)回复精品应用推荐新浪微博天气...您好,我的相机型号是松下DMC-FZ7GK,内存卡丢了,想再买一个,不知道买哪种规格的...
plc能做视觉控制吗?
回答如下:是的,PLC(可编程逻辑控制器)可以通过连接视觉传感器、相机和图像处理系统来实现视觉控制。PLC可以接收传感器和相机的输入,并使用图像处理算法来分...
plc如何接收相机的数据?
PLC(可编程逻辑控制器)通常用于工业自动化和控制,而相机通常用于图像捕捉和检测。要让PLC接收相机的数据,可以使用以下步骤:1.选择合适的相机:相机的选择...
三菱FX2NPLC编程软件怎么输入T0啊~时间的那种-ZOL问答
回头率300%的高颜值复古全画幅相机尼康Zf值得入手吗评论17带着富士GFX100SII行走于美丽的法罗群岛评论53微距不是“怼着拍”日常环境微距拍摄小教程评...
西门子plc200编程软件怎么安装-ZOL问答
编程软件如何安装有用(0)回复XIAYE123你先把软件下载下来,然后双击运行...此为西门子200PLC附加指令库(由西门子内部工程师编写),非标准库(USS、MOUDBUS)...
iphonex后置摄像头黑屏-ZOL问答
2、退出相机程序,再重新启动相机,方法是快速点Home两下,划到相机处,往上一推就可退出相机程序了;3、经上面两个步骤还不行,就关机后,再重新启动手机看看是否恢...
plc编程线驱动肿么安装-ZOL问答
先看电脑里有没有关于相机的硬件显示,有的话,点它,再看什么问题;没有的话,接线问题.3条回答:【推荐答案】怎么没随机的光碟啊这样你先连接电脑跟数据线提示找到...
学习pLC有前途吗?
您好,小吴帮您回答。PLC的学习不能说有没有前途,应该说PLC这个行业,或者说自动化这个行业有没有发展,有没有前途,我个人就是自动化专业,觉得还是很好的一...许...
欧姆龙PLC程序下载图标是那个呢-ZOL问答
欧姆龙PLC程序上下载图标欧姆龙PLC下载程序操作。使用CX-ONE的时候:1、先点PLC-在线工作,联上机2、PLC--传送---到PLC,3、然后一路点确定就可以了。有...