本文是Snap7软件包系列教程的第2篇,我们来介绍下S7协议,包括如下几个主题:

1、S7协议简介
2、S7协议命令简介
3、S7协议通信的角色与模式

1、S7协议简介

S7协议是西门子S7系列PLC通信的核心协议,它是一种位于传输层之上的通信协议,其物理层/数据链路层可以是MPI总线、PROFIBUS总线或者工业以太网。

本教程要介绍的Snap7软件包支持基于工业以太网的S7通信协议,其网络参考模型如下图所示:

从上图可以看出,S7协议的下层是传输层的RFC1006协议,也就是ISO-On-TCP协议。这个协议在之前的文章中有介绍,请参考文章:ISO传输协议、ISO-ON-TCP协议和TCP协议有什么不同?
ISO-On-TCP协议依赖TCP协议,其下层依赖是网络层的IP协议。

S7协议的报文采用封装的形式逐层向下传递。首先在S7报文的前面加上TPKT和COTP报头变成ISO-On-TCP协议报文,然后再添加TCP/IP的报头变成TCP/IP报文,如此层层向下传递最后经过物理层发送到网络中。

(图片来源 : Snap7手册)

网络中接收数据的设备,以相反的顺序依次去掉相应层的报文头,就得到了S7协议的报文。
S7协议的基本传输单位称为:过程数据单元(process data unit,PDU)。每个过程数据单元(PDU)都包括一条命令或者对命令的回复。可以说S7协议是一种命令型的协议,每条命令包括如下几个部分:

  • 报文头(header);
  • 参数(parameters);
  • 参数数据(parameter data);
  • 数据块(data block);

报文头和参数是必须有的,参数数据和数据块根据命令的不同而可选。

比如说:将"数据写入到DB100的起始地址偏移量为4的地方"就是一个命令,在这个命令中:写入、数据、DB100、偏移量4都是该命令的组成部分。2、S7协议命令简介
S7协议的命令有很多,主要包括如下几个类型:

  • 数据读写命令;
  • 块访问命令;
  • 块操作命令;
  • 系统信息命令;
  • PLC控制命令;
  • 管理命令;
  • 日期时间命令;
  • 安全命令;

数据读写命令可以对存储器(I、Q、M、C、T)的数据进行读写访问;
块访问命令可以访问PLC中块(Block)的详细信息;
块操作命令可以对块进行上传、下载、删除等操作;
系统信息命令可以获取系统相关的信息,比如:系统状态列表、CPU信息、序列号等等;
PLC控制命令可以让CPU执行热启动、冷启动、停机、获取CPU状态等等;
管理命令可以创建与CPU的连接、取消连接、设置通信的参数等;
日期时间命令可以读写CPU的日期时间值;
安全命令可以获取CPU的安全等级、发送用于连接的密码、清除当前会话的密码等;3、S7协议通信的角色与模式
在S7通信中,有三种角色:客户端/服务器/伙伴。有两种通信模式:客户端/服务器(Client/Server)模式和伙伴/伙伴(Partner/Partner)模式。
在客户端/服务器模式中,必须由客户端发起询问(query),然后服务器才能应答(reply),服务器端不能主动发起询问请求;

在伙伴/伙伴模式中,通信的双方之间都可以主动发起询问,也都可以对伙伴的询问进行应答;

我们经常使用的模式是客户端/服务器模式。

这种模式下,我们通常把PLC作为服务器,而把编程电脑、工控机、触摸屏等作为客户端,比如下面这张图:

(图片来源 : Snap7手册)

PLC也可以作为另一个PLC的客户端,这就是我们常说的S7单边通信,如下图所示:

(图片来源 : Snap7手册)

在客户端/服务器模式中,所有的配置都在客户端,服务器不需要任何配置。

在伙伴/伙伴通信模式下,主动与另一方建立连接的称为主动方(Active Partner),而另一方就称为被动方(Passive Partner)。一旦建立连接后,通信双方都可以发送或接收数据,如下图所示:

在伙伴/伙伴通信模式下,双方都需要进行配置。

好了,关于S7通信协议就先介绍这么多。

我的新书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》已经出版,欢迎点击下面的链接查看:

西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例​www.founderchip.com

