西门子 S7 协议解析

2023-09-21 15:23:29

目录

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 个数:18 个位)

00 00 读取数据块编号:0

81 读取数据块类型:I

00 00 00 读取数据地址偏移量:0,地址是实际地址乘以8O10,则是8*10O8.18*10+1

12 0A 10                              固定长度:3

02                                         02按照字节读,01按照位读

00 01 读取数据 byte 个数:18 个位)

00 00 读取数据块编号:0

82 读取数据块类型:Q

00 00 00 读取数据地址偏移量:0

12 0A 10                              固定长度:3

02                                         02按照字节读,01按照位读

00 01 读取数据 byte 个数:18 个位)

00 00 读取数据块编号:0

83 读取数据块类型:M

00 00 00 读取数据地址偏移量:0

12 0A 10                              固定长度:3

02                                         02按照字节读,01按照位读

00 08 读取数据 byte 个数:18 个位)

00 01 读取数据块编号:1

84 读取数据块类型:DB

00 00 00 读取数据地址偏移量:0bit 偏移量)

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 当前数据有效位数:8bit

00 00 读取数据 100000000

FF 04 00 固定长度:3(返回数据前缀)

08 当前数据有效位数:8bit

01 00 读取数据:00000001

FF 04 00 固定长度:3(返回数据前缀)

08 当前数据有效位数:8bit

F2 00 读取数据:11110010

FF 04 00 固定长度:3(返回数据前缀)

20 当前数据有效位数:32bit

AB CD EF 01 读取数据:101010111100110111101111000000012882400001

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 写入数据个数:1byte 方式可以多个写入,bit 只能单个写入)

00 00 写入数据块编号:0

83 写入数据类型:M

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 表示写入正常

更多推荐

软件设计师笔记系列(一)

😀前言在日常生活和工作中,我们依赖于各种各样的计算机系统来完成一系列复杂的任务。计算机系统不仅仅是硬件设备的集合,它还包括一系列用于协调硬件工作的软件和协议。了解计算机系统的基础知识,包括其构造和功能,是理解现代技术世界的关键步骤。在这一章节中,我们将探讨计算机系统的核心组件和原理,从中央处理单元(CPU)的功能和组

Bash脚本学习:AWK, SED

1.AWKAWK是一种编程语言,设计用于处理文件或数据流中基于文本的数据,或者使用shell管道。可以将awk与shell脚本结合使用或直接在shell提示符下使用。以上展示使用AWK分别打印第一个位置变量和第二个位置变量。建立一个文档csvtest.csv。文档内容为:one,two,threeawk-F,'{pri

C语言每日一题(9):跳水比赛猜名次

文章主题:跳水比赛猜名次🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄🌊目录前言编程起因项目介绍设计思路1.整体逻辑2.具体逻辑代码展示效果展现结语前言编程起因最近牛客网刷到的一个编程题,综合运用了循环和条件判断语句,觉得该题

数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

全文链接:http://tecdat.cn/?p=27384在本文中,数据包含有关葡萄牙“VinhoVerde”葡萄酒的信息(点击文末“阅读原文”获取完整代码数据)。介绍该数据集(查看文末了解数据获取方式)有1599个观测值和12个变量,分别是固定酸度、挥发性酸度、柠檬酸、残糖、氯化物、游离二氧化硫、总二氧化硫、密度、

跨端开发方案之桌面应用小程序

小程序容器技术的未来是充满希望的,它为我们开辟了一个全新的数字世界,连接了桌面操作系统和移动生态系统之间的界限。正如技术不断演进,我们可以期待着更多的创新和发展,为用户带来更加便捷和多样化的应用体验。这一技术的推广和应用将继续推动数字科技的发展,塑造着未来的数字生活。QtGroup在提及2023年有桌面端应用程序开发热

【微服务实战之Docker容器】第四章-【微服务实战之Docker容器】第三章-镜像仓库

系列文章目录【微服务实战之Docker容器】第一章-下载及安装文章目录系列文章目录坑:容器卷记得加入以下命令配置是个啥?能干啥?基本的命令读写规则映射添加说明卷的继承和共享坑:容器卷记得加入以下命令配置--privileged=trueDocker挂载主机目录访问如果出现cannotopendirectory.:Per

第24章_瑞萨MCU零基础入门系列教程之内部温度传感器-TSN

本教程基于韦东山百问网出的DShanMCU-RA6M5开发板进行编写,需要的同学可以在这里获取:https://item.taobao.com/item.htm?id=728461040949配套资料获取:https://renesas-docs.100ask.net瑞萨MCU零基础入门系列教程汇总:https://b

通过 Helm Chart 部署 Easysearch

Easysearch可以通过Helm快速部署了,快来看看吧!Easysearch的Chart仓库地址在这里https://helm.infinilabs.com。使用Helm部署Easysearch有两个前提条件:cert-managerlocal-path我们先按照Chart仓库的说明来快速部署一下。~helmrep

LLM(二)| LIMA:在1k高质量数据上微调LLaMA1-65B,性能超越ChatGPT

本文将介绍在Lit-GPT上使用LoRA微调LLaMA模型,并介绍如何自定义数据集进行微调其他开源LLM监督指令微调(SupervisedInstructionFinetuning)什么是监督指令微调?为什么关注它?目前大部分LLM都是decoder-only,通常是续写任务,有时候未必符合用户的需求,SFT是通过构造

锐捷交换机vlan隔离(wifi段仅能访问外网,和内网隔离)

因为公司的wifi段,未做隔离,无意间上了网,发现能访问内网网段,这里内网是10、20段,管理网段是100段,于是做了和内网的vlan隔离。拓朴如下,所有vlan的网关都起在核心上,核心上起了DHCP,分配wifi段为80段。所有交换机通过trunk连接。要求把80段和内网的其它网段隔离开,不让它访问:在锐捷核心上配置

深度学习归一化原理及代码实现(BatchNorm2d,LayerNorm,InstanceNorm,GroupNorm)

文章目录概述形式原理理解源代码实现1.BatchNorm2d2.LayerNorm3.InstanceNorm4.GroupNorm概述本文记录总结pytorch中四种归一化方式的原理以及实现方式。方便后续理解和使用。本文原理理解参考自https://zhuanlan.zhihu.com/p/395855181形式四种

热文推荐