软件版本更新发布 5.15.x.x
仅适用于 E 系列和 UR20/UR30
从这里下载
SW 5.15.2 版本更新:
- UR软件更新: 5.15.2
- 软件平台:
- URCap API: 1.14.0
- URCap SDK: 1.14.0
- URSim Linux: 5.15.2
- URSim 虚拟机: 5.15.2 - 2.0.296
- 用户手册: 5.15
关键特性
所有 UR20 和 UR30 机器人均应更新至 PolyScope 5.15.1 或更高版本。
5.15.2 是一个累积软件版本,增加了对 UR20 和 UR30 OEM 控制器的支持。
5.15.1 版软件包含对 UR20和 UR30 机器人固件的重要更新,大大改进了对刹车和电机的监控和操作。这优化了机器人和刹车的性能,提高了机器人的使用寿命和可靠性,应视为必须更新。
控制器
新增对 UR20 OEM DC 和 UR30 OEM DC 的支持。
Bug 修复
PolyScope GUI
- 修复了 UR30 机器人默认安装中的安全校验和不是出厂默认值(CCCC CCCC)的问题。
控制器
- 修复了 e 系列机器人在使用从 5.14.6 之前的软件版本升级的 SD 卡时无法与 5.5 版控制器配合使用的问题。
用户支持
手册:
- 将示教器的防护等级更正为 IP54。
5.15.1
软件版本:
- UR软件更新: 5.15.1
- 软件平台:
- URCap API: 1.14.0
- URCap SDK: 1.14.0
- URSim Linux: 5.15.1
- URSim 虚拟机: 5.15.1 - 2.0.291
- 用户手册: 5.15
关键特性
所有 UR20 和 UR30 机器人均应更新至 PolyScope 5.15.1 或更高版本。
本软件版本包含对 UR20 和 UR30 机器人固件的重要更新,大大改进了对刹车和电机的监控和操作。这优化了机器人和制动器的性能,提高了机器人的使用寿命和可靠性,应视为必须更新的内容。
该版本还支持 e 系列,并带来了多项新功能,包括 PolyScope 5.15.0 中引入的灵活以太网/IP 适配器。
PolyScope GUI
在远程 TCP URCap 中添加了对 UR20 的支持。UR20 用户必须更新到 SW 5.15.1 和 远程 TCP URCap v1.4.0-build2 才能使用远程 TCP 功能。
灵活的 ETHERNET/IP 适配器
更改了读取器和写入器句柄上 define_bit 方法的接口。位字段的大小从第二个参数移至最后一个参数,默认值设为 1。
# definition in 5.15.0
define_bit(offset, bitfield_width, bit_number, data_name)
# definition in 5.15.1
define_bit(offset, bit_number, data_name, bitfield_width = 1)
define_bit(offset, bitfield_width, bit_number, data_name)
该方法定义与 PLC 交换的组件中的单个标签。标签用于在 URScript 中写入和读取过程数据。
参数:
- offset:整数,数据在汇编中的位置(以字节为单位)
- bit_number:整数,字中的位数。0 = 最小有效位。根据 bitfield_width 的不同,最有效位将是7、15 或 31。
- data_name:字符串,标签位
- bitfield_width:整数,可以是 1、2 或 4,代表字节、字或双字中的位。默认位域宽度为 1 字节。
注意: 不允许位定义重叠。
举例:
# set label "comm_check" to bit 0 in byte 0
# of the assembly
cnc_status.define_bit(0, 0, "comm_check")
# set label "door_opened" to but 9 in word starting
# on byte 16 of the assembly
cnc_status.define_bit(16, 9, "door_opened", 2)
Bug 修复
Polyscope GUI
- 修正了以太网/IP 状态总是显示绿色(已连接)的问题,即使 PLC 未连接。该错误在 5.15.0 中引入。
- 更新虚拟机的 PROFISAFE 许可证。
控制器
- 修正了 ETHERNET/IP 脚本接口不允许 float32 <= 0.0 的问题。
- 修复了 ETHERNET/IP 脚本接口接受长度无效列表的问题。
- 修复了 Ethernet/IP 脚本接口将无效字符作为设备返回字符串的一部分进行读取的问题。
- 修正了 EIP 在检查重叠的 EIP 数据定义时错误检查位宽的问题。
- 修正了 Ethernet/IP 脚本接口错误使用 uint16_t 数字限制的问题。
嵌入式
修正了一个问题,即在极少数情况下,示教器中的微处理器 B 在重启安全系统时会卡住,报告 "设置 UART时出现问题",需要进行电源循环。
用户支持
手册
e 系列机器人用户手册新增了以下内容。
5.15.0
软件版本:
- UR 软件更新: 5.15.0
- URCap 软件平台:
- URCap API: 1.14.0
- URCap SDK: 1.14.0
- URSim Linux: 5.15.0
- URSim 虚拟机: 5.15.0 - 2.0.285
- 用户手册: 5.15.0
- 支持文件阅读器: xxx
关键特性
- Payload Transition Time (GUI) 负载转换时间
可以在设置有效载荷节点中定义有效载荷更改的持续时间。 - UR10、UR16 和 UR20 的肘部和工具的最大安全限值从 250N 提高到 400N。
- 结构体(复杂数据类型) - 发布用于生产
在 URScript 中,一组变量可以聚合成结构体,并作为一个变量进行传输和存储。
- URScript 中的可变长度列表
列表可以定义长度和容量。支持对列表进行新的操作。 - 列表操作、结构成员访问和矩阵的方法
新方法可实现列表长度和内容操作。 - URScript 函数 estimate_payload()
有效载荷可在程序执行过程中估算。 - 灵活的 Ethernet/IP 适配器组件 - 工程预览
通过自定义 Ethernet/IP 适配器数据布局实现数控机床连接。
PolyScope GUI
有效载荷转换时间
我们在 "设置有效载荷 "节点中添加了一个新的输入字段,允许用户定义有效载荷更改的持续时间。
设置一个大于零的过渡时间,可以防止机器人在有效载荷发生变化时做一个小的 "跳跃",而且对关节来说也更容易。这在拾取或释放重物或使用真空抓手时非常有用。
请注意,过渡时间现在也是 "立即设置 "按钮操作的一部分。
肘部和工具的最大力
机器人限制 "中 "工具力 "和 "肘部力 "的最大值现在可设置为 400N,而不是 250N。此更改仅适用于UR10、UR16 和 UR20。
改进的 ETHERNET/IP 安装界面
改进了 EtherNet/IP 安装屏幕的布局,并与 PROFINET 安装界面保持一致。
改进的传送带追踪安装界面
传送带跟踪安装屏幕的布局已得到改进。
在直线输送机的配置中,以前的 "反向 "方向按钮已被复选框所取代,这样就可以很容易地查看所选 "Line "功能的方向是否反向。
URCap 软件平台
URCap API:
增加了对有效载荷转换时间的支持
- URCaps 可创建具有指定过渡时间的 "设置有效载荷 "节点配置
- URCaps 可以读取设置有效载荷节点配置的转换时间
- API 更改(package com.ur.urcap.api.domain.program.nodes.builtin.configurations.setpayloadnode):
- New methods createSelectionConfig(Payload, Time, ErrorHandler<Time>) and createCustomParametersConfig(Mass, Position, Time, ErrorHandler<Time>) in the existing PayloadNodeConfigFactory interface
- New getTransitionTime() method in the existing SelectionPayloadNodeConfig and CustomParametersPayloadNodeConfig interfaces
增加了对新型号机器人的支持
- Extended the existing RobotType enum in the RobotModel interface with the new UR20 and UR30 robot types
- Deprecated the getRobotSeries() method and the RobotSeries enum in the RobotModel interface
- The RobotType enum will no longer be extended with new values when new robot series (generations) are introduced.
- The getRobotSeries() method will return the UNKNOWN enum value, if the underlying robot does not belong to either the CB3 or e-Series robot series. This will, for instance, be the case, if the robot is a UR20. The method can only be used to determine, if a robot is a CB3 robot.
- For more information, see the Javadoc for the getRobotSeries() method.
- Note:
URCap SDK:
URCap 举例
- 提高所有样本的 POM 文件 (pom.xml) 的可读性
- 更新了 newURCap.sh 脚本,以便使用改进的 POM 文件生成新的 URCap 项目
- Daemon Swing 举例:
- 简化代码并提高可读性
- 改进了与守护进程的通信处理以及用户界面的更新
- 更改了 C++/Python 守护进程和 Java URCap 捆绑程序的代码
控制器
推出支持 e 系列机器人的 5.5 版控制器
结构体(复杂数据类型)--发布用于生产
在 URScript 中,可以将一组变量聚合成 struct,然后作为一个变量进行传输和存储。
结构体可通过多种途径获得:
- 使用struct() 功能
- 执行返回结构体的 RPC 调用
struct 函数接收一个或多个命名参数,每个参数名都将成为 struct 中的一个成员。所有值都必须按值初始化,且值的类型不能更改。
创建一个结构体:
myStruct = struct(identifier1 = 1, identifier2 = 2, myMember = "Hello structs", listMember = [1,2,3])
使用一个member:
myVar = myStruct.myMember
变量长度列表
URScript 中的列表对象有两个属性:长度和容量。长度表示列表当前容纳的元素数量。容量则表示列表最多可容纳多少个元素。一旦声明,列表的容量就不能更改。
有关结构和列表操作的示例,请参阅 URScript 手册和支持文章 "URScript examples for manipulating structs and lists".
estimate_payload URScript 功能
根据姿势和力扭矩记录列表,在机器人程序中估算有效载荷的质量和重心。
灵活的 ETHERNET/IP 适配器在 URSCRIPT 工程预览中
注意:不建议将该功能用于生产。脚本 API 和功能可能会更改,生产版本将在下一个主要版本中发布。如需进一步支持,请联系 Universal-Robots 应用工程师。
该功能允许程序员在包含 Universal-Robots 实时数据的连接上添加自定义 ETHERNET/IP 连接。
界面由两部分组成:
- 通过 XML-RPC 提供配置接口,以启用功能。
- 通过连接组件 T→O 和 O→T 对象读写结构化数据的 URScript 函数。
该功能旨在作为平台功能使用。它可以内置到 URCaps 中,也可以直接从 URScript 中使用。
带有 "CNC "连接的 EDS 文件包含自定义机器人→PLC(T→O)和 PLC→Robot (O→T)程序集,其中一个示例见 UniversalRobot_CNC.eds。这两个程序集长 210 字节,实例 ID 分别为 101 和 111。
性能
建议在将自定义 ETHERNET/IP 适配器与 PLC 扫描仪集成之前考虑性能限制。性能限制可在最终生产版本中更改。如果以下限制妨碍了客户应用中以太网/IP 连接的实施,请联系 Universal-Robots 支持部门。
所有读写操作均在非实时线程上执行。在内部测试中,PLC RPI 设置为 5 毫秒时,读写周转周期平均为 40 毫秒。最大为 90 毫秒。
对于数据更新速率要求低于 20 毫秒的应用,不建议采用这种实现方式。
建议的最大程序集大小为 1000 字节。本工程预览不限制大小。
配置接口
Ethernet/IP 服务通过 40000 端口公开 XML-RPC 服务器。
add_configuration(Robot→PLC instance id, Robot→PLC assembly size, PLC→Robot instance id, PLC→Robot assembly size)
功能创建一个输入和一个输出组件,通常形成一个 Ethernet/IP 的连接对象。
参数:
- Robot→PLC 实例 id – 整数, 唯一的实例 ID
- Robot→PLC 装配大小 – 整数, 以字节为单位的装配数据大小
- PLC→Robot 实例 id – 整数, 唯一的实例 ID
- PLC→Robot 装配大小 – 整数, 以字节为单位的装配数据大小
返回:
-
如果创建了新装配件,则为 True
-
当其中一个装配件已存在时为假,或者参数错误。
调用该功能后,外部 Ethernet/IP 扫描仪(PLC 或数控机床上)可使用新连接。某些 PLC 要求在 EDS(电子数据表)文件中定义连接对象。如有需要,可提供单独的指南,解释如何在现有的 Universal Robots EDS 文件中添加自定义连接和装配件。
注意:Universal 机器人内置装配件 100 和 112 不能被覆盖。尝试配置这些装配件将导致错误。
从 URScript 添加自定义 Ethernet/IP 的示例代码
# Before Start program section
# create XMLRPC connection to Ethernet/IP service
globl eip_handle=rpc_factory("xmlrpc", "http://127.0.0.1:40000/RPC2")
# one input, and one output assemblies will be available in Ethernet/IP
# adapter after the call
global result = eip_handle.add_configuration(101, 210, 111, 210)
# dispose XMLRPC connection handle
eip_handle.closeXMLRPCClientConnection()
# pause for 1s while Ethernet/IP service is configuring data exchange files for new assemblies
sleep(1)
# next data layout for read and write should be configured
URScript 接口
通过连接交换的有效载荷数据可使用读写句柄对象访问。通常情况下,句柄会在程序的 "启动前 "部分(或通过 URCap 安装贡献的脚本)打开一次,然后在同一部分定义数据布局。之后就可以使用配置的句柄上的方法进行单独读写。
eip_reader_factory(assembly_name, data_size)
打开 PLC→Robot 数据的句柄。通常放在程序的 " Before Start "部分 "。
参数:
- assembly_name - 实例 ID 的字符串表示
- data_size - 以字节为单位的装配数据大小
反馈:
- handle object
该句柄将提供对装配数据的只读访问权限。
举例:
# Open handle to PLC→Robot assembly with instance id 111, and data size 210 bytes.
global cnc_status = eip_reader_factory("111", 210)
eip_writer_factory(assembly_name, data_size)
打开 Robot→PLC 数据的句柄。通常置于程序的 " Before Start "部分。
参数:
- assembly_name - 实例 id 的字符串表示。
- data_size - 以字节为单位的装配数据大小
返回:
- handle object
该句柄将提供对装配数据的唯一写访问权限。
举例:
# Open handle to Robot→PLC assembly with instance id 101, and data size 210 bytes.
global cnc_command = eip_writer_factory("101", 210)
手柄上的方法
句柄用于定义底层程序集内存布局,然后读写数据。
方法使用". "操作符在句柄上调用。方法分为两个系列:
- 内存布局定义:告知处理程序外部设备如何看到数据,并分配标签。
该系列中的所有方法都以 "define_... "开头。 - 数据访问方法:读写流程数据。
举例:
cnc_status.define_bit(0, 1, 0, "comm_check")
status = cnc_status.read("comm_check")
cnc_command.define_uint8(6, "program_number")
define_uint8(offset, data_name), define_uint16(offset, data_name), define_int16(offset, data_name), define_float32(offset, data_name), define_int32(offset, data_name)
方法定义与 PLC 交换的装配中的单个标签。标签用于在 URScript 中写入和读取过程数据。
参数:
- offset: 整数,数据在装配中的位置,以字节为单位
- data_name: 整数,标签
注意:不允许数据定义重叠,但与位字段重叠的情况除外。
举例:
# set label "service_code" to byte 11 of the assembly
cnc_status.define_uint8(11, "service_code")
define_bit(offset, bitfield_width, bit_number, data_name)
该方法定义与 PLC 交换的组件中的单个标签。标签用于在 URScript 中写入和读取过程数据。
参数:
- offset: 整数,数据在程序集中的位置,以字节为单位
- field_width: 整数,可以是 1、2 或 4,代表字节、字或双字中的位。
- bit_number 整数,字中的位数。0 = 最小有效位。根据 bitfield_width 的不同,最有效位将是7、15 或 31。
- data_name: 字符串,标签
注意:不允许位定义重叠。
举例:
# set label "comm_check" to bit 0 in byte 0 of the assembly.
cnc_status.define_bit(0, 1, 0, "comm_check")
# set label "door_opened" to bit 9 in word starting on byte 16 of the assembly.
cnc_status.define_bit(16, 2, 9, "door_opened")
define_uint8_array(offset, length, data_name), define_uint16_array(offset, length, data_name), define_int16_array(offset, length, data_name), define_float32_array(offset, length, data_name), define_int32_array(offset, length, data_name)
方法定义与 PLC 交换的组件中的单个标签。标签用于在 URScript 中写入和读取过程数据。
参数:
- offset: 整数,数据在装配中的位置,以字节为单位
- length: 整数,数组的元素个数,基本大小由数据类型指定(例如,define_uint16_array length = 4 将使用 8 字节)。
- data_name: 字符串,标签
举例:
# set label "work_number" to 32 byte long array starting at byte 48 in the assembly
cnc_command.define_uint8_array(48, 32, "work_number")
# set label "axes_offset" to 3 words (6 byte long) array starting at byte 120 in the assembly
cnc_command.define_int16_array(120, 3, "axes_offset")
define_string(offset, length, data_name)
参数:
- offset: 整数,数据在程序集中的位置(以字节为单位): 整数,字符串中的字符数。如果字符串短于 length,则应以 0 结束。
- data_name: 字符串,标签
read(data_names)
该方法读取外部 PLC 写入的一个或多个数据标签。以非阻塞方式读取最后一个数据。
参数:
- data_name:
- Single string - 读取一个数据标签。方法返回基本数据类型。
- Array of strings - 要读取的多个数据标签。方法返回包含以数据标签命名的字段的结构。
举例:
# reads single bit to comm_check URScript variable
comm_check = cnc_status.read("comm_check")
# reads multiple fields that can be accessed as service_request struct members)
service_request = cnc_status.read(["door_closed", "service_code"])
if(service_request.door_closed):
do_service_code(service_request.service_code)
end
write(data_struct)
将一个或多个数据标签写入外部 PLC 读取的存储器的方法。
参数:
- data_struct: 结构,其中成员名称是数据标签,值是数据内容
保证结构体中的所有标签同时写入装配数据。
注意:该方法将根据数据标签的类型进行范围检查。超出数据类型的数字将导致程序运行时异常停止。
举例:
# set work_number label array, and search_start bit
cnc_command.write(struct(work_number = [1, 2, 3, 4], search_start = True))
cnc_command.write(struct(door_open = True))
# define global struct, and reuse in calls to write method
s = struct(robot_ready = False, machine_stop = False, robot_alarm = False)
s.robot_ready = True
cnc_command.write(s)
clear()
方法将句柄管理的所有内存置零。
只能在写句柄上调用。
close()
关闭句柄对象,并释放相关内存。如果句柄在程序中只使用一次,建议关闭句柄。如果句柄被反复使用,则建议在程序的整个生命周期中保持打开状态。
同一句柄不能再次打开,必须创建新句柄。
Bug 修复
PolyScope GUI
- 日志 "选项卡上读数面板中 "IO 电流 "字段的安培数现在显示为小数,而不是整数。
- 修正了一个问题,即如果程序包含托盘(码垛)节点,则程序启动缓慢。
- 修正了 UR20 机器人在使用外部 3 位置启用 (3PE) 设备的设置时,Automove 屏幕会显示带有内置3PE 功能的 UR 示教器的插图和文本的问题。
控制器
- 引入 RTDE 通道 "collision_detection_ratio",该通道可发布一个非负的双精度浮点数值,用于监控机器人距离触发 C157 或 C158 "碰撞检测 "保护性停止的距离。如果该值等于或超过 1.0,就会触发保护性停止。该通道与现有的 RTDE 通道非常相似"joint_position_deviation_ratio "(关节位置偏差比),该通道对 C153 和 C159 "关节位置偏差 "保护性停机也有同样的作用。
- 修正了空字符串变量被错误地评估为 True 的问题;现在空字符串被正确地评估为 False,确保了条件语句中布尔逻辑的准确性。
- 修正了连接有 IMMI 的机器人在控制盒重启后首次启动机械臂时会出现故障的问题。
- 修正了 get_inverse_kin_has_solution()函数在两次或多次调用相同参数后会错误报告未找到解决方案的问题。
- 修正了 movec 在 "固定 "模式下的一个死角,在该死角中,TCP 的旋转方向可能与保持 "固定 "方向约束所需的旋转方向相反。
- 修正了 UR20 在 48V 电压下降 (C740A11) 或电流过大 (C740A15) 或在非常困难的运动中系统重启时发生故障的情况。
- 修正了 XML-RPC 程序在调用删除程序时偶尔会因 "连接重置 "错误而停止的问题。这是在 xml-rpc 库内部重新连接远程服务器失败的极少数情况下发生的。为缓解这一问题,我们在rpc_factory 中添加了默认值为 1 的 "number_of_retries "参数。这一改动可确保脚本程序在停止程序之前多尝试一次调用远程过程。
URCap 软件平台
- 修正了当用户尝试撤销程序更改时,在某些情况下会出现未处理的空指针 Java 异常的问题。如果用户在撤销操作前两次尝试在另一个具有锁定子序列的 URCap 节点下插入一个新的 URCap 节点作为子节点,则可能发生这种情况。
- 修复了 URCap 在调用方法要求最终用户定义机器人位置后,永远无法获得回调的问题。 UserInteraction.getUserDefinedRobotPosition(RobotPositionCallback2) 如果机器人没有接通电源并松开制动器,就会出现这种情况("机器人需要接通电源才能继续。"工具提示显示在 PolyScope 页脚)。现在,如果提出请求时机器人尚未完全运行,则会调用回调函数。RobotPositionCallback2.onCancel()
- 修正了 URCap 在调用了 RobotMovement 接口中的一个方法后永远不会获得回调的问题。举例: requestUserToMoveRobot(Pose, RobotMovementCallback),要求最终用户将机器人移动
到指定的目标位置。如果机器人没有接通电源并松开制动器,就会出现这种情况(PolyScope 中显示 "机器人需要接通电源才能继续 "的工具提示) RobotMovementCallback.onCancel()footer 如果机器人在发出请求时尚未完全运行,则会调用回调函数。
嵌入式
- 删除了通用的用户故障报告 "启动检查:严重错误",取而代之的是更清晰的特定场景下的错误报告。
- 修复了吸能单元功率耗散监控在安全控制板和 I/O 耗电超过 50W 时可能导致系统故障的问题。
- 修复在关节启动后很早出现故障时机器人会卡住无法启动的问题。
例如,如果刹车线圈电缆断开,可能会出现这种情况。
以前的版本说明:
- Release Notes Software Version 5.14
- 软件版本更新说明 5.13
- Release Notes Software Version 5.12
- Release Notes Software Version 5.11
- Release Notes Software Version 5.10
- Release Notes Software Version 5.9
- Release Notes Software Version 5.8
- Release Notes Software Version 5.7
- Release Notes Software Version 5.6
- Release Notes Software Version 5.5
- Release Notes Software Version 5.4
- Release Notes Software Version 5.3
- Release Notes Software Version 5.2
- Release Notes Software Version 5.1