1.
总述
UR
机器人与
PC
通讯主要介绍
UR
机器人与工控机,具备
TCP/IP
通讯模块的
PLC
以及嵌
入式系统等等如何进行通讯。大家可以
根据实际需求选
择最佳的通讯方式
。对于每种通讯方式的详细介绍,本文不涉及,需要的读者可以登录
UR 官网技术支持
的
How-to articles
中进行搜索和下载。
早期版本的
UR
机器人版本提供了
C-API
接口,目前版本的
UR
机器人(
CB3
及之上)不
再支持;关于
ROS
接口,其实是在
UR
提供的接口上封装的一层,感兴趣的请参考
ROS
官
网上的项目。
UR
机器人提供的通讯接口如图
1
所示,接口的比较见表格
1
。
![](https://img-blog.csdnimg.cn/485efec7ca5449d9955c1cf253ba389e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-B54m55pm66IO9S2luZ1RlY2g=,size_13,color_FFFFFF,t_70,g_se,x_16)
UR
机器人目前支持
Modbus-TCP, EthernetIP
以及
Profinet
三种总线,其中
UR
机器人
自带
Modbus-TCP
服务器,
PC
或者外部智能设备可通过该端口获取机器人的状态信息。
2.
通讯接口介绍
各通讯接口相互独立,可以同时使用;下面将对各通讯接口进行详细介绍。
1
发送内容:机器人向外发送的信息
2
接收内容:机器人从上位机接收的信息
2.1 Dashboard
(
29999
)接口
Dashboard
接口是由机器人人机界面进程(示教器显示)负责维护和执行的一个端
口。该端口主要负责接收上位机指令,
执行机器人初始化、加载程序、开始和暂停程序
运行以及设置用户角色等
操作,上位机可以远程操作机器人就如同操作示教器一样。
该接口主要应用在自动启动机器人,无示教器应用等场合。
Dashboard
接口接收上位机发送的
Dashboard
命令字符串,机器人接收后,返回
执行结果字符串
。
2.2 Primary & Secondary
(
30001 & 30002
)接口
Primary & Secondary
接口由机器人控制进程维护和执行的端口。开机后,机器人
一直从这两个端口以
10Hz
频率对外发送机器人的状态信息(机器人位置,
IO
,运行状
态等),除此之外
Primary
端口还会发送一些全局变量更新等信息。因此如果需要编写
上位机在线编程以及运行监视,例如编写一个类似示教器界面的上位机程序时可以使
用
Primary
端口(当然对于加载程序,运行程序等操作需要使用
Dashboard
(
29999
)
接口)。
Primary & Secondary
接口在接收到上位机发送的脚本指令
字符
串后会
立即中断当前执行程序(如果机器人正在运行),然后运行接收到的脚本指令
。
值得提醒的是,一些具有返回值的脚本指令,其返回值并不会通过这两个端口返回,因
为脚本的执行是在机器人控制进程中,其返回值只传递给该进程中的变量。
如果想一次性发送一段程序给机器人,需要将发送的程序按照如下格式发送:
如果向
Secondary
接口发送
def
类型的一段脚本给机器人,机器人当前执行的程
序会被中断,
如果需要当前执行的程序不被中断(例如设置
IO
),可以向
Secondary
程
序发送
sec
类型的一段脚本,当然这段脚本中不能够包含运动指令,
因为同一时间机器
人只能从一处获取运动指令,否则无法预期运行后果。
def functionName():
脚本指令
脚本指令
脚本指令
#
对于函数或者
while
等结构语句
#
需注意同层次具有相同缩进
脚本指令
……
end
1.
Primary & Secondary
2. Secondary
实际发送字符串
(
缩进用空格,换行用
\n):
“def functionName():\n
脚本指令
\n
脚本指令
\n ……\nend\n “
“sec functionName():\n
脚本指令
\n
脚本指令
\n ……\nend\n “
sec functionName():
非运动
脚本指令
非运动
脚本指令
非运动
脚本指令
#
对于函数或者
while
等结构语句
#
需注意同层次具有相同缩进
非运动
脚本指令
……
end
2.3 Realtime (30003)
接口
Realtime
通讯接口
始终
以
125Hz
的频率往外发送机器人的
详细状态信息
(位置,
速度,关节电流,力矩等),同时也可以接收上位机发送的脚本指令(脚本指令的发送
规则参考
Primary & Secondary
(
30001 & 30002
)接口介绍中相应部分)
并立即执行
。
2.4 RTDE (30004)
接口
RTDE
全称
Realtime Data Exchange
,
RTDE
接口需由上位机进行
配置,
并根据配置
以
125Hz
的频率往外发送
机器人的详细状态信息
(位置,速度,关节电流,力矩等),
机器人也
只会接收配置的输入信息
(
IO
,寄存器等)。
与
Realtime
接口相比,
RTDE
接口不能接收脚本指令,只能接收配置好的输入信
息;但是
RTDE
接口不会中断当前程序的执行,而且与输入输出信息都是经过配置,传
输的信息没有不需要的数据,可以按需启动和停止,因此能够大大降低对网络带宽的占
用。
2.5 Socket
通讯
Socket
通讯是指机器人通过
Socket
相关脚本指令
与上位机进行
通讯的方式。
2.6 XML-RPC
通讯
XML-RPC
全称
XML remote procedure call
。是一种通过
XML
格
式传输结构化数据的协议,其优点在于传输的数据是结构化的,无需用户自己进行序列
化和解析操作,例如从上位机传输
float
数据,机器人接收到后就已经是
float
类型了。
目前
XML-RPC
库已支持多种语言,例如
C++
和
Python
等,读者可从网上自行下载相
关资料。
2.7 Modbus-TCP
通讯
UR
机器人支持
Modbus-TCP
,既可以作为客户端也可以作为服务器。
UR
机器人
作为客户端,只需配置好网络,然后使用相应的脚本即可
。
UR
机器人
作为服务器,可以提供机器人当前位置,速度等状态信息,也提供通用寄存器可用于互
相通讯(例如相机将数据传输给机器人)。