讨论

分拣机多工位协同程序,PLC跟视觉信号对不上咋整

小余
小余
2026/04/30 22:02

做一套分拣机,PLC是西门子1500,视觉那边走TCP发的触发信号跟实际工件到位老是差20-30ms,导致分拣气缸动作有时候早一拍晚一拍,产线速度一拉到60件/分钟就明显看出错位。

视觉那边说是PLC给他们的拍照触发信号抖动,他们自己处理没问题。我现在在PLC里用的是循环中断OB里读输入,然后立刻发触发给视觉,中断周期设的1ms,但这块没太搞明白中断里直接发TCP通讯会不会有问题?

想问下做过类似分拣项目的,分拣机这种多工位协同的,PLC触发跟视觉响应之间一般留多少裕量比较稳?中断里发TCP这种用法靠谱吗,还是得用同步信号走IO硬接线?

11 4

全部回复 (4)

老吴
老吴#1

1ms中断里发TCP这事别这么干,TCP本身就不是确定性的,发包到视觉那边解析,再加上视觉处理几十毫秒,整体抖动范围本身就大,你那20-30ms的误差很正常。

正经做法是把拍照触发和分拣到位分开:拍照触发走硬接线IO,响应快;视觉处理完的结果用TCP回传PLC,但PLC这边要加一个位置编码(比如传送带编码器值)做匹配,不能用"拍完照就立刻分"这种逻辑。我们做快递分拣那套,视觉到PLC的结果回来延迟大概80-120ms,全靠编码器位置做同步,气缸动作看的是工件到了编码器哪个位置,不是看视觉回传的瞬间。

速度上到60件/分钟,工件间距不到300mm的话,编码器精度至少得1mm脉冲,不然位置对不上一样错位。

2026/05/01 00:12
生意兴隆
生意兴隆#2

中断周期设1ms跑TCP真没必要这么频繁,1500的TCP发个报文本身就要占几个ms,中断周期再小也快不过TCP栈的处理速度。你可以把拍照触发改成普通循环OB里周期10ms轮询,对视觉这种应用完全够了,多出来的时间留给通讯反而更稳。

2026/05/02 10:00
520
520#3

产线60件/分钟也算不上高速,机械响应跟不上的话,光在程序上抠那点ms没大用,先查查气缸阀岛响应时间加上气缸本身动作时间是多少,机械那边没摸清楚,软件调死也没用。

2026/05/02 13:33
小旭
小旭#4

视觉处理延迟一般多大你测过没?不同项目我这边的经验是简单定位20-50ms,复杂OCR或者多目标检测能到150ms+,你这个20-30ms看起来更像通讯抖动不是视觉处理慢,建议先用wireshark抓一下视觉跟PLC之间的包,看看到底是丢包重发还是单纯延迟。

2026/05/04 22:10