-
安全产品
-
-
-
工业控制协议介绍之-- S7协议
发布时间:
2018-02-28
来源:
作者:
访问量:
416
S7协议是西门子专有协议,广泛用于各种通讯服务,S7协议独立于西门子各种通讯总线,可以在MPI,PROFIBUS,Ethernet,PROFINET上运行。由于以太网与PLC通信使用较多,所以重点介绍ISO on TCP的通讯方式。但是由于通过MPI,PPI,PROFIBUS等方式连接的用户核心协议仍是S7协议,依然会有一定的参考意义。
S7协议网络通信模型
RFC 1006(ISO on TCP)
西门子S7协议使用的是TCP/IP+ISO TP +S7协议。ISO on TCP的具体介绍可以参考RFC1006和RFC983。
帧格式
ISO on TCP帧分两部分,一部分为帧头,一部分为TPDU。共分为5类,分别是:
CR: connect request(连接请求);
CC: connect confirm (连接应答);
DR: disconnect request(断开请求帧);
DT: data(数据帧);
ED: expedited data(扩展数据帧)。
对于这5类帧,帧头格式是一样的,TPDU的格式有区别。
帧头格式
Vsrn版本:03; reserved:保留;packet length:从vsrn到数据结尾的长度。
TPDU格式
1、 CR、CC的TPDU格式
Header length: TPDU帧长度;
Code:TPDU类型,4bit长度;
Credit:保留;
Destination reference:目的reference,在S7通信中,为连续的次数。
Class:4bits。发送端为0,接收端忽略。
Options:4bits。发送端为0,接收端忽略。
Variable data: S7协议中,该字段共有三组参数。参数1(C1)为PLC端连接通道号、PLC机架号、PLC槽位号;参数2(C2)为远端连接通道号、机架号、槽位号;参数3(C3)为0x0A。
2、 ED的TPDU格式
PDU-NR and EOT:0x80标识该帧包括帧尾,没有后续的数据,其他数据忽略。
S7协议
S7协议的通信过程如下:TCP三次握手建立连接、ISO_TP建立连接、S7协议连接请求、建立连接、实现S7协议读取数据。
S7协议连接过程
S7协议是一组复杂的协议,可以下载、上载程序、操作PLC、读取数据等。下面只针对数据读取部分功能进行解释。
S7读取命令
标识符:0x32标识帧开始。
请求应答:0x1为发送命令,0x3为应答帧。
保留:保留,填充为0。
事务处理标识:请求、应答事务标识。
命令长度:帧长度。
保留:保留,填充为0。
命令符:0x4位读取命令,0x5位写命令。
读取数据段数:读取数据段的个数。
读取数据段命令域:读取多个不连续的数据时,该部分可以重复出现。
命令域字段标识头:读取数据段命令域的标识头。
命令域字段长度:命令域字段的长度。
未知:通常为0x10,暂不清楚具体含义。
数据类型:0x1bit,0x2 byte,0x4位float。
读取字节:读取字节的长度。
数据块编号:读取数据块编号,I、Q、M等区为0。
寄存器类型:读取寄存器类型。
偏移地址:开始读取量的偏移地址,按bit计算。
S7应答
执行命令返回值:执行命令的结果返回,0x2位OK。
数据段:根据读取不联系的地址命令,一个应答帧可以包含过个读取的数据段。其中,标示头为)XFF,有效性标示该数据段数据的有效性,数据长度为返回的数据长度,子数据段数据为返回的数据。
上一条:
下一条:
相关资讯

关注我们