西门子 S7 协议解析
目录
1 建立连接
2 读数据
3 写数据
1 建立连接
03 00 00 16 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A (第一次握手报文)
03 00 报文头
00 16 数据总长度:22
11 E0 00 00 00
01
00 C1
02 10
00 C2
02 03
01 C0
01 0A 报文结束
03 00 00 16 11 D0 00 01 00 11 00 C0 01 0A C1 02 10 00 C2 02 03 01 (第一次握手返回)
03 00 报文头
00 16 数据总长度:22
11 D0 00 01 00
11
00 C0
01 0A
C1 02
10 00
C2 02
03 01 报文结束
03 00 00 19 02 F0 80 32 01 00 00 CC C1 00 08 00 00 F0 00 00 01 00 01 03 C0 (第二次握手报文)
03 00 报文头
00 19 数据总长度:25
02 F0 80 32
01
00 00
CC C1
00 08
00 00
F0 00
00 01
00 01
03 C0 报文结束
03 00 00 1B 02 F0 80 32 03 00 00 CC C1 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0 (第二次握手返回)
03 00 报文头
00 1B 数据总长度:27
02 F0 80 32
03
00 00
CC C1
00 08
00 00
00 00
F0 00
00 01
00 01
00 F0 报文结束
2 读数据
S7协议的地址(偏移量)是按照位来运算的,因此需要地址值乘以8。
03 00 00 43 02 F0 80 32 01 00 00 00 05 00 32 00 00 04 04 12 0A 10 02 00 01 00 00 81 00 00 00 12 0A 10 02 00 01 00
00 82 00 00 00 12 0A 10 02 00 01 00 00 83 00 00 00 12 0A 10 02 00 08 00 01 84 00 00 00(读取数据)
03 00 报文头
00 43 整条数据长度 67
02 F0 80 32 固定长度:4(大概是协议类型)
01 命令类型:发
00 00 00 05 标识序列号:6(与返回数据一致)
00 32 00 00 命令数据总长度:50
04 命令起始符:4
04 读取数据块个数:4
12 0A 10 固定长度:3
02 02按照字节读,01按照位读
00 01 读取数据 byte 个数:1(8 个位)
00 00 读取数据块编号:0
81 读取数据块类型:I
00 00 00 读取数据地址偏移量:0,地址是实际地址乘以8,O10,则是8*10,O8.1则8*10+1
12 0A 10 固定长度:3
02 02按照字节读,01按照位读
00 01 读取数据 byte 个数:1(8 个位)
00 00 读取数据块编号:0
82 读取数据块类型:Q
00 00 00 读取数据地址偏移量:0
12 0A 10 固定长度:3
02 02按照字节读,01按照位读
00 01 读取数据 byte 个数:1(8 个位)
00 00 读取数据块编号:0
83 读取数据块类型:M
00 00 00 读取数据地址偏移量:0
12 0A 10 固定长度:3
02 02按照字节读,01按照位读
00 08 读取数据 byte 个数:1(8 个位)
00 01 读取数据块编号:1
84 读取数据块类型:DB
00 00 00 读取数据地址偏移量:0(bit 偏移量)
03 00 00 2F 02 F0 80 32 03 00 00 00 05 00 02 00 1A 00 00 04 04 FF 04 00 08 00 00 FF 04 00 08 01 00 FF 04 00 08 F2 00
FF 04 00 20 AB CD EF 01 (读取数据返回)
03 00 报文头
00 2F 数据总长度:47
02 F0 80 32 固定长度:4(大概是协议类型)
03 命令类型:收
00 00 00 05 标记序列号:5
00 02 固定长度:2(作用不详)
00 1A 00 00 有效数据长度:26(从第一个数据的前缀开始计算)
04 命令起始符:
04 读取数据块个数:4
FF 04 00 固定长度:3(返回数据前缀)
08 当前数据有效位数:8(bit)
FF 04 00 固定长度:3(返回数据前缀)
08 当前数据有效位数:8(bit)
01 00 读取数据:00000001
FF 04 00 固定长度:3(返回数据前缀)
08 当前数据有效位数:8(bit)
F2 00 读取数据:11110010
FF 04 00 固定长度:3(返回数据前缀)
20 当前数据有效位数:32(bit)
AB CD EF 01 读取数据:10101011110011011110111100000001(2882400001)
3 写数据
03 00 00 24 02 F0 80 32 01 00 00 00 09 00 0E 00 05 05 01 12 0A 10 01 00 01 00 00 83 00 00 29 00 03 00 01 01(写入数
据)
03 00 报文头
00 24 数据总长度:36
02 F0 80 32 固定长度:4
01 命令类型:发
00 00 00 09 标记序列号:9
00 0E 固定长度:2
00 05 有效数据长度:5(从偏移量后第一位开始计算)
05 命令起始符:
01 写入数据块个数:1
12 0A 10 固定长度:3(返回数据前缀)
01 写入方式:01 按 bit 写入;02 按 byte 写入
00 01 写入数据个数:1(byte 方式可以多个写入,bit 只能单个写入)
00 00 写入数据块编号:0
00 00 29 写入地址偏移量:41 =M5.1
00 03 写入方式:03 按 bit 写入;04 按 byte 写入
00 01 写入 bit 的个数:1
01 写入的值:1
03 00 00 16 02 F0 80 32 03 00 00 00 09 00 02 00 01 00 00 05 01 FF(写入数据返回)
03 00 报文头
00 16 数据总长度:22
02 F0 80 32 固定长度:4
03 命令类型:收
00 00 00 09 标记序列号:9
00 02
00 01
00 00
05 01
FF 表示写入正常
相关文章:
西门子 S7 协议解析
目录 1 建立连接 2 读数据 3 写数据 1 建立连接 03 00 00 16 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A (第一次握手报文) 03 00 报文头 00 16 数据总长度:22 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A 报文结束…...
一、python解题——求序列最长递增
解题代码: import os import sys# 请在此输入您的代码 n int(input()) a list(map(int, input().split())) # 创建一个初始元素全为1的列表,用来存放每个递增序列的长度 b [1 for x in range(0, n)] # 设置num,用来控制b列表的下标 num …...
【Java 基础篇】Java线程:volatile关键字与原子操作详解
在多线程编程中,确保线程之间的可见性和数据一致性是非常重要的。Java中提供了volatile关键字和原子操作机制,用于解决这些问题。本文将深入讨论volatile关键字和原子操作的用法,以及它们在多线程编程中的重要性和注意事项。 volatile关键字…...
992. K 个不同整数的子数组
992. K 个不同整数的子数组 给定一个正整数数组 nums和一个整数 k,返回 nums 中 「好子数组」 的数目。 如果 nums 的某个子数组中不同整数的个数恰好为 k,则称 nums 的这个连续、不一定不同的子数组为 「好子数组 」。 例如,[1,2,3,1,2] 中…...
Vue 使用vue-cli构建SPA项目(超详细)
目录 一、什么是vue-cli 二,构建SPA项目 三、 运行SPA项目 前言: 在我们搭建SPA项目时候,我们必须去检查我们是否搭建好NodeJS环境 cmd窗口输入以下指令:去检查 node -v npm -v 一、什么是vue-cli Vue CLI(Vu…...
SpringBoot工程模板
spring脚手架:https://start.spring.io/ <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocati…...
学习SLAM:SLAM进阶(十)暴力更改ROS中的PCL库
话不多说,上活 1.1 为什么要这么做 项目中有依赖。。。。 1.2 安装VTK7.1.1 PCL1.8.0 略 1.3 移植到ROS 删除ROS依赖的vtk6.2和PCL1.8.0的动态链接库: liugongweiubuntu:~$ sudo mv /usr/lib/x86_64-linux-gnu/libvtk* Desktop/lib/ [sudo] password fo…...
js 事件流、事件冒泡、事件捕获、阻止事件的传播
事件流 js 事件的执行过程分为捕获阶段(由外层节点传播到内层节点)和冒泡阶段(由内层节点传播到外层节点),即先执行捕获阶段的代码,后执行冒泡阶段的代码 事件冒泡 js 事件中的代码默认在冒泡阶段执行&…...
一家美国公司被黑,一个拉美国家政务服务瘫痪
政务系统承包商遭勒索攻击,导致哥伦比亚国家政务服务陷入瘫痪。 据报道,9月19日哥伦比亚的多个重要政府部门正在应对一次勒索软件攻击,官员们被迫大幅变更部门运作方式。 哥伦比亚卫生和社会保护部、司法部门、工商监管部门上周宣布&#x…...
c++ QT 十八位时间戳转换
先说一下UTC: 它是协调世界时间,又称世界统一时间、世界标准时间、国际协调时间,简称UTC UTC时间与本地时间关系:UTC 时间差本地时间 如果UTC时间是 2015-05-01 00:00:00 那么北京时间就是 2015-05-01 08:00:00 解释:…...
全国职业技能大赛云计算--高职组赛题卷④(容器云)
全国职业技能大赛云计算--高职组赛题卷④(容器云) 第二场次题目:容器云平台部署与运维任务1 Docker CE及私有仓库安装任务(5分)任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续…...
【TCP】延时应答 与 捎带应答
延时应答 与 捎带应答 一. 延迟应答(效率机制)二. 捎带应答(效率机制) 一. 延迟应答(效率机制) 延时应答:相当于 流量控制 的延伸。 流量控制是 踩下了刹车,是发送方发的不要太快&a…...
URL与URI小结
文章目录 一、URL是什么?URL的一般形式: 二、分类三、URI总结 一、URL是什么? 每条由Web服务器返回的内容都是和它管理的某个文件相关联的,这些文件中的每一个都有一个唯一的名字,叫做URL(通用资源定位符&…...
QT--day5
注册 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QPushButton> #include<QLineEdit> #include<QLabel> #include <QMessageBox> #include<QString> #include<QSqlDatabase> …...
在windows和linux上玩转Tensorrt
为避免重复,一些安装内容我直接贴其他大佬的帖子了,我是按照他们的步骤来操作的,趟过一遍,没有问题。 本篇着重在tensort在Cmakelist中如何配置,以及如何配置编译动/静态库,比较基础,也是想做个…...
七天学会C语言-第五天(函数)
1. 调用有参函数 有参函数是一种接受输入参数(参数值)并执行特定操作的函数。通过向函数传递参数,你可以将数据传递给函数,让函数处理这些数据并返回结果。 例1:编写一程序,要求用户输入4 个数字…...
340. 至多包含 K 个不同字符的最长子串
340. 至多包含 K 个不同字符的最长子串 vip...
【分布式计算】副本数据Replicated Data
作用:可靠性、高性能、容错性 问题:如何保持一致、如何更新 问题:存在读写/写写冲突 一个简单的方法就是每个操作都保持顺序,但是因为网络延迟会导致问题 Data-centric models: consistency model?? ??? 读取时,…...
erlang练习题(二)
题目一 替换元组或列表中指定位置的元素,新元素作为参数和列表或元组一起传入函数内 解答 replaceIdx(List, Index, Val) ->replaceIdx(List, Index, Val, 1, []).replaceIdx([], _, _, _, Acc) ->lists:reverse(Acc);%% 到达替换位置的处理replaceIdx([_ …...
CRM软件系统价格不同的原因
很多人在了解CRM系统时,发现不同品牌的CRM价格有着很大的区别。一些CRM系统只需要几千块钱,一些CRM系统的报价却要上万,甚至十几万。为什么CRM系统价格不同?下面我们就来说说。 1、功能不同 从功能方面来说,一些CRM系…...
json数据解析
目录 一、读数据 1、简单对象读取 2、数组读取 3、对象读取 二、写数据 1、简单生成JSON 2、对象数组JSON 3、嵌套对象 三、一个综合例子 1、读JSON 2、写JSON 一、读数据 1、简单对象读取 {"app": "xnwVideo","src": "C:\\buil…...
Verilog零基础入门(边看边练与测试仿真)-状态机-笔记(7-10讲)
文章目录 第七讲第八讲第九讲第十讲 第七讲 1、最简单的状态机-三角波发生器 1、两种状态的代码: //最简单的状态机,三角波发生器; timescale 1ns/10ps module tri_gen(clk,res,d_out); input clk; input res; o…...
【Hadoop】HDFS API 操作大全
🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助…...
Webpack打包图片
一、在js文件中引入图片 二、在package.config.js中配置加载器 module.exports {mode: "production", // 设置打包的模式:production生产模式 development开发模式module: {rules: [// 配置img加载器{test: /\.(jpg|png|gif)$/i,type:"asset/resou…...
DipC 构建基因组 3D 结构(学习笔记)
背景 本文主要记录了 DipC 数据的复现过程、学习笔记及注意事项。 目录 下载 SRA 数据使用 SRA Toolkit 转换 SRA 数据为 Fastq 格式使用 bwa 比对测序数据使用 Hickit 计算样本的基因组 3D 结构使用散点图展示 3D 结构计算 3D 结构重复模拟的稳定性其他 步骤 1. 下载 SRA…...
Qt中音频的使用
对于音频我们在使用的过程中一般是录制音频、播放音频。针对这两个需求介绍Qt中音频的使用。 Qt中音频的录制 步骤: 1、获取系统中的音频设备。 2、创建QAudioRecorder对象,指定使用的音频设备,通过QAudioRecorder的setAudioInput函数设置…...
[centos]centos7源码编译cmake报错Could NOT find OpenSSL
测试环境: centos7.9 cmake3.25.0 ./bootstrap以后报错如下: Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) CMake Error …...
vue若依前端项目搭建
1.项目搭建 首先进入到你需要创建的项目目录下面,然后输入命令vue create .创建项目 接下来选择手动搭建,然后把下面图片中的内容选上 再然后继续配置一些参数信息 接下来运行npm run serve项目就启动起来了 2.配置登录界面文件 首先修改src/router…...
基于win32实现TB登陆滑动验证
这里写目录标题 滑动验证触发条件:失败条件:解决方法:清除cooKie 滑动验证方式一:win32 api获取窗口句柄,选择固定位置 成功率高方式二: 原自动化滑动,成功率中 案例 先谈理论,淘宝 taobao.com …...
vue学习-07todoList案例与浏览器本地存储
TodoList Todo List(任务列表)是一个简单的Web应用程序示例,用于管理任务、代办事项或清单。Vue.js 是一个非常适合构建这种类型应用程序的框架,因为它提供了数据绑定、组件化、响应式和轻松管理用户界面的能力。 以下是一个基本…...
网站建设及/营销策划培训
总是想的很多,说的时候一句话都说不出来。 过去的就过去吧,新的开始,好好加油! ps:这个博客不用了,退出集训队了。转载于:https://www.cnblogs.com/naix-x/p/3468413.html...
公司网站要多少钱/爱站网排行榜
...
宿州哪有做网站的/百度产品优化排名软件
当我尝试在由Servlet(java页面),JSP,bean(java页面)和HTML页面组成的Netbeans中运行我的Java EE程序时,我在输出中出现此错误:In-place deployment at C:\Users\Derek\Documents\NetBeansProjects\EJBProject\EJBProject-war\build\webInitializing...deploy?pathC…...
外国人学做中国菜的网站/百度百度推广
昨天讲解了JWT的介绍、应用场景、优点及注意事项等,今天来个JWT具体的使用实践吧。 从JWT官网支持的类库来看,jjwt是Java支持的算法中最全的,推荐使用,网址如下。 https://github.com/jwtk/jjwt 下面来看看如何使用jjwt来实现JWT…...
陕西企业营销型网站建设/网站权重怎么看
本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 按钮 Drop Down Control 按钮 -Circular Music Player Control 》》 Flat Pill Button 按钮类 --Fancy Menu 按钮之 每日一道理 我拽着春姑娘的衣裙,春姑娘把我带…...
做加密网站全站加密的最低成本/seo学院培训班
Linux 用户管理2 添加修改和删除用户,必须是超级管理员root账号才可以进行的操作,所以当当前账号不是超级管理员root账号时,首先要先切换为root账号。 如图,ylq为普通用户,执行添加用户时,会出现如图的错误…...