回复:关于TCP/UDP通信的连接资源、CONN-ID、连接的新建另建与重建

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23699
  • 精华

    914
  • 被关注

    1286

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2023-12-15 11:13:56

11楼

展开查看
以下是引用执笔画管脚在2023-12-14 20:42:14的发言 >7楼:单独做reset操作没作用
以下是引用yming在2023-12-14 14:04:36的发言 >4楼:这个MODBUS T...

引用4楼详细内容:

这个MODBUS TCP功能块是这样运行的。

当客户端REQ出现一个0-1的上升沿时,它会复制这些接口的设置到内部一个静态区,然后以这个区为基础;若没有连接,则去建立连接;(占用连接ID,发起连接对方。)然后开始通讯;直到完成,输出Done/Error。在此期间是不理会接口的变化的。若REQ仍然是1,则继续下一个的通讯,把数据区指针的数据加载,发送。若遇到网络断开故障,它会重试。

在此期间,你改变端口设置(是设置,不是内容数据。)是没用的!

(你可以改,为下次REQ上升沿做准备。)

只有下一个REQ上升沿出现时,才会再次复制接口的这些参数到那个静态区。这意味着这个固定连接ID属于“长连接”(不是每次都要握手、完成后自动断开。它一直保持这个连接。)

当服务器(对方)是“挂了”“宕机”,重新启动后,对方就失去了保持的连接。这时,需要本方的客户端复位连接,重新发起连接SYN标识。这样才可以恢复连接。

客户端使用断开连接未必可行。因为断开连接发送的是FIN(断开连接请求!)而重新初始化的服务器是在等待SYN(连接请求。)

因此,复位连接,应该使用的是T_RESET通讯指令。这个在MODBUS _TCP客户端的背景DB中。(怎么使用,我也不知道。)

不行就是自己写一行该指令复位。


以下是引用执笔画管脚在2023-12-14 11:53:29的发言 >2楼:再贴一下我遇到的问...

引用2楼详细内容:

再贴一下我遇到的问题吧,因为ModBusTCP也是基于楼主提到的那些基本的TCP/UDP指令封装的。遇到问题后我通过操作背景数据块,测试了一些重连方法,并没有解决问题。

当然,这些纯属好奇,因为正常程序不会有我这种手动更改Connection_ID操作。


具体描述如下:

两个西门子PLC走MODBUS TCP,通讯成功的情况下,手动把服务器的Connection_ID改掉,虽然系统会马上把你手动改的值覆盖成正确值,但此时通讯已经掉线,服务器这边会报80A3。

这种状态下重启服务器可以恢复通讯,暂时没找到其他方法。



问过西门子官方网络工程师了。

就是那样处理。

MB服务器侧宕机重启,它一定是在等待SYN连接请求的状态。

MB客户端这边需要终止运行(MB客户端调用),复位连接后,重新发起SYN连接。DISCONNCT发送FIN标识断开连接是没用的。西门子自己两台MB TCP通讯可以自己处理;第三方的,使用MB TCP不同版本的不能自行处理。

若是客户端宕机重启,要看MB服务器的远程设置。若采用固定连接(指定客户端IP),理应首先发送断开连接FIN,然后重新连接REQ。

若MB服务器采用非固定连接(客户端IP=0.0.0.0响应任何连接)则不用,会重新建立连接。(第三方驱动、变频器等)


学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15714条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。