TCP通讯过程中硬件连接突然断开

已锁定

X没有昵称X

  • 帖子

    66
  • 精华

    2
  • 被关注

    1

论坛等级:侠客

注册时间:2018-01-12

白金 白金 如何晋级?

TCP通讯过程中硬件连接突然断开

10780

16

2024-03-27 10:43:43

star star star star star

最近看了赵欣大佬的通信原理探秘又结合在工作中遇到的问题,关注到了通讯中的KeepAlive定时器的设置,所以做了如下实验。

硬件:

1513PLC  TCP客户端

PC   TCP服务器

前提条件:禁用PLC侧KeepAlive


程序:

测试流程:

  1. 打开PC端网络调试助手,设置为TCP服务器,打开链接;

  2. PC端打开WireShack软件,开启数据捕捉;

  3. 博途中打开Trace,设置观察数据;

  4. 博途在线 设置"TestDB".TCPtoPC.SedLEN为1000,即发送的数据长度为1000,置位"TestDB".TCPtoPC.CONNT,等待链接建立后,置位"TestDB".UDPtoPC.SedREQ开启发送;

  5. 发送过程中,拔掉PLC与PC链接的网线;

  6. 等待PLC侧出现Busy后,暂停trace;

WireShack捕获如图


PC端WireShack抓包如图

上图1处为插入网线后PC端接收到的第一条数据,随后PC端TCP服务器主动断开,2秒后PLC侧主动重连。在第一次建立连接到网线断开处,可看出共收到11条数据。

疑问:

1500的StackBuffer共8192个字节,如上,网线断开后共有19-11=8条数据存入了StackBuffer中,若仅计算数据长度,则在这个期间内共有8*1000=8000字节数据存入StackBuffer中,若根据StackBuffer处于OSI参考模型的第4层,数据压入到StackBuffer中时带有TCP头部信息,则每条数据实际长度为1000+20=1020字节,则在这期间共有8*1020=8160字节数据压入到StackBuffer中。虽然两者的结果均可导致第17次发送时,ShadowBuffer中的1000字节数据无法压入StackBuffer中,导致Busy常为1。

另外为何断开网线 重新插入后,PC端接收到的第一条数据长度是1460字节?ShadowBuffer满通讯正常后,发送长度为何不按发送端发送的长度发送,而是以最大长度发送?

又为何服务器端会主动复位连接?

PLC是否是固定在连接异常后2秒重连?

TCP通讯过程中硬件连接突然断开 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10663条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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