22.10.31

今天来讲一讲COTP协议。

咱们电脑想要通过S7协议与PLC进行一个通讯,那么就必须得使用到COTP协议。COTP协议是作为应用层的S7协议的表示层。而TPKT协议则是会话层。咱们下一次在讲。

 

 

 从图中来看我们就可以发现TCP传输的数据并不都是S7协议的数据,里面还包含了COTP层以及TPKT层的。

我们首先来讲一下PLC与电脑通讯的过程。

第一个阶段为我们电脑与PLC的TCP三次握手。

  • 首先我们电脑会发送TCP的SYN包给PLC
  • PLC在接受到SYN包后,会进行响应,回复SYN,ACK包给电脑
  • 到此完成了两次握手,电脑在接受到响应包后,会进行发送一个ACK的一个TCP包

第二个阶段则为我们表示层和会话层的连接。

  • 电脑向PLC构建一个COTP包,在这个包里面会发送我们的一个CR连接请求信息,当然啦,这个COTP包是已经包含了TPKT协议的了。
  • PLC在接受到电脑的COTP连接请求包后呢,就会进行回复一个CC连接确认信息,这个信息在包中占一个字节。位与COTP层的第二个字

22.11.1

第三个阶段为S7构建连接阶段。

  • 这一阶段,电脑会向PLC发送S7协议的请求连接报文
  • PLC进行回复一个连接确认报文

我们接下来注重讲一下COTP协议里面的具体部分字节以及其内涵吧

 COTP部分分为两种,COTP连接包和COTP功能包,COTP握手阶段使用的是COTP连接包,S7数据传输阶段使用的是COTP功能包

 COTP有两种类型,一种是连接包(握手包),是用于建立连接的,其主要包括1字节的COTP协议数据包后续部分长度值、1字节的PDU类型、2字节的目的地址、2字节的源地址、1字节的是否为拓展格式和是否为没有明确的流控、以及不限制字节参数块。

COTP连接包的结构

其中, COTP连接包的头结构为:

0 (Unsigned integer, 1 byte): Length,COTP后续数据的长度(注意:长度不包含length的长度),一般为17 bytes。

1 (Unsigned integer, 1 byte): PDU typ,类型有:

0×1: ED Expedited Data,加急数据

0×2: EA Expedited Data Acknowledgement,加急数据确认

0×4: UD,用户数据

0×5: RJ Reject,拒绝

0×6: AK Data Acknowledgement,数据确认

0×7: ER TPDU Error,TPDU错误

0×8: DR Disconnect Request,断开请求

0xC: DC Disconnect Confirm,断开确认

0xD: CC Connect Confirm,连接确认

0xE: CR Connect Request,连接请求

0xF: DT Data,数据传输

2~3 (Unsigned integer, 2 bytes): Destination reference.  目的地址

4~5 (Unsigned integer, 2 bytes): Source reference.  源地址

6 (1 byte): opt,其中包括Extended formats、No explicit flow control,值都是Boolean类型。

7~? (length-7 bytes, 一般为11 bytes): Parameter,参数。一般参数包含Parameter code(Unsigned integer, 1 byte)、Parameter length(Unsigned integer, 1 byte)、Parameter data三部分。

相对而言,COTP Fuction Packet比COTP Connection Packet简单多了,其结构如图8所示:

COTP功能包的格式

其中, COTPP功能包的头结构为:

0 (Unsigned integer, 1 byte): Length,COTP后续数据的长度(注意:长度不包含length的长度),一般为2 bytes。

1 (Unsigned integer, 1 byte): PDU type,类型有:

0×1: ED Expedited Data,加急数据

0×2: EA Expedited Data Acknowledgement,加急数据确认

0×4: UD,用户数据

0×5: RJ Reject,拒绝

0×6: AK Data Acknowledgement,数据确认

0×7: ER TPDU Error,TPDU错误

0×8: DR Disconnect Request,断开请求

0xC: DC Disconnect Confirm,断开确认

0xD: CC Connect Confirm,连接确认

0xE: CR Connect Request,连接请求

0xF: DT Data,数据传输

2 (1 byte): opt,其中包括Extended formats、No explicit flow control,值都是Boolean类型。

原文地址:http://www.cnblogs.com/wgd-elwood/p/16845903.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性