UR机器人通信汇总

文章目录

  • 一、概述
  • 二、UR机器人通信
    • 2.1UR通信协议
    • 2.2 UR通信端口
  • 三、UR机器人通信端口类型
    • 3.1 Modbus TCP端口(502端口)
    • 3.2 Dashboard端口(29999端口)
    • 3.3 上位机编程端口(30001/30002/30003端口)
      • 3.3.1 URScript简介
      • 3.3.2 机器人的控制
      • 3.3.3 机器人状态读取
  • 四、一个概念——TCP
  • 五、UR机器人返回信息格式解析
    • 5.1 概述
    • 5.2UR返回信息协议解析
      • 5.2.1返回数据包频率和长度
      • 5.2.2返回数据包格式
    • 5.3 解析实例
    • 5.4 相关代码
  • 六、基于TCP/IP协议实现上位机对UR机器人的远程控制
    • 6.1引言
    • 6.2 UR机器人提供的基于TCP/IP协议的接口
    • 6.3 ModbusTCP端口
    • 6.4Dashboard端口
    • 6.5上位机编程端口
    • 6.6实时反馈端口
    • 6.7结束语


一、概述

UR机器人作为目前使用广泛的协作机器人,其开放了基于TCP/IP的远程控制功能,提供了多个多类型的端口,用于工业总线控制,或者用户自行编程控制,以下记录整理此方面的信息。
参考链接:

http://t.csdn.cn/ikiMG

二、UR机器人通信

2.1UR通信协议

UR机器人可通过TCP/IP通信,向机器人发送控制命令,以及从机器人获取状态信息。

2.2 UR通信端口

UR机器人通信时提供了以下接口,我们可以根据自己需要,使用其中的一种或多种。
表1 机器人作为服务器的通信端口
在这里插入图片描述
表2 机器人作为客户端的通信端口
在这里插入图片描述

三、UR机器人通信端口类型

3.1 Modbus TCP端口(502端口)

Modbus是OS模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户端/服务器通信,互联网组织保留系统端口502访问Modbus,Modbus是一个请求/应答协议,并且提供功能码规定的服务。
UR机器人既可以作为Modbus TCP服务器,也可以作为Modbus TCP客户端,两者的主要区别在于消息请求方的不同。
通过UR机器人的相关Modbus地址,我们可以访问机器人的很多信息,进而可以在上位机上解析这些信息并显示。
下表为Modbus地址
在这里插入图片描述
示例:本人利用502端口实现了TCP/IP协议的UR控制和状态读取,,其中简单介绍了Modbus命令的构造,并使用260、270、400三个地址读取UR状态和位置信息。

3.2 Dashboard端口(29999端口)

上位机可以通过29999端口直接发送一些简单的指令给机器人,这些指令是UR自己定义的,这种功能被称为Dashboard。我们可以通过一些Dashboard指令,远程切换、加载程序,同时可以启动、暂停、停止程序,实现上位机对UR的远程控制。

3.3 上位机编程端口(30001/30002/30003端口)

UR机器人提供了这三个端口,用于远程控制编程。其功能如下表所示
在这里插入图片描述
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

参考链接:https://blog.csdn.net/weixin_52531852/article/details/124227397

3.3.1 URScript简介

UR机器人有3种编程方式:Polyscope编程、脚本编程以及C-API编程:

  1. Polyscope编程:指的是程序在示教器上被编辑,机器人然后执行,这是UI层的编程方式;
  2. C-API编程:是在研发层上的编程方式;
  3. 脚本编程:URScript,是UR公司在Python语言基础上,自己研发的语言,是在脚本层上控制机器人的编程语言,我们使用的主要是这种脚本编程。

3.3.2 机器人的控制

上位机作为客户端,通过30001/30002/30003其中一个特定的编程端口,与机器人控制器建立TCP/IP连接,就可以在上位机上按照URScript语言格式编写脚本程序,直接发送给机器人控制器,机器人就可以执行相应动作了。
示例:本人利用30003端口实现了TCP/IP协议的UR控制,其中介绍了三个常用URScript指令,即MOVEL、MOVEP、STOPL,并利用其实现了UR的运动控制。

3.3.3 机器人状态读取

