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类型。
标签:COTP,表示层,--,Unsigned,PLC,integer,byte,连接 From: https://www.cnblogs.com/wgd-elwood/p/16845903.html