西蒙子S7协议介绍

发布时间:2023年12月18日

西门子的S7 协议,没有仍何关于S7协议的官方文档,是一个不透明的协议。关于S7的协议介绍,大都是非官方的一些七零八落的文档。

1. S7的通信模型

西蒙子S7 通讯遵从着基于TCP 的 Master(client) & Slave(Server)的通信模型。Master发送请求,用于从设备查询或向设备发送数据,或发出某些命令。
S7 协议的报文格式组成如下:
在这里插入图片描述
TPKT 是基于 ISO over TCP其被定义在RFC1006。ISO-COTP是在基于ISO8073协议(RFC905)的RFC2126中定义的。
S7协议是面向功能的或面向命令的。这意味着S7的传输由 请求(request) 和 回应(response) 组成(只有极少数例外)。
并行传输的数量和PDU的最大长度是在连接建立期间协商的。
S7 PDU 由以下内容构成:

项目描述
Header包含长度信息、PDU引用和消息类型常量
Parameters参数
Parameters Data参数数据
Data数据

例如, 将该数据从偏移量4开始写入DB10, Write DB 10 4和数据是命令的组成部分,并根据协议规范在消息中进行格式化。

在S400系列中,实现了所谓的循环数据I/O功能,这类似于传统的发布者-订户模型。PC可以订阅某些事件,而PLC会定期将请求的数据推送到网络。
S7 的命令主要分为以下几种:

  • Data Read/Write
  • Cyclic Data Read/Write
  • Directory info
  • System Info
  • Blocks move
  • PLC Control
  • Security
  • Programming

1.1 S7 通信的三种角色

  • Client
    发起请求
  • Server
    回应请求
  • Partner
    即是client 又是server。
    在这里插入图片描述
    作为Partner 的例子如下:
    在这里插入图片描述

2. S7 的数据编址模型

S7 的数据读/写操作,是通过指定变量的内存区域,地址(offset),和Size或者类型来实现的。
PLC的内存区域类型如下:

内存区域标号描述
Merker[M]标记变量&寄存器标志
Data Block[DB]数据块,DB区域是存储设备不同功能所需数据的最常见位置,这些数据块被编号为地址的一部分
Input[I]数字和模拟输入模块值,被映射到存储器中
Output[Q]类似内存映射的输出
Counter[C]PLC程序使用的不同计数器的值
Timer[T]PLC程序使用的不同计时器的值
文章来源:https://blog.csdn.net/changqing1990/article/details/134948839
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。