MODBUS: 访问机械臂数据
参考:MODBUS SERVER : Accessing robot data through the MODBUS server
机械手控制器充当Modbus TCP服务器(端口502),客户端可以建立与之的连接并向其发送标准MODBUS请求。该服务器位于控制器的IP地址上,该控制器的IP地址可在PolyScope中找到和修改(SETUP机械手→设置网络)
For more information about MODBUS, see
www.modbus.org
specifications of MODBUS messages can be found at
MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b
注意:
某些Modbus设备制造商使用术语“主机”(客户端)和“从机”(服务器)。通常,外部IO设备将成为服务器,而机械手将充当客户端(从服务器请求和使用消息)。主服务器=客户端,从服务器=服务器。但是,请注意,UR控制器既可以是服务器,也可以是客户端
功能:
多个客户端可以同时连接到服务器
服务器可以响应以下功能代码:
- 0x01:READ_COILS(读取输出位) 0x02:READ_DISCRETE_INPUTS(读取输入位)
- 0x03:READ_HOLDING_REGISTERS(读取输出寄存器)
- 0x04:READ_INPUT_REGISTERS(读取输入寄存器) 0x05:WRITE_SINGLE_COIL(写输出位)
- 0x06:WRITE_SINGLE_REGISTER(写输出寄存器) 0x0F:WRITE_MULTIPLE_COILS(写入多个输出位)
- 0x10:WRITE_MULTIPLE_REGISTERS(写多个输出寄存器)
服务器将发送对所有请求
的响应-服务器以错误代码响应错误消息:
- 0x01:ILLEGAL_FUNCTION_CODE
- 0x02:ILLEGAL_DATA_ACCESS(如果请求地址非法)
- 0x03:ILLEGAL_DATA_VALUE(如果请求数据无效)
可以使用脚本函数read_port_register(
)读取16位端口 ,许多端口,包括128个通用寄存器(地址128-256)(请参阅端口映射),也可以使用 write_port_register(<地址>,<值>)。您可以使用脚本函数 integer_to_binary_list() 以布尔值列表(例如[True,False,…])或Binary_list_to_integer()的形式获取寄存器值 ,请参考有关详细信息,请参见URScript手册。可以使用read_port_bit(<address>) 和write_port_bit(<address>, <value>)访问数字端口 。
请注意,所有值都是无符号的,如果要转换为有符号的整数,请编写“ if(val> 32768):val = val-65535”。
MODBUS服务器具有从0开始的寻址。请注意,其他一些设备是基于1的设备(例如Anybus X网关),然后只需在该设备上的地址中添加一个即可。(例如,机器人上的地址3将是Anybus X网关上的地址4)
设置:
参见:
UR Modbus TCP客户端V1.3.pdf
EtherNet / IP: 和PC连接
参考: 实现和PC端通过以太网进行通讯
演示视频: (Youtube)How to connect your UR robot to an Allen Bradley PLC
PROFITNET: 和外设连接
参考: PROFINET GUIDE : This is a guide to help you get started when connecting Universal Robots to other devices using PROFINET.
在UR机械手中启用PROFINET
在“安装”选项卡中启用PROFINET。请记住,之后要保存安装,以使更改在下次加载安装时生效。
黄色LED指示PROFINET是在机器人运行,但没有PLC / IO控制器被连接到 机器人。
当机器人连接到PLC / IO控制器时,LED将变为绿色状态。