在PLC通信中,TCP/IP是大家普遍选择的协议,因为它是开放的以太网协议,不仅仅在西门子内部的设备之间可以使用,也可以在与第三方的设备之间进行广泛的通信。其中原因还包含TCP/IP是面向连接的,可靠的通信服务协议。

对于面向连接,表示通信是需要建立连接的,那么必然会对应断开连接,早期的300/400PLC我们会在NetPro中进行组态TCP的连接,这属于静态链接,不能通过程序断开TCP/IP的连接。而对于新的PN CPU,例如S7-1500CPU,则可以使用T_CON和T_DISCON分别来动态的建立和断开连接,实现灵活的TCP通信。

使用T_CON建立连接就是TCP通信的3次握手,通过Wireshark抓包是可以看见三次握手的过程,但这是大家看到的外在表象,实际上通过T_CON是先建立了TCP的通信资源,然后通过该通信资源与对方建立三次握手的连接。下图的wireshark中的1507,1509,以及1510是TCP的3次握手过程,在这三次握手中,通信双方协商了Widow Size和MSS的大小,即滑动窗口和TCP的最大分节长度。PLC中的TCP/IP的三次握手与标准的TCP/IP协议的三次握手形式相同。

使用T_DISCON程序功能块是用于断开连接的,然而与标准的TCP/IP通信的4次挥手是不同的,本质上是报文中的标志字段标志位不同,标准的TCP/IP的4次挥手字段标志位使用FIN,即Finish用来结束此连接,但是资源没有释放。而PLC中TCP的断开连接,并不是真的用于断开连接,而是释放通信资源,真正的逻辑是因为释放资源,所以连接断开。所以这和标准的TCP的4次挥手完全不同,而是使用字段标志位RST,即Reset来释放连接资源。通过Wireshark抓包来观察断开连接的过程。上图中的1797,是客户端使用T_DISCON的断开连接的过程,客户端通知服务器已释放该TCP的通信资源,连接断开。

下图中的2012,是服务器端使用T_DISCON的断开连接的过程,通知客户端已释放该TCP的通信资源,连接断开。2089,2197表示客户端尝试继续与服务器建立连接,然而服务器通知客户端,2198通信资源释放,连接断开。

那么为什么断开连接,PLC不能参考标准TCP的4次挥手呢?原因有两点,第一点是资源释放,有利于灵活的编程,例如,PLC A与其中一台PLC B断开连接,资源释放,利用释放的资源,与PLC C建立连接进行通信;第二点就是标准的4次挥手期间,数据仍然是可以交互的,对于工业环境来说,数据安全是有要求的,所以使用释放资源的方式,防止连接断开继续有数据交互,避免不必要的编程错误。

想要学习更多工业知识,欢迎访问西门子1847工业学习平台,这是一个官方的学习平台,能够帮助您高效获得实用和权威的资料。

西门子1847工业学习平台https://www.ad.siemens.com.cn/1847/?utm_term=1847&channel_link_type=web&utm_campaign=1847%E4%B8%BB%E9%A1%B5%E6%8E%A8%E5%B9%BF&sat_cf=1&utm_medium=article&_channel_track_key=xlxc5BrE&utm_source=csdn&utm_content=article另外,这里还有60场西门子1847工业专家会议等您来参与!点击下方链接查看会议详情。

西门子1847工业专家会议https://www.toutiao.com/article/7127890734702936576/

浅谈PLC通信中的TCPIP的连接和断开相关推荐

  1. 浅谈5G通信中的两个微波技术

    1  5G发展概述 如今,4G移动通信已在世界范围内大规模商用,我们已经感受到信息时代带给我们的非凡体验,以大信息量为基础的虚拟现实.全息图像等新型业务对移动通信技术的要求不断提高,一些更大胆的想法, ...

  2. 浅谈blackfin537处理器中sport口时分复用的理解

    浅谈blackfin537处理器中sport口时分复用的理解 基于自动缓冲DMA模式下的Sport口的多通道操作   农民伯伯 zhangtaolaosan3@126.com 1, 基础知识 在给出例 ...

  3. 浅谈HTTPS通信机制和Charles抓包原理-by:nixs

    转载请注明出处:https://blog.csdn.net/zwjemperor/article/details/80719427 主页:https://blog.csdn.net/zwjempero ...

  4. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  5. 浅谈单片机程序设计中的“分层思想”!

    浅谈单片机程序设计中的"分层思想",并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用.看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种 ...

  6. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  7. 浅谈软件性能测试中关键指标的监控与分析(转)

    浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在 ...

  8. php hasmany,浅谈laravel orm 中的一对多关系 hasMany

    个人对于laravel orm 中对于一对多关系的理解 文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论. 在 comm ...

  9. mysql key_len_浅谈mysql explain中key_len的计算方法

    mysql的explain命令可以分析sql的性能,其中有一项是key_len(索引的长度)的统计.本文将分析mysql explain中key_len的计算方法. 1.创建测试表及数据 CREATE ...

最新文章

  1. WebLogic集群配置
  2. BZOJ4539: [Hnoi2016]树
  3. saltstack管理saltstack认证相关
  4. 【渝粤教育】国家开放大学2018年春季 7218-22T医学伦理学(本) 参考试题
  5. android studio 设置自动编译_Appium Mac系统 自动测试环境搭建
  6. WEB安全基础-HTML+PHP实践
  7. haspusersetup 安装后har 蓝屏_电脑蓝屏90%的人不知道怎么办?
  8. 【收藏】HTML颜色参考
  9. 华盛顿大学研发PaperID技术,可在纸上印刷RFID电子标签
  10. 【C# RDLC】 RDLC报表的部署问题
  11. 小D课堂 - 新版本微服务springcloud+Docker教程_5-06 高级篇幅之深入源码
  12. 批量备注订单(淘宝/天猫/1688/拼多多/京东/抖音/快手)
  13. DataScience:风控场景之金融评分卡模型构建—将逻辑回归LoR模型结果转为评分卡之详细攻略
  14. SMBus Host controller not enabled
  15. 不能是underfined.xxx
  16. 12V继电器开关控制
  17. 1.静态方法只能访问静态成员(包括变量和方法不能直接访问实例成员,除非使用对象调用2.实例方法既可以访问静态成员,也可以访问实例成员
  18. 零基础语法入门第四讲 代词的主格和宾格
  19. ObjectARX程序设计入门
  20. idea 解决 右边没有gradle 工具栏

热门文章

  1. 计算机专业做ps毕业设计,毕业设计系列 | (电脑效果图篇)效果图大神一步步的教你电脑绘制过程!...
  2. java游戏下载象棋暗棋_中国暗棋手机游戏下载
  3. CSV文件导入MongoDB
  4. 分享一个在线下载视频的网站
  5. Python学习---day35
  6. 粒子群优化算法(PSO算法)
  7. Cocoapods系列教程(二)——开源主义接班人
  8. BERT在美团搜索核心排序的探索和实践
  9. 如何在苹果笔记本电脑上安装windows系统
  10. bullmind在线uml软件