2010年,德国学术界和产业界提出“工业4.0”的概念,即是以智能制造为主导的第四次工业革命,或革命性的生产方法。该战略旨在通过充分利用信息通讯技术和网络空间虚拟系统—信息物理系统相结合的手段,将制造业向智能化转型。所以,近些年许多工业自动化厂商将自己的产品研发所考虑的一个重要方向定在是否能被远程控制。另一方面,随着国内人工成本的不断上升以及工厂人员流动的不确定性,机器人产业是近几年,相信也是未来几年的朝阳产业。所以对于工业机器人在工厂生产中的远程控制,是一个机器人集成方面比较不错的课题。我们知道,在工业机器人的队伍中,UR机器人是第一家在工业环境下工作的人机协作机器人,它以轻便、简单、安全著称。下面我们就来了解一下如何实现上位机对UR机器人的远程控制。
2、UR机器人提供的基于TCP/IP协议的接口
TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,目的在于解决异种计算机网络的通信问题。使得网络在互联时能为用户提供一种通用、一致的通信服务。是Internet采用的协议标准。基于TCP/IP的通讯具有成本低、可靠性高、实用性强、性能高等特点,所以现在许多工业自动化产品都具有基于TCP/IP协议通讯的接口,从而实现设备与设备之间,设备与网络之间的通讯。UR机器人在TCP/IP协议的基础上,提供了丰富的接口用于与外部设备的交互,如表1所述。
端口接口描述
机器人作为服务器
502ModbusTCP协议,机器人作为服务器
22SSH/SFTP(安全文件传输协议)
29999Dashboard功能
30001第一客户端端口,自动返回机器人状态与补充消息
30002第二客户端端口,自动返回机器人状态与消息
30003实时反馈端口,自动返回机器人状态与消息,125Hz实时反馈接口
机器人作为客户端
自定义由UR脚本函数定义
502ModbusTCP协议,机器人作为客户端
表1UR机器人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所示。
图2ModbusTCP服务器
既然UR机器人作为ModbusTCP服务器,它必定有一系列Modbus地址供上位机来访问。
地址类型描述
0-33Register可以访问机器人的所有IO
128-255Register可配置寄存器
256-265Register机器人状态
270-315Register关节位置、速度、电流、温度、模式等信息
400-425RegisterTCP位置、速度、偏移等信息
768-770Register工具端状态
0-159Bit可以访问机器人的所有IO
260-265Bit机器人状态
表2Modbus地址简表
通过UR机器人的相关Modbus地址,我们可以访问机器人的很多信息,进而可以把这些信息放到上位机上。下图就是通过访问Modbus地址,模仿Polyscope(UR机器人原版软件),制作出来一个界面,当然我们可以通过这个界面监控并控制机器人的所用IO。[page]
图3IO控制
4、Dashboard端口
上位机可以通过29999端口直接发送一些简单的指令给机器人,这些指令是UR自己定义的,这种功能被称为Dashboard。下表就是Dashboard的指令列表。
指令描述
load.urp>加载被保存在控制器中的程序
getloadedprogram返回当前机器人执行的程序
play启动当前加载的程序
stop停止机器人当前执行的程序
pause暂停机器人当前执行的程序
isProgramSaved当前机器人正在执行的程序是否被保存,返回“True”或“False”
programState当前程序的运行状态,返回“PLAYING”或“STOPPED”或“PAUSED”
shutdown关闭机器人系统
running机器人的运行状态,返回“True”或“False”
robotmode访问机器人模式
popupPolyscope跳出对话框
closepopup关闭对话框
addToLog将消息添加到logfile中
setUserRole,whereisclass设置用户权限
polyscopeVersion返回当前Polyscope的版本号
poweron使机器人本体通电
poweroff使机器人本体断电
brakerelease释放制动器
safetymode返回机器人当前所处的安全模式状态
表3Dashboard指令列表
显而易见,我们可以通过一些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的频率返回机器人状态与消息到客户端。[page]
表4编程口
这三个端口另一个共同的特点就是,一旦客户端打开端口,就会按照一定的频率收到来自机器人的信息。需要注意的是30003端口是实时反馈端口,客户端每8ms能收到一次来自机器人的信息。另外,通过测试,客户端通过30001和30002只能每200ms左右收到来自机器人的信息。
其实客户端通过这三个端口收到的机器人信息也稍有不同。通过30003端口收到信息是最丰富的,包含了通过30002收到的信息以及通过30001收到的大部分信息。
所以说通过实时反馈端口,客户端收到机器人信息效率是最高的,内容也是最全的。通过实时反馈端口每次收到的数据包有1044个字节,这些字节以标准的格式排列。注意在极少情况下客户端会收到小于1044个字节,但是字节排列的格式不变。下表是1044字节排列的顺序表。
字节顺序内容
1-4整个数据包的字节数
5-12控制器通电时间,断电清零
13-444关节目标位置、速度、加速度、电流、扭矩,实际位置、速度、电流,控制电流
445-684TCP位置、速度、力,0目标位置、速度
685-692输入位状态
693-740电机温度
740-748程序扫描时间
749-756保留
757-820机器人模式,关节模式,安全模式
821-868保留
869-892TCP加速度
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软件,实现上位机的远程控制。
上一篇:最新总线技术在仪器控制与连接方面应用
下一篇:数字化仪表系统的现场总线技术特点
推荐阅读最新更新时间:2024-05-02 23:35