首页 > 其他分享 >Siemens 西门子 S7协议及报文格式详解

Siemens 西门子 S7协议及报文格式详解

时间:2024-04-22 09:11:30浏览次数:30  
标签:协议 字节 报文格式 西门子 S7 Siemens PLC

一、简介
  S7Comm(S7 Communication)是西门子专有的协议,是西门子S7通讯协议簇里的一种。
  S7通信协议是西门子S7系列PLC内部集成的一种通信协议,是S7系列PLC的精髓所在。 它是一种运行在传输层之上的(会话层/表示层/应用层)、经过特殊优化的通信协议,其信息传输可以基于MPI网络、PROFIBUS网络或者以太网
  S7在TCP连接上后还需要进行两次握手

  S7协议的TCP/IP实现依赖于面向块的ISO传输服务。S7协议被封装在TPKT和ISO-COTP协议中,这使得PDU(协议数据单元)能够通过TCP传送。

  可以下载Wireshark抓包工具进行抓包看详细的发送报文格式

二、第一次握手

当PDU类型为0x0E(CR Connect Request连接请求)的时候报文格式为

TPKT协议结构

 COTP连接包的结构

第一次握手发送返回字节格式

 支持的PUD类型

 参数代码TPDU-Size

三、第二次握手

当PDU类型为0xF0(DT Data,数据传输)的时候报文格式为

COTP功能包的格式

 S7Comm协议结构

第二次握手发送返回字节格式

 ROSCTR类型

四、数据读取/写入报文格式

数据读取/写入报文发送返回字节格式

S7协议的地址(偏移量)是按照位来运算的,因此需要地址值乘以8。 地址的三个字节范围为0x000000~0x08FFFF
比如M30000,实际地址就是30000*8=240000,然后转化为3个字节。 240000=0x03A980,对应三个字节【03 A9
80】 比如DB21234.40000 其中DB号21234为0x52F2,DB编号对应两个字节【52 F2】
偏移量(地址)40000乘以8就是320000,也就是0x04E200,对应三个字节【04 E2 00】

 功能码

 区域类型

 SyntaxID类型

 PLC区域类型块

 1 Merker: [M]任意标记变量或标志寄存器驻留在这里。
 2 
 3 Data Block: [DB] DB区域是存储设备不同功能所需数据的最常见位置,这些数据块编号为地址的一部分。
 4 
 5 Input: [I]数字和模拟输入模块值,映射到存储器。
 6 
 7 Output: [Q]类似的存储器映射输出。
 8 
 9 Counter: PLC程序使用的不同计数器的[C]值。
10 
11 Timer: PLC程序使用的不同定时器的[T]值。

西门子不通区域地址类型以及范围

 

标签:协议,字节,报文格式,西门子,S7,Siemens,PLC
From: https://www.cnblogs.com/ybqjymy/p/18149961

相关文章

  • Python 使用Snap7读写西门子S7系列PLC
    1.简介Snap7Snap7是一个基于s7通信协议的开源软件包,作者是DavideNardella,该软件包封装了S7通信的底层协议,可使用普通电脑通过编程与西门子S7系列PLC进行通信Snap7三大对象组件:客户端,服务器,合作者。下面是三者关系,更详细介绍可看官网。本篇主要讲述的是Client模式,我们的pc机作......
  • 性能测试——性能测试-linux监控工具-Centos7.x安装Grafana
    2个参考:小菠萝:https://www.cnblogs.com/poloyy/p/12219145.html  Centos7安装GrafanaGrafana官网下载路径:https://grafana.com/grafana/download1、直接执行以下命令进行安装:wgethttps://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpmsudoyumlocalinstall......
  • 性能测试——性能测试-linux监控工具-Centos7.x安装Node_exporter
    参考小菠萝博客笔记:https://www.cnblogs.com/poloyy/p/12375039.html 小菠萝是在一个服务器上面装的,我是2个服务器分别装的,下面需要新增一个命令:useraddprometheus    NODE_PATH='/data/prometheus/node_exporter/'cd/usr/local/src/mkdir-p${NODE_PATH}wget......
  • 性能测试——性能测试-linux监控工具-Centos7.x安装Prometheus
    此处参考小菠萝文档:https://www.cnblogs.com/poloyy/p/12375039.html 下载安装PrometheusPROM_PATH='/data/prometheus'mkdir-p${PROM_PATH}mkdir-p${PROM_PATH}/{data,conf,logs,bin}useraddprometheuscd/usr/local/srcwgethttps://github.com/prometheus/prom......
  • 6.Centos7 安装最新版本 Kubernetes + Docker
    在Centos7安装最新版本Kubernetes+Docker1.容器运行时说明:v1.24之前的Kubernetes版本直接集成了DockerEngine的一个组件,名为dockershim。自1.24版起,Dockershim已从Kubernetes项目中移除。需要在集群内每个节点上安装一个容器运行时以使Pod可以运行在上面......
  • cenots7.6系统报“fork:Cannot allocate memory” 报错的解决方法(实操)
    今日早晨上班上报一台虚拟机无法ssh连接,想着大抵是关机了,又或是存储满了(经常遇到这样的事情,因为基本上都是做的厚置备,所以会导致分配容量大于实际容量)。打开后台查看报警事件,没有!预感到此事不大简单。。。。进入控制台,输入w好家伙,输出fork:Cannotallocatememory翻译一下:内......
  • centos7 修改root密码 密码忘记的情况下
    1、重启虚拟机开启虚拟机在弹出这个界面时,按上下键防止页面跳转,选择"CentOSLinux(3.10.0-1160.e17.x8664)7(Core)"并按e 2、找到linux16开头的那行将rocrashkernel=autoxxx,把ro换成rwinit=/sysroot/bin/sh  3、 使用组合键Ctrl+X进入单用户模式 chroot......
  • centos7 修改ip地址 变为静态地址
    1、切换到root用户2、查看IP地址注:192.168.0.100是改以后的地址了,实际修改前查看的应该是修改前的ip地址3、修改ip地址cd  /etc/sysconfig/network-scripts/vi ifcfg-ens33修改红色部分 4、重启网卡 service network restart搞定 ......
  • centos7 安装 Mysql 5.7.28,详细完整教程
    https://cloud.tencent.com/developer/article/1886339 1. 下载MySQLyum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm复制2.安装MySQL源rpm-Uvhmysql57-community-release-el7-10.noarch.rpm复制3.安装MySQL服务端,需要等待一些......
  • 【CentOS7】ulimit 使用
    ulimit-a显示当前用户进程限制语法:ulimit[-aHS][-c<core文件上限>][-d<数据节区大小>][-f<文件大小>][-m<内存大小>][-n<文件数目>][-p<缓冲区大小>][-s<堆叠大小>][-t<CPU时间>][-u<程序数目>][-v<虚拟内存大小>]参数:  -a显示目前资源限制的设定。   -c......