西蒙子S7协议介绍

西门子的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程序使用的不同计时器的值

每一种数据存储区域类型,都可以存储一个bit, byte,word(16bit),双word(32bit)。
关于以上内存区域存储的数据类型描述,我们来举个例子。 例如 IB0 表示一个输入byte的数据,起始地址为0, 其包含IB0.0 ~ IB0.7 八个位。
QB0 表示 输出点 为一个byte,起始地址为0。
QW5 表示一个输出点,占16bit 位宽,起始地址为5。
QD5 表示一个输出点,占32bit 位宽,起始地址为5。
DB的存放数据类型:
DB1.DBX0.0 表示 DB1 中的一个位
DB1.DBB0 表示一个8bit
DB1.DBW0 表示一个16bit
DB1.DBD0 表示一个32bit
一个byte的连续内存应该是这样: QB0, QB1, QB2, QBN。
一个word 的连续内存区域应该是这样分配: QW0,QW2,QW4… (因为其占2个byte)
一个32bit的连续内存区域应该是这样分配: QD0,QD4,QD8 … (因为其占4个byte)

2.1 定时器

  1. 线圈型定时器
  2. 功能框定时器 (常用)
    • TP 脉冲定时器, 触发端只需要一次,一旦记时,就无法中断。
    • TON 接通延时,触发端要一直有电,才记时,否则不计时。
    • TONR 保持型接通延时,触发端要一直有电,才记时,否则不会清0,保持记时。
    • TOF 关断延时,下降沿触发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值