问题描述:
CPP443-1组态在S7-400站,此站带了5个CP用于各区域通讯;
在使用过程中,CP443-1通过TCP通讯与容错服务器直接通讯时,出现丢包、协议机制重发、粘包等情况,主要问题及发送方式如下:
由于发送报文过长,使用AG_LSEND发送报文。
共有3个点可以触发AG_LSEND的ACT上升沿。
使用时钟寄存器进行计数,共计数66,也就是6秒左右。
其中计数为3时触发长度为1435的发送ACT。
计数为23/25/27/29/31/33/35/37/39/41/43/45/47/49/51/53/55/61时触发长度为241的发送ACT。
为什么会有这么多触发点?因为现场工作模式是不确定的,这么多触发点并不会每次都会同时都要触发,1435长度是每次都要触发的,其中根据现场实际夹杂着241长度的报文。
AG_LSEND的ACT管脚触发前,我会执行如下操作:
使用BLKMOV将需要的数据移动到发送区域,根据实际情况将发送长度更改为241或者1435。
并没有去判断ERROR的状态,因为观察趋势是可以完成发送的。
求助该问题的原因或者有没有的人遇到过。