30001~30003这三个端口共同特点是,一旦客户端打开端口,就会按照一定的频率收到来自机器人的信息,30003端口是实时反馈端口,客户端每8ms(125Hz)就收到一次来自机器人的信息。而其它两个端口只能每200ms(5Hz)收到一次来自机器人的信息。
客户端通过这三个端口收到的机器人信息稍有不同,通过30003端口收到的信息是最丰富的,包含了通过30001和30002收到的大部分信息。
因此,通过实时反馈端口30003,客户端收到机器人的信息频率是最高的,内容也是最全的。
按照参考文献说法:通过30003每次收到的数据包是1044个字节,以标准格式排列,极少数情况下客户端会收到小于1044个字节。
经个人实际测试,30003端口每次会收到1108字节,与上述描述稍有不同,本人试图解析了这些信息,限于篇幅,下一篇文章“UR机器人返回信息格式解析“详细介绍30003端口返回信息的解析。

https://blog.csdn.net/hangl_ciom/article/details/97612246

四、一个概念——TCP

另外需要说明一点的是,在UR控制里出现了两个TCP概念,要注意区分(刚接触UR时,看示教器和说明书,很迷糊了一阵子,所以这里说明一下,有同样疑惑的可以参考)

  1. 网络协议的TCP:网络协议中TCP/IP的含义是Transmission Control Protocol / InternetProtocol;
  2. UR的TCP:含义是Tool Center Point,指的是机器人工具的中心点,TCP位置指的是机器人工具中心点位置,同理TCP坐标系,指的是固连在机器人工具终端的坐标系。

五、UR机器人返回信息格式解析

5.1 概述

UR机器人提供了多种端口,用于控制和读取机器人信息,本人整理了相关信息,见文章《UR机器人通信端口和协议》。
本人使用了30003端口来向机器人发送URScript脚本控制命令,并通过该端口接收实时返回数据。

5.2UR返回信息协议解析

5.2.1返回数据包频率和长度

由于30003端口返回的信息是最全的,包含了30001、30002端口的返回信息,因此,这里以30003端口信息解析。
30003端口返回数据频率一般是125Hz,即每8ms即返回一个数据包,最高频率能达到500Hz。
个人实测,返回数据包的字节长度一般是1108字节,按照文献1数据包是1044字节,文献2数据包是1108字节,分析可能UR后来扩充了UR返回数据信息。
实际上,这个字节规定是多少并不影响使用,因为在返回的数据包的前四个字节,即给出了数据包中包含信息的字节数。

5.2.2返回数据包格式

下表为30003实时反馈端口机器人信息1044字节数据格式,来自参考文献1。

在这里插入图片描述
下图为1108字节返回数据具体的各字节包含数据格式,来自参考文献2。
在这里插入图片描述

5.3 解析实例

编写了TCP/IP程序控制UR机器人,并解析其在30003端口返回的数据包,实测结果:
每个数据包收到1108字节数据。
数据解析时要注意,收到数据包的每个数据的字节顺序是Big-Endian,即高位在前,而计算机中的字节顺序是Little-Endian,即低位在前,要注意进行字节顺序转换。
下图为接收到的数据包的一部分
在这里插入图片描述
以几个主要的数据解析为例:

  1. 第1-4字节(上图中偏移地址:0x0):00 00 04 54,整数型数据,即0x454,1108,这就是接收数据的字节长度。
  2. 第13字节(上图中偏移地址:0x0c)开始,连续6个Double型数据,即关节目标位置qtarget,数据为:2.466446,-0.586911,1.581819,-2.725837,4.662427,-0.580726;
  3. 第445字节(上图中偏移地址:0x1bc)开始,连续6个Double型数据,即当前TCP位置矢量Tool VectorActual,数据为:0.405443,-0.164387,0.030460,2.077079,-2.308484,0.256067。收到数据与UR示教器上显示数据比对一致。

5.4 相关代码

链接:

https://blog.csdn.net/hangl_ciom/article/details/104439042

六、基于TCP/IP协议实现上位机对UR机器人的远程控制

6.1引言

2010年,德国学术界和产业界提出“工业4.0”的概念,即是以智能制造为主导的第四次工业革命,或革命性的生产方法。该战略旨在通过充分利用信息通讯技术和网络空间虚拟系统—信息物理系统相结合的手段,将制造业向智能化转型。所以,近些年许多工业自动化厂商将自己的产品研发所考虑的一个重要方向定在是否能被远程控制。另一方面,随着国内人工成本的不断上升以及工厂人员流动的不确定性,机器人产业是近几年,相信也是未来几年的朝阳产业。所以对于工业机器人在工厂生产中的远程控制,是一个机器人集成方面比较不错的课题。我们知道,在工业机器人的队伍中,UR机器人是第一家在工业环境下工作的人机协作机器人,它以轻便、简单、安全著称。下面我们就来了解一下如何实现上位机对UR机器人的远程控制。

