讨论

ABB IRB1200写个码垛程序,循环里要跳信号咋搞

feix86
feix86
2026/03/31 21:14

最近在搞一个码垛的小活,IRB1200配的IRC5紧凑柜,程序用的是RobotStudio离线编好后下到示教器里再小改。现在卡在一个地方:码到第8层要换托盘,想让机器人暂停下来等个外接光电信号(DI输入确认新托盘到位了再继续),这个在主程序里用IF+WaitDI应该能实现吧?

但我看同事老程序里有人用TRIGGER,也有人直接在循环末尾加WaitDI \\In信号,区别大不大?会不会在快速运动的时候漏掉信号?还有就是循环层数用计数器+1这种笨办法行不行,还是有更标准点的写法。现场等调试,急。

13 4

全部回复 (4)

鸿运当头
鸿运当头#1

我这边给你个稳的写法。主程序里用FOR循环或者WHILE都行,码完一层层数+1,IF计数=8 THEN WaitDI di_newPallet,1; 复位计数; 回到第一层。WaitDI是边沿触发型的,机器人运动到那一行就会停在那等信号,不会漏的,比TRIGGER那种中断方式好调试多了。TRIGGER适合那种高速运动中需要瞬间捕获的场合,码垛这速度完全没必要上那个。

2026/04/01 03:00
小冯
小冯#2

你那个PLC给信号的时候记得加个滤波,实测过光电传感器在托盘到位时会有个20-30ms的抖动,直接接DI偶尔会误触发,程序里WaitDI后面再加个WaitTime 0.05s比较保险。

2026/04/01 05:22
杰姐
杰姐#3

计数器+1怎么是笨办法了,我干了八年码垛全这么写的,稳得很。计数器配个数字量输出夹爪信号,逻辑清清楚楚,出了事也好查,别为了追求花哨用啥状态机,工厂里稳定第一。

2026/04/01 11:13
平淡是真
平淡是真#4

问一下你托盘到位信号是常开还是常闭?

2026/04/02 06:09