4. UR协作机器人动作分解

在UR工作站节拍优化中,最容易被误判的一件事,是把机器人程序里“看起来在动”的时间当成全部节拍。实际上,一个UR程序从开始到结束,往往由五类时间叠加而成:移动时间、等待时间、IO响应时间、通信时间以及外部设备交互时间。只有把这五类时间拆开,才能判断节拍瓶颈到底在机器人本体、在程序逻辑,还是在外部设备配合上。

本节以一台典型的UR10e码垛/取放工作站为例进行说明。该工作站包含UR10e本体、OnRobot RG2夹爪、一台PLC控制的输送线、一个安全门锁和一个视觉相机。程序采用Polyscope编写,主任务循环执行“取件—移动—放件—返回”。以下参数均为教学示例,用于说明拆解方法,不代表任何实际项目的实测结果。

一、移动时间:不是“速度”一个参数决定的

UR程序中的移动指令主要有MoveJ、MoveL和MoveP。它们的耗时由路径长度、关节速度/加速度、工具负载、奇异点规避共同决定。很多工程师只关注示教器上显示的“速度”百分比,但真正影响节拍的是加速度斜坡和混合半径(blend radius)。

例如,一段从取件点到放件点的MoveL,路径长度约420 mm,速度设为250 mm/s,加速度设为1200 mm/s²。若混合半径设为0,机器人会在路径终点完全停止再执行下一条指令,产生明显的“停顿感”;若将混合半径设为50 mm,则两条相邻路径可以平滑过渡,实测节拍通常可缩短8%~15%。但混合半径过大会导致路径偏离,可能撞到夹具或工件,因此需要结合TCP轨迹验证。

在拆解时,建议把每条移动指令的理论时间与实际时间分别记录。理论时间可由路径长度除以平均速度估算,实际时间则通过UR的get_actual_tcp_pose()或示教器“日志”中的时间戳读取。两者差值超过20%时,通常说明存在加速度受限、奇异点附近减速或负载惯量过大等问题。

二、等待时间:最隐蔽的节拍杀手

等待时间包括两类:显式等待和隐式等待。显式等待是程序中写明的Wait指令、sleep()或Wait for digital input;隐式等待则是由于逻辑判断、循环条件或外部信号未就绪而被动产生的停顿。

在示例工作站中,取件后程序执行Wait for digital input 1 == True,等待夹爪“夹紧确认”信号。若夹爪实际动作时间为180 ms,而程序在夹紧后立即继续,则这180 ms属于IO响应时间;若程序额外写了Wait 0.3 s,则多出的300 ms就是纯等待浪费。拆解时,应把每个Wait指令的触发条件、实际等待时长、是否可被事件驱动替代逐条列出。

优化原则:能用“等待输入信号”解决的,不要用固定延时;能用“并行分支”解决的,不要让主程序串行等待。

三、IO响应时间:从信号发出到动作完成

UR的IO包括标准数字IO、工具IO和远程IO。以夹爪为例,从程序置位set_tool_digital_out(0, True)到夹爪真正夹紧,中间包含:UR控制器扫描周期(约8 ms)、工具IO输出延迟、夹爪内部电磁阀响应、机械夹紧行程时间。示例中,RG2夹爪从收到信号到夹紧确认约180 ms,其中机械行程占120 ms,电气响应占60 ms。

拆解IO时间时,建议用示教器IO监控或外部示波器同时抓取“输出置位”和“输入反馈”两个信号,测量上升沿之间的时间差。若该时间超过200 ms,应优先检查夹爪气压、阀体响应或IO滤波设置,而不是盲目提高机器人速度。

四、通信时间:UR与PLC、相机、上位机的数据交换

UR与外部设备通信主要有三种方式:Modbus TCP/RTU、EtherNet/IP和Socket/TCP。通信时间由轮询周期、数据包大小、网络抖动决定。示例中,UR通过Modbus TCP向PLC发送“请求放件”信号,PLC回复“允许放件”信号,单次往返约25 ms;若网络中存在交换机级联或大量广播,往返可能升至80 ms以上。

