讨论

ABB 机器人程序在自动模式下偶尔跳过一段,不报错,求问可能原因

人到中年
人到中年
2026/05/11 11:00

项目现场用的是 ABB IRB1200,RobotWare 6.08,主程序里有一段 MoveL 走轨迹的,中间插了 SetDO 触发视觉拍照,逻辑上拍照完了等个 0.5s 再走下一段。问题是跑自动模式有时候这一段直接就跳过去不执行,示教器上日志啥也不报,程序指针也没报错,就是那 0.5s 的 WaitDI 和后面的 SetDO 都没动作。

手动单步又每次都正常,连着跑了二三十次自动才出一次,已经搞得客户那边验收拖了。中间怀疑过中断、Trap,但程序里也没写那种东西。想过是不是 Event Routine 抢占了,但也没配啥事件例程。有没有遇到过类似情况的,一般先从哪查?

50 4

全部回复 (4)

王超
王超#1

你这个描述听着像被中断任务抢了。RobotWare 6.x 默认有好几个系统中断,尤其是 commutation 类的,你先去示教器 里点 控制面板 → 配置 → 主题选 Controller,搜一下 Event Routine 和中断,看里面有没有非默认的、尤其是名字带 T_ROB1 或者 user 之外的。即使不是你写的,有些第三方包或者选项会偷偷加中断,专门盯 DI 边沿或者某些 IO。

另外你那个 SetDO 后面接 WaitDI 0.5 超时退出,怀疑是中断在 WaitDI 还没满足时直接返回了主程序。可以临时在跳过的段开头加一句 TPWrite "enter xxx",让它输出到日志或虚拟屏,出问题的时候看日志有没有打到这一行,能快速定位是真的没进段还是进了没出来。

还有一个容易忽略的:你这段如果被某个宏或者 SoftMove 之外的程序调过,比如后台有 PC SDK 在写指针,外部任务用 RAPID 指令直接 MovePPO 或者把指针跳了,这种情况日志里也看不到。再确认下没有外部 OPC/PC Interface 之类的在动 PP。

2026/05/11 11:35
生意人
生意人#2

先问你一个事:你那段程序前面有没有用 StorePath / RestoPath 这类指令,或者用了 proc 调用别的模块。IRB1200 在多任务或者路径恢复上出过毛病,路径恢复点不对的话,SetDO 之后直接就跳出当前例程了,看起来像跳过但其实是程序指针跑偏。

2026/05/11 19:08
7772298256
7772298256#3

我厂里同样 IRB1200 跑 RW6.08,有一次也是这种情况,后来查下来是视觉那边发 DO 信号的时候有毛刺,把机器人的某个急停或者暂停信号误触了,PLC 那边看是机器人自己停了一瞬间又恢复,日志里没记。你可以让你那边把机器人的 Safety 数字输入在跳的那一帧抓个波形看看,特别是 ES1 ES2 那一路。

2026/05/15 12:32
tao888
tao888#4

说个不一样的思路,怀疑你那个 0.5s 的 WaitDI 在某些工况下根本没进 SetDO 那一步就被中断例程接管了。和 RRI 中断没关系,6.08 上默认装的一些工艺包会在特定 IO 边沿上挂 System Event。你去备份里导一份 event.dat 对比一下,看事件例程数量对不对,或者直接全删了再试。

2026/05/16 00:51