热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

西门子S7以太网通讯协议

S7以太网协议属于TCPIP协议族的一种,下图为S7以太网协议在ISO-OSI参考模型中的位置。通过WireShark抓包,可以看出S7以太网协议的模型

S7以太网协议属于TCP/IP协议族的一种,下图为S7以太网协议在ISO-OSI参考模型中的位置。

 

通过WireShark抓包,可以看出S7以太网协议的模型:

 

 

ISO-OSI参考模型、TCP/IP模型及S7以太网协议模型对比

ISO-OSI参考模型

TCP/IP模型

S7以太网协议模型

7-应用层

4-应用层

6-S7  Communication

6-表示层

5-  COTP(TSAP)

RFC1006

5-会话层

4-TPKT

4-传输层

3-传输层

3-TCP(102端口)

3-网络层

2-网络互连层

2-IP

2-数据链路层

1-网络接口层

1-工业以太网

1-物理层

第5层(相对于ISO-OSI参考模型):TPKT(ISO Transport Service ontop of the TCP/ ISO传输服务通过TCP),介于TCP和COTP协议之间。这是一个传输服务协议,主要用来在COTP和TCP之间建立桥梁,包含了上层协议数据包的长度。

 

第6层(相对于ISO-OSI参考模型):COTP(Connection OrientedTransport Protocol/面向连接的传输协议),比较TCP与COTP两种协议,因为它们都是用于通过网络可靠地传输用户数据,基于数据流的与基于数据包的:COTP将数据包从一个用户传输到另一个用户,所以接收者将获得与发送者传输完全相同的数据边界。TCP将连续的数据流传输到接收器,因此TCP上的协议通常必须自己添加这样的边界(如TPKT协议)。

为了复用客户端和服务端之间的几个会话,COTP使用了TSAP(传输服务访问点),TSAP为2个字节,通常使用一个有意义的字符串。TSAP的第2个字节由机架号+插槽号组成,插槽号在0-4Bit机架号在5-7Bit。这些TSAP在连接建立阶段被匹配,并且在数据传输时由2字节(目标/源)参考代替。

下图示例为SIMATIC NET OPC与S7-200 SMART PLC 通过S7以太网协议通讯的COTP TSAP设置值

通过WireShark抓包,COTP的连接报文如下:

 

为什么要使用RFC 1006 协议扩展

RFCs(Request for Comments) 是一些技术类文档, 内容包括针对-例如以太网结构,协议的设计,email 报文头设计等等进行了详细的描述。 RFC 1006 中的“ISO Transport Service on top of theTCP(TPKT)”(ISO传输服务通过TCP)是TCP协议的一种扩展。这意味着除了TCP数据,在通讯双方之间还可以提供特殊的传输服务(ISO服务)。

当数据使用TCP协议进行传输时,传输工作聚焦在数据流上。因此没有关于数据长度或者数据起始以及终止的信息。这对于发送方没有问题,因为它知道所要发送的字节数。但对于接收方来讲,它无法知道该信息什么时候开始,什么时候结束,以及下一条信息什么时候被发送。
在许多自动化应用中,必须要关注工作信息。信息块通过一个连接由发送方发出,其完整性由接收方进行确认。为了进行这样的确认,RFC1006规定了在数据前面必须要加上报文头。RFC1006因此提供了这样一种应用,及根据TCP协议建立数据流,但面向消息进行传输。

第7层(相对于ISO-OSI参考模型)S7 Communication应用协议(协议ID=0x32),包含三部分:1-Header;2-Parameter;3-Data。根据功能(S7Comm.Parameter.Function )不同,S7 Communication协议的结构会有所不同。例如,请求数据报文只包含前两部分。

应答数据报文为3部分包括数据Data 段

S7Communication应用协议中Parameter.Function的取值对应的功能如下表:

下图为S7以太网通讯客户端从建立TCP连接到读取到服务端数据的整个过程

1.握手

当客户端192.168.1.101与服务端192.168.1.200通过Socket建立连接时,会进行“三次握手”,这是标准的TCP连接方式,这个过程会由Socket自动完成;

2.通讯请求

在“握手”之后,并不能马上进行数据交换,还需要“通讯请求”过程。

这个过程包含两次报文交换:

  • 客户端发送COTP报文给服务端,在COTP报文中包含“连接请求”和“Destination TSAP”,以明确CPU的机架号和槽号;服务端应答COTP报文,包含“连接确认”;这样服务端就清楚了客户端需要和哪个CPU来进行数据通讯;

  • 客户端发送S7 Communicaton报文给服务端,在S7Communicaton报文中包含“通讯请求”; 服务端反馈S7 Communicaton报文。

  • 交换数据

通讯应用就在这个过程内完成,可以组织报文来实现需要的功能。这个过程内的报文是S7 communicaton,具体实现时,需要对S7协议中的第5、6、7层进行编程。

注意,如果不进行“第2步-通讯请求”而直接发送交换数据报文,则服务端会将连接断开。


转载于:https://www.cnblogs.com/wllgo/p/11512150.html


推荐阅读
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
author-avatar
欧毅儒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有