The Siemens S7 Communication - Part 2 Job Requests and Ack Data

软件: 西门子
全方位数据报表
许可分析

许可分析

免费体验
识别闲置、及时回收
许可优化

许可优化

免费体验
多维度智能分析
许可分析

许可分析

免费体验
减少成本、盘活许可
许可优化

许可优化

免费体验

本文系列深入介绍了西门子S7协议,第一部分详细阐述了通用通信场景和数据包结构,本部分进一步探讨了作业请求和确认数据消息的目的和内部结构。这些消息类型被放在一起讨论,因为它们非常相似,通常每一个作业请求都会导致确认数据回复。S7协议数据单元(PDU)和一般协议头的结构在之前的部分有解释。然而,参数头部是与消息类型特定的,针对作业和确认数据消息,它以功能代码开头。其余字段的结构取决于这个值。功能代码决定了消息的目的,并作为后续讨论的基础。

开始通信


[0xF0] Pcap: S300 SETUP COMMUNICATION

在每会话开始并且可以交换其他消息之前,此消息对(作业和确认数据响应)被执行,用于协商确认队列长度和最大PDU长度,双方声明支持的值。确认队列的长度决定了可以同时启动多少个并行作业而不需要确认。PDU和队列长度字段均以大端字节序表示。参数头部如下图所示:

欢迎浏览: The Siemens S7 Communication - Part 2 Job Requests and Ack Data


S7验证与保护

[0x04/0x05] Pcaps: S300 AUTHENTICATION, S300 READ VARIABLE SIMPLE, S300 READ/WRITE VARIABLE (MULTIPLE VARIABLE READS AND WRITES WITH SIMPLE ADDRESSING) S400 READ/WRITE VARIABLE DB (MULTIPLE VARIABLE READS AND WRITES WITH DATABASE ADDRESSING)

变量读取和写入操作通过指定内存区域、地址(偏移)和大小或类型来执行。在深入探讨协议细节之前,我想简要介绍一下S7的地址模型。如同之前提到的,通过指定地址来访问变量。这个地址由三个主要属性组成:内存区域、符号名等。每个区域具有特定的访问权限和描述:

1. Merker: 包括任意标记变量或标志寄存器。

2. 数据块: 最常见的数据存储区域,模块中的数据以数据库形式存储并编号,是地址的一部分。

3. 输入: 数字和模拟输入模块值,映射到内存中。


4. 输出: 映射到内存中的输出。


5. 计数器: PLC程序中使用的计数器值。


6. 定时器: PLC程序中使用的定时器值。


地址X XXX 2.1 访问数据块 123 的第三字节中的第二个位。


读/写变量部分

在本节开始,事情变得复杂。强烈建议在阅读本节时查看提供的pcaps(Wireshark2默认启用S7分解器)。数据读取和写入操作通过指定内存区域、地址(偏移)和大小或类型来执行。在深入探讨协议细节之前,我请稍等,让我们稍作一个小的偏离,介绍S7的地址模型,如前面所述,变量通过指定地址访问,此次地址由三个主要属性组成:

1. 内存区域: 数据块(DB)地址DB区域,存储设备不同功能所需的数据,这些数据块编号,是地址的一部分。

2. 输入: 数字和模拟输入模块值,映射到内存中。


3. 输出: 映射到内存中的输出。


4. 计数器: PLC程序中使用的计数器值。


5. 定时器: PLC程序中使用的定时器值。


一般规则

在谈论S7安全性时,通用规则是:如果您可以ping设备,则可以控制它。在此处需要特别注意S71200/1500系列设备,它们采用稍有不同的方法,保护层处理略有不同,发送至设备的密码长度显著较长,但同样是常量和可重放的。

一般格式

为了激活程序块或更新工厂程序,并最终确保设备正确执行所需的步骤,需要执行特定的读取任务。这些步骤包括读取存储设备的块,然后设置相关的参数,如块类型(OB、DB、FC、FB等)和具体位置(如DB123.X、I123、Q123等)。首先引入了名为“预计功率”的块类型识别系统,通过将块分类为在执行期间需要的类型(例如,组织块、数据块、功能块等),提高了数据处理的效率。

要讨论的格式

该格式依赖于正在使用的指定方式(例如,可以是根据内存位置的描述性方式,或通过使用预定义符号名称来访问特定变量的简化方式),这在细节上将不会特别详述。完整的请求/数据项结构将根据访问方式的不同进行逐步介绍。

结论文本摘要

简而言之,虽然这是一个比预想更长的文章,但它可能对某些读者有帮助。S7协议设计并不优秀。最初,它只是用于查询寄存器值,功能逐渐增加,导致其复杂化成为一个庞大的系统。它充满了不一致性、冗余,并且用户数据消息(UDM)的引入进一步加剧了这些问题。在尝试解析这种协议时,这些不一致性和设计缺陷变得更加明显(令人烦恼)。

Tl;dr 如果使用S7比喻为一辆车,它可能看起来像这样……

相关推荐

UMLChina公众号文章精选(20220227更新精选)
西门子200SMART(九)库
西门子PLC几种常见的通讯协议分享
西门子PLC s7-300出现通讯故障及远程维护办法
plc 400 与plc300和 300与300 以太网通讯的问题-工业支持中心-西门子中国
研究人员发现西门子工业控制器中的命令执行漏洞
西门子精智面板6AV2124-0GC01-0AX0详细概述
西门子低代码客户案例|旧貌换新颜,低代码激活老牌制衣企业创新力
C#上位机与西门子s7-200 Smart 网口通讯
python 读写西门子PLC 包含s7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...
西门子s7-1200系列PLC Modbus通讯资料
西门子PLC1200自由口通信
西门子PLC配KUKA机器人程序
西门子s7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)
西门子博途v16系统要求_西门子博途之所以不如三菱PLC直观易懂,就是因为你被它表象迷惑...
西门子触摸屏VBScript编程系列教程(3)——变量
Intouch2014无法自动启动西门子驱动DASSIDIRECT.EXE的原因及解决办法
西门子1200与变频器Modbus RTU通讯 西门子1200与变频器通讯
西门子200PLC软件的安装和使用
浅谈西门子840d主轴速度控制_从化区西门子676611AA104BS0维修型号齐全

最近推荐

Jira任务管理与禅道系统的对比
Fusion 360 for mac v1.8.3 苹果电脑版
美国网络攻击他国的程序,被中国研究员破解!45个国家遭黑客攻击
工程师2小时破解3G网络128位通讯加密方法
英伟达算法遭破解,RTX30系恢复100%挖矿算力:显卡降价结束了?
速查!安卓系统可能遭遇重大风险,两分钟可轻松破解锁屏
大众背后的网络故事
AMD强势回归 3A服务器平台“Fiorano”重装上阵
6小时与100万用户 微软的Outlook邮箱
一张图看懂《分布式存储发展白皮书2023》
index-foot-banner-pc index-foot-banner-phone

点击一下 免费体验万千客户信任的许可优化平台

与100+大型企业一起,将本增效

与100+大型企业一起,将本增效

申请免费体验 申请免费体验