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

来源:网络  作者:网络转载   2019-09-22 阅读:749

1、引言

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

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

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

端口

接口描述

机器人作为服务器

502

Modbus TCP协议,机器人作为服务器

22

SSH / SFTP (安全文件传输协议)

29999

Dashboard功能

30001

第一客户端端口,自动返回机器人状态与补充消息

30002

第二客户端端口,自动返回机器人状态与消息

30003

实时反馈端口,自动返回机器人状态与消息,125Hz实时反馈接口

机器人作为客户端

自定义

由UR脚本函数定义

502

Modbus TCP协议,机器人作为客户端

表1 UR机器人TCP/IP接口表

有了这些接口,上位机就可以远程控制机器人。如图1,简单描述了上位机对UR机器人远程监控的系统图。

图1 远程控制系统图

下面我们就来介绍UR机器人所提供的相关通讯接口,从而远程控制机器人。

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地址供上位机来访问。

地址

类型

描述

0-33

Register

可以访问机器人的所有IO

128-255

Register

可配置寄存器

256-265

Register

机器人状态

270-315

Register

关节位置、速度、电流、温度、模式等信息

400-425

Register

TCP位置、速度、偏移等信息

768-770

Register

工具端状态

0-159

Bit

可以访问机器人的所有IO

260-265

Bit

机器人状态

表2 Modbus地址简表

通过UR机器人的相关Modbus地址,我们可以访问机器人的很多信息,进而可以把这些信息放到上位机上。下图就是通过访问Modbus地址,模仿Polyscope(UR机器人原版软件),制作出来一个界面,当然我们可以通过这个界面监控并控制机器人的所用IO。

图3 IO控

4、Dashboard端口

上位机可以通过29999端口直接发送一些简单的指令给机器人,这些指令是UR自己定义的,这种功能被称为Dashboard。下表就是Dashboard的指令列表。

指令

描述

load

加载被保存在控制器中的程序

get loaded program

返回当前机器人执行的程序

play

启动当前加载的程序

stop

停止机器人当前执行的程序

pause

暂停机器人当前执行的程序

isProgramSaved

当前机器人正在执行的程序是否被保存,返回“True”或“False”

programState

当前程序的运行状态,返回“PLAYING”或“STOPPED”或“PAUSED”

shutdown

关闭机器人系统

running

机器人的运行状态,返回“True”或“False”

robotmode

访问机器人模式

popup

Polyscope跳出对话框

close popup

关闭对话框

addToLog

将消息添加到logfile中

setUserRole,wher is class

设置用户权限

polyscopeVersion

返回当前Polyscope的版本号

power on

使机器人本体通电

power off

使机器人本体断电

brake release

释放制动器

safetymode

返回机器人当前所处的安全模式状态

表3 Dashboard指令列表

 

显而易见,我们可以通过一些Dashboard指令,远程切换、加载程序,同时可以启动、暂停、停止程序,这样上位机就可以远程控制程序了。

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机器人的远程编程。

图4 脚本编程

6、实时反馈端口

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

端口

名称

功能

30001

第一客户端端口

客户端可发送脚本代码至服务器;服务器自动以5Hz的频率返回机器人状态与补充消息到客户端。

30002

第二客户端端口

客户端可发送脚本代码安全文件传输协议;服务器自动以5Hz的频率返回机器人状态与消息到客户端。

30003

实时反馈端口

客户端可发送脚本代码安全文件传输协议;服务器自动以125Hz的频率返回机器人状态与消息到客户端。

表4 编程口

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

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

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

字节顺序

内容

1-4

整个数据包的字节数

5-12

控制器通电时间,断电清零

13-444

关节目标位置、速度、加速度、电流、扭矩,实际位置、速度、电流,控制电流

445-684

TCP位置、速度、力,0目标位置、速度

685-692

输入位状态

693-740

电机温度

740-748

程序扫描时间

749-756

保留

757-820

机器人模式,关节模式,安全模式

821-868

保留

869-892

TCP加速度

893-940

保留

941-948

速度比例

949-956

机器人当前动量值

957-972

保留

973-996

控制板电压,机器人电压,机器人电流

997-1044

关节电压

表5 实时反馈数据包

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

图5 点动图

图6 初始化图

7、结束语

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

 

 

 

 

标签: 上位
打赏

免责声明:
本站部份内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及内容、版权等问题,请在30日内联系,我们将在第一时间删除内容!

购物指南

支付方式

商家合作

关于我们

微信扫一扫

(c)2008-2018 DESTOON B2B SYSTEM All Rights Reserved
免责声明:以上信息由相关企业或个人自行免费发布,其真实性、准确性及合法性未证实。请谨慎采用,风险自负。本网对此不承担任何法律责任。

在线咨询

在线咨询:

QQ交流群

微信公众号