西门子标准报文1常用_基于Snap7使用C#编程访问西门子PLC系列教程(2)-S7协议相关推荐

  1. 西门子smartclient怎么用_基于Snap7使用C#编程访问西门子PLC系列教程(3)-Snap7Client(建立连接)...

    本文是Snap7软件包系列教程的第3篇. 在上一篇文章中,我们介绍了S7通信协议中有三种角色:客户端/服务器/伙伴:有两种通信模式:客户端/服务器(Client/Server)模式和伙伴/伙伴(Par ...

  2. 西门子标准报文1常用_关于西门子S7通信协议你不知道的那些事儿

    ↑ 点击上方 "智能制造之家" 关注我们 写在面前 在上位机开发的路上,西门子PLC也一直是我钟爱的一个品牌,仍然记得刚开始做的第一个上位机就是基于S7-300 PLC的S7协议. ...

  3. 西门子标准报文1常用_关于西门子变频器报文的个人解读

    很多朋友咨询关于西门子变频器的报文的问题,看着很迷糊,不知道怎么去理解,今天小编利用一篇文章来让你一目了然. 相信大家为了学习这部分内容也看过很多资料,网上有很多介绍的文章,包括手册中也是有详细的说明 ...

  4. 西门子标准报文1常用_深入学习PROFIdrive驱动控制协议(1)

    前面介绍S7-1200运动控制的文章曾讲过:根据连接驱动方式的不同,S7-1200有三种运动控制的方式,即:PTO.模拟量和PROFIdrive协议.PROFIdrive协议在西门子运动控制中使用非常 ...

  5. 西门子标准报文1常用_西门子V90 PN伺服与PLC通信连接

    西门子V90伺服系统,最近比较流行的也比较经济的就是V90 PN版(profinet总线通信),以前是V90脉冲通信版,控制上V90PN配合博图软件工艺设置方便很多. V90PTI通信版和V90PN通 ...

  6. 西门子标准报文1常用_西门子1500系列PLC速度轴配置与仿真

    1500系列PLC速度轴配置与仿真 西门子电机变频调速控制以前多在驱动控制器中实现,例如Cu320.Cu310等控制单元,使用Scout软件进行配置.对于使用者来讲,Scout使用难度相对较大.现在西 ...

  7. 西门子标准报文1常用_西门子S7-1200 V90 扭矩控制,750附加报文

    西门子S7-1200 V90 扭矩控制,750附加报文​mp.weixin.qq.com 以下文章来源于百舜NET,作者小舜. 使用S7-1200控制V90的工程师们,是否为750附加报文发愁过?现在 ...

  8. php读取西门子plc_基于Socket访问西门子PLC系列教程(二)

    本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:[公众号dotNet工控上位机:thinger_swj] 基于Socket ...

  9. 基于Socket访问西门子PLC系列教程(二)

    本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:[公众号dotNet工控上位机:thinger_swj] 基于Socket ...

最新文章

  1. Zookeeper整理(一)- 写操作产生事件,写操作与Watcher对应关系
  2. 特斯拉致命车祸最新调查结果发布
  3. python不对字符串进行转义
  4. 明天参加GDG devfest
  5. boost::type_erasure模块Associated types相关的测试程序
  6. 7.Vue 列表渲染
  7. BZOJ2683 简单题(CDQ分治)
  8. Zepto.js 源码解析(emoji版)
  9. 在华为推送平台给手机推送步骤
  10. 应对艰难职场环境的五条策略
  11. sigil将html转换epub,【教程】(進階版)如何用Sigil製作一本高質量的epub
  12. Exchange 2019反垃圾邮件组件启用反垃圾邮件功能、设置白名单\黑名单
  13. 麦子学院彭亮python基础_麦子学院Python视频
  14. 重磅官宣:说一件大事
  15. 织梦ajax登录界面,dede织梦后台登陆成功后又跳转到登陆页面
  16. 手机短信验证码的实现
  17. 无法保存打印机设置 。操作无法完成 错误(0x0000001)
  18. vxworks,bootrom启动时由7s减少到1s
  19. 网络安全进阶篇之免杀(十四章-9)MSF加密壳免杀过360
  20. 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇

热门文章

  1. Android开发一 什么是3G
  2. 计算机windows多用户,windows Server 2012 专业版配置多用户远程桌面连接
  3. android读取外部图片,Android读取本地图库与调用摄像头拍摄
  4. jmeter所有版本下载地址分享
  5. 反思找开瓶器的过程:预判选择方法的执行结果 充分主动积极的沟通
  6. php防止报错,php报错:Cannot redeclare class 提示的解决方法
  7. springboot嵌入thymeleaf后css404_SpringBoot2整合Thymeleaf
  8. matlab遗传算法m文件,matlab上安装遗传算法工具箱
  9. springboot 添加允许跨域_springboot设置cors跨域请求的两种方式
  10. layui 上传图片校验