6.2 UR机器人提供的基于TCP/IP协议的接口

TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,目的在于解决异种计算机网络的通信问题。使得网络在互联时能为用户提供一种通用、一致的通信服务。是Internet采用的协议标准。基于TCP/IP的通讯具有成本低、可靠性高、实用性强、性能高等特点,所以现在许多工业自动化产品都具有基于TCP/IP协议通讯的接口,从而实现设备与设备之间,设备与网络之间的通讯。UR机器人在TCP/IP协议的基础上,提供了丰富的接口用于与外部设备的交互,如表1所述。
在这里插入图片描述
有了这些接口,上位机就可以远程控制机器人。如图1,简单描述了上位机对UR机器人远程监控的系统图。

在这里插入图片描述
图1 远程控制系统图
下面我们就来介绍UR机器人所提供的相关通讯接口,从而远程控制机器人。

6.3 ModbusTCP端口

MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。自从1979年出现工业串行链路的事实标准以来,MODBUS使成千上万的自动化设备能够通信。目前,继续增加对简单而雅观的MODBUS结构支持。互联网组织能够使TCP/IP栈上的保留系统端口502访问MODBUS。MODBUS是一个请求/应答协议,并且提供功能码规定的服务。MODBUS功能码是MODBUS请求/应答PDU的元素。

UR机器人既可以作为ModbusTCP服务器,也可以作为ModbusTCP客户端,两者的主要区别在于消息请求方的不同。在此,我们仅讨论UR机器人作为ModbusTCP服务器的情况,如图2所示。
在这里插入图片描述
图2 Modbus TCP服务器
既然UR机器人作为Modbus TCP服务器,它必定有一系列Modbus地址供上位机来访问。如表2所示。
在这里插入图片描述
通过UR机器人的相关Modbus地址,我们可以访问机器人的很多信息,进而可以把这些信息放到上位机上。下图就是通过访问Modbus地址,模仿Polyscope(UR机器人原版软件),制作出来一个界面,当然我们可以通过这个界面监控并控制机器人的所用IO。
在这里插入图片描述

6.4Dashboard端口

上位机可以通过29999端口直接发送一些简单的指令给机器人,这些指令是UR自己定义的,这种功能被称为Dashboard。下表就是Dashboard的指令列表。
在这里插入图片描述
显而易见,我们可以通过一些Dashboard指令,远程切换、加载程序,同时可以启动、暂停、停止程序,这样上位机就可以远程控制程序了。

6.5上位机编程端口

UR机器人有3种编程方式:Polyscope编程、脚本编程以及C-API编程。Polyscope编程指的是程序在示教器上被编辑,机器人然后执行,这是UI层的编程方式。C-API编程是在研发层上的编程方式。我们重点介绍的是脚本编程方式,脚本编程的语言是UR公司在python语言基础上,自己研发的URScript语言。URScript是在脚本层上控制机器人的编程语言,就像其他编程语言一样,它有变量类型,语法结构、方法等。另外,它有一系列的专用方法来控制机器人运动以及IO状态。

UR机器人的控制器是运行在Mini-ITXPC上的,一旦PC启动机器人控制器(就像启动服务一样),Polyscope软件就通过PC本地的TCP/IP端口与机器人控制器建立连接了。同样,当上位机作为客户端,通过30001或30002或30003特定的编程端口,与机器人控制器建立TCP/IP连接,这样我们就可以在上位机上按照URScript语言的格式编写脚本程序,直接发送给机器人控制器,机器人就可以直接执行程序了。

按照上面所述的机器人脚本编程原理,我就可以在上位机上制作如下界面,实现对UR机器人的远程编程。
在这里插入图片描述

6.6实时反馈端口

30001、30002、30003除了用于远程编程外,还有其他功能,如表4所述。

这三个端口另一个共同的特点就是,一旦客户端打开端口,就会按照一定的频率收到来自机器人的信息。需要注意的是30003端口是实时反馈端口,客户端每8ms能收到一次来自机器人的信息。另外,通过测试,客户端通过30001和30002只能每200ms左右收到来自机器人的信息。

其实客户端通过这三个端口收到的机器人信息也稍有不同。通过30003端口收到信息是最丰富的,包含了通过30002收到的信息以及通过30001收到的大部分信息。

所以说通过实时反馈端口,客户端收到机器人信息效率是最高的,内容也是最全的。通过实时反馈端口每次收到的数据包有1044个字节,这些字节以标准的格式排列。注意在极少情况下客户端会收到小于1044个字节,但是字节排列的格式不变。表5是1044字节排列的顺序表。

有了这些数据,上位机的数据表现就会十分丰富。下面有2张上位机界面图,“点动图”获取了关节位置、TCP位置;“初始化图”获取了关节模式、关节实际电流、关节电压以及其他数据。
在这里插入图片描述
在这里插入图片描述

6.7结束语

综上所述,机器人作为ModbusTCP服务器,上位机通过502端口可以控制机器人的所有IO;上位机可以通过30001或30002或30003端口远程下载程序到机器人;上位机通过29999端口可以远程控制程序运行状态;上位机通过30003端口可以实时得到机器人的状态信息。也就是说,利用UR机器人开放的基于TCP/IP协议的端口,可以制作自己的Polyscope软件,实现上位机的远程控制。(end)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673880.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C基础-标准库上

下:http://t.csdnimg.cn/LXa0J C 标准库是一组 C 内置函数、常量和头文件&#xff0c;比如 <stdio.h>、<stdlib.h>、<math.h>&#xff0c;等等。 目录 一. assert.h 二. ctype.h 三. errno.h 四. float.h 五.limits.h 六. locale.h 一. assert.h 源码…

Go语言垃圾回收(GC原理)

1. GC回收机制 1.1 V1.3标记清除法 (1)概述 1.STW暂停 STW(暂停业务逻辑,找出可达和不可达对象) 2.对可达对象做上标记 标记完成之后,对象5和对象6不可达,被GC清除.之后STW结束. (2).缺点 STW :让程序暂停,程序出现卡顿.标记需要扫描整个heap.清除数据会产生heap碎片. 1.…

【linux软件基础知识】与调度相关的进程描述符

进程描述符 每个进程描述符都包括几个与调度相关的字段,如下代码所示: struct thread_struct {unsigned long rsp0;unsigned long rsp;unsigned long userrsp; /* Copy from PDA */ unsigned long fs;unsigned

SprigBoot中的配置优先级 Bean管理

黑马程序员JavaWeb开发教程 文章目录 一、配置优先级1.1 SpringBoot 中支持三种格式的配置文件1.2 Java系统属性 & 命令行参数1.3 总结 二、Bean管理2.1 获取bean2.1.1 在默认情况下 2.2 bean 作用域&#xff08;实际开发中一般不需要考虑&#xff09;2.2.1 bean的作用域2.…

XML 相关漏洞风险研究

前言 经常看到有关 XXE 的漏洞分析&#xff0c;大概知道原理&#xff0c;但是对 XML 中相关的定义却一知半解。XEE 全称为 XML External Entity 即 XML 外部实体&#xff0c;但除了常见的 EXP 还有哪些触发方法&#xff1f;XML 相关的漏洞除了 XXE 还有什么其他攻击面&#xf…

已办理劳务资质,为何无法在全国建筑市场网查询到企业?

已办理劳务资质的企业无法在全国建筑市场网&#xff08;四库一平台&#xff09;查询到&#xff0c;可能的原因如下&#xff1a; 数据更新延迟&#xff1a; 全国建筑市场监管公共服务平台&#xff08;四库一平台&#xff09;的数据更新可能存在延迟。新获得的劳务资质信息在平台…

系统架构设计师【第14章】: 云原生架构设计理论与实践 (核心总结)

文章目录 14.1 云原生架构产生背景14.2 云原生架构内涵14.2.1 云原生架构定义14.2.2 云原生架构原则14.2.3 主要架构模式14.2.4 典型的云原生架构反模式 14.3 云原生架构相关技术14.3.1 容器技术14.3.2 云原生微服务14.3.3 无服务器技术14.3.4 服务网格 14.4 云原生…

Arthas使用教程——JVM常用命令

JVM相关命令 dashboard——当前系统的实时数据面板 显示当前 tomcat 的实时信息。 使用方式&#xff1a;dashboard 数据说明 ID: Java 级别的线程 ID&#xff0c;注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。 NAME: 线程名 GROUP: 线程组名 PRIORITY: 线程优先级…

网站入门:Flask用法讲解

Flask是一个使用Python编写的轻量级Web服务框架&#xff0c;旨在帮助开发人员快速构建和部署Web应用程序。下面将对Flask进行更为详细的解释说明&#xff0c;并展示其使用示例与注意事项&#xff1a; 1.解释说明 定义及特点: Flask以其简洁和灵活著称&#xff0c;允许开发者以…

一个弹出的虚假安全警告去除

虚假的安全警告 poratus.azurewebsites.net Pornographic spyware detected! Remove viruses with Avira Antivirus 通过 Microsoft Edge GPT-4 (OpenAI) 这个提示可能是一个虚假的安全警告&#xff0c;被称为“恐吓软件”&#xff08;scareware&#xff09;&#xff0c;旨在…

直流输电系统氧化锌ZnO电阻设计方案

氧化锌限压器是超高压直流输电系统的主要过电压保护装置。现代直流输电系统的换流站都采用品闸元件作为换流阀,高压晶闸阀的绝缘是非自恢复的,对过电压一分敏感,耐压特性与波头关系很小,只要电压上升到某一定值时,将立即发生击穿,造成损坏。因此,往往将ZnO限压器直接跨接在桥阀…

Python量化交易学习——Part4:基于基本面的单因子选股策略

技术分析与基本面分析是股票价格分析最基础也是最经典的两个部分。技术分析是针对交易曲线及成交量等指标进行分析,基本面分析是基于公司的基本素质进行分析。 一般来说选股要先选行业,在选个股,之后根据技术分析选择买卖节点,因此针对行业及个股的基本面分析是选股的基础。…

【旧文更新】【优秀课设】基于FPGA的Verilog HDL自动售货机

【旧文更新】基于FPGA的Verilog HDL自动售货机 文章目录 关于旧文新发FPGACortex-M架构SysTick系统定时器阻塞和非阻塞延时 附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函…

HTTPS 为什么比 HTTP 更安全?

HTTPS 为什么比 HTTP 更安全&#xff1f; 在当今互联网环境中&#xff0c;安全性是至关重要的。无论是浏览网站还是进行在线交易&#xff0c;确保数据传输的安全性都是用户和企业的共同目标。HTTP 和 HTTPS 是两种用于传输网页数据的协议&#xff0c;但它们之间的安全性存在显…

常见算法(基本查找、二分查找、分块查找冒泡、选择、插入、快速排序和递归算法)

一、常见算法-01-基本、二分、插值和斐波那契查找 1、基本查找/顺序查找 需求1&#xff1a;定义一个方法利用基本查找&#xff0c;查询某个元素是否存在 数据如下&#xff1a;{131&#xff0c;127&#xff0c;147&#xff0c;81&#xff0c;103&#xff0c;23&#xff0c;7&am…

k8s学习--Secret详细解释与应用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例&#xff08;1&#xff09;将明文密码进行base64编码&#xff08;2&#xff09;编写创建secret的YAML文…

如何设置让背景颜色不包括 padding 部分,顺带全面学习 background-clip 属性(可以实现文字渐变)

先解决需求 实现背景颜色不包括 padding 部分&#xff0c;直接给容器添加 css 属性&#xff1a;background-clip:content-box; 示例代码&#xff1a; .content-box-example {background-color: lightblue;padding: 20px;border: 1px solid black;background-clip: content-bo…

vue项目出现多次ElMessage弹框

问题&#xff1a; 解决方法&#xff1a; let message null if (message null) { message ElMessage.error(“登录过期,请重新登录”); } 最终效果&#xff1a;只出现一个弹框

AI大模型在穿戴设备健康中的心率深度融合与案例分析

文章目录 1. 架构设计2. 应用场景3. 实现步骤3.1 步骤1&#xff1a;数据预处理3.2 步骤2&#xff1a;边缘计算初步分析3.3 步骤3&#xff1a;数据上传到云端3.4 步骤4&#xff1a;云端复杂分析3.5 步骤5&#xff1a;深度学习模型训练与部署 4. 云端API设计4.1 安装Flask4.2 API…

centos7.8安装Mysql8.4

在集群中我们选择将Mysql安装在slave01节点上。 1.在官网下载mysql安装包MySQL :: Download MySQL Yum Repository 下载后上传到slave01节点的/opt/software目录下。 2.切换到root用户下&#xff08;切换到root用户操作&#xff09; 3.查看和删除安装的MySQL软件包和依赖包 r…