通信时间在节拍中通常占比不大,但它的不确定性会破坏节拍稳定性。拆解时应记录:通信周期、最大抖动、丢包重试次数。若抖动超过平均值的50%,应检查网络拓扑、屏蔽接地和PLC扫描周期。

五、外部设备交互时间:真正决定产能上限

外部设备交互时间包括输送线定位、安全门开闭、视觉拍照与结果输出、气缸动作等。在示例工作站中,视觉相机拍照并输出结果约350 ms,输送线定位约500 ms,安全门锁释放约200 ms。这些时间往往比机器人单次移动更长,是节拍优化的重点。

拆解方法:把外部设备动作与机器人动作画成并行时间轴,找出哪些动作可以重叠。例如,机器人从取件点移动到放件点的同时,输送线可以提前定位;视觉拍照可以在机器人移动过程中触发,而不是等机器人到位后再拍。通过并行化,示例工作站的单循环节拍可从约4.2 s压缩到约3.1 s。

UR程序单循环时间构成拆解(示例:取放工作站) 总节拍 ≈ 4.2 s → 并行优化后 ≈ 3.1 s 时间 0 1.0s 2.0s 3.0s 4.0s MoveJ 取件接近 MoveL 取件 MoveL 放件路径 MoveJ 返回 Wait 0.3s Wait 夹爪夹紧 180ms 夹爪松开 160ms Modbus 往返 25ms 视觉拍照 350ms 输送线定位 500ms 安全门锁 200ms 并行优化要点: ① 视觉拍照与机器人移动重叠,节省约 300 ms;② 输送线定位提前触发,节省约 400 ms; ③ 用夹爪反馈信号替代固定 Wait,节省约 300 ms;④ 混合半径优化移动路径,节省约 200 ms。 移动 等待 IO 通信 外部设备

六、拆解后的节拍优化判断

完成五类时间拆解后,可以用一张简单的时间占比表判断优化优先级。示例工作站拆解结果如下(教学示例数据):

时间类别 示例耗时 占比 优化方向
移动时间约 1.8 s43%混合半径、路径重规划、速度/加速度匹配
等待时间约 0.6 s14%事件驱动替代固定延时
IO响应时间约 0.34 s8%夹爪气压、阀体响应、IO滤波
通信时间约 0.05 s1%网络拓扑、轮询周期
外部设备交互约 1.4 s34%并行化、提前触发、设备节拍匹配

从表中可以看出,移动时间和外部设备交互时间合计占77%,是节拍优化的主战场。等待时间虽然占比不高,但往往是最容易消除的浪费。IO和通信时间占比小,但它们的稳定性直接影响节拍波动,不能忽视。

注意:拆解时必须使用同一参照系。本文所有时间均以“程序主任务开始执行”为0点,向右为正方向。若使用PLC扫描周期或相机触发时刻作为0点,需在记录中明确标注,避免时间轴错位。

七、实操建议:如何快速完成一次动作分解

  1. 在UR示教器中打开“日志”或使用get_actual_tcp_pose()记录每个关键指令的时间戳,至少采集10个循环。
  2. 把每个循环按“移动—等待—IO—通信—外部设备”五类打标签,计算每类平均耗时和标准差。
  3. 对标准差超过平均值30%的类别,优先排查外部信号抖动、网络延迟或机械动作不一致。
  4. 画出并行时间轴,找出可以重叠的动作。通常“机器人移动”与“外部设备准备”最容易并行。
  5. 每次只改一个参数(如混合半径或等待条件),重新采集10个循环,对比节拍变化,确认优化有效后再进行下一项。

通过以上拆解,UR程序不再是一个“黑盒”,而是一条由移动、等待、IO、通信和外部设备交互组成的时间链。只有看清每一段的时间构成,才能把节拍优化从“凭感觉调速度”变成“有依据地压缩瓶颈”。