本文介绍UR机器人通讯示例,采用的是UR5机器人,实现的功能是从电脑端给机器人发送坐标,让机器人运动到目标位置。已经经过实操检验。本文截图是在虚拟机上,与实际界面显示略有不同,仔细看图片和文字。
1.设置网络
1.1使用网线连接电脑与机器人工控柜底下的网口。打开机器人,选择设置机器人-网络-设置地址
1.2设置的机器人的IP地址需要与电脑的IP地址 前三位相同。最后一位0-255.
1.3我此时没有连接网线。(可能需要关闭无线网络,前期测试最好先关闭)。点击已连接的以太网图标。选择TCP协议4,设置电脑的IP地址。前三位与机器人相同,第四位0-255且必须与机器人的不相同。
1.4设置好机器人和电脑的IP地址以后,机器人界面会显示绿色√网络连接成功。(j机器人网口在控制柜底下)
2.机器人编程
2.1使用空程序。编程语言一点不会的,建议看下官方的英文脚本手册,或者百度下载中文的脚本手册。这里我讲解自己写的程序。
开始前
//打开tcp网口通讯,括号内分别是电脑的IP地址,端口号,通讯名称。均为自己设置的数值。
//该函数返回bool值,连接成功为true,失败为false
tcp_status≔socket_open("192.168.125.11",30000,"socket_1")
机器人程序
//机器人向电脑发送字符串RealTime_display
socket_send_line("RealTime_display","socket_1")
//设置一个数字输出
设置 DO[0]=开
//变量pos_robot=当前的tcp坐标。函数意思不懂的看脚本手册!
pos_robot≔get_actual_tcp_pose()
//下面到最后都是循环语句
//判断数字输出digital_out[0]是否为真,前面我们已经设置为真了,所以直接进入循环
循环 digital_out[0]≟ True
等待: 0.01//没什么用
//从网口socket_1中以ascii码形式读取7个数值.
//这里的7是我自己定义的,我给机器人发的信息是(1,X,Y,Z,RX,RY,RZ)
//1是检验位,xyz是坐标,后面的三个是姿态角
pos_list≔socket_read_ascii_float(7,"socket_1")
//当网口没有数据时候pos_list收到的是(0,nan,nan...),所以设置校验位1,用于判断是否收到坐标信息
//pos_list[1]就是判断校验位是否为1
If pos_list[1]≟1
//如果为1,说明收到电脑端发来的坐标,执行赋值操作
//自己写的一个小脚本pos_get.script_bak内容如下:
//pos_robot[0]=pos_list[2]
//pos_robot[1]=pos_list[3]
//pos_robot[2]=pos_list[4]
//pos_robot[3]=pos_list[5]
//pos_robot[4]=pos_list[6]
//pos_robot[5]=pos_list[7]
脚本: pos_get.script_bak
// 将变量转为坐标。因为我发的xyz单位是毫米,要转化为米,机器人的编程要求,所以要除以1000.
pos_run≔p[pos_robot[0]/1000,pos_robot[1]/1000,pos_robot[2]/1000,pos_robot[3],pos_robot[4],pos_robot[5]]
//执行直线运动命令,到达pos_run点
MoveL
pos_run
//将校验位归0,进入下一次循环等待。
pos_list[1]=0
注意:脚本中的变量一定要在程序前面提前定义。
3.电脑端TCP通讯助手
3.1可在百度上自行下载网口通讯助手。可能不太好用,连接不上。我使用了自己编写的通讯助手。电脑做服务器,填写自己的IP地址,端口号。端口号要与机器人编程中的一致。
3.2点击开始监听,并运行机器人程序。显示成功连接。
3.3在发送窗口 英文输入(1,X,Y,Z,RX,RY,RZ),点击发送。可以看到机器人开始移动。大功告成。