跳到主要内容

Siemens S7

读取 Siemens S7 PLC 的 I、Q、M 或 DB 区。先向 PLC 工程人员确认 IP、CPU 型号、机架与槽号,以及一个允许读取的地址和类型。

先读一个 DB 变量​

以下以 DB1 字节偏移 0 的 Int16 变量为例。DB 块与变量必须已经存在,不能照抄地址后期待 PLC 自动创建它。

  1. 打开“开发配置 → 采集配置”,新建 TCP 客户端通道,远程地址填 PLC的IP:102 并保存。
  2. 在通道下新增设备,采集插件选择“Siemens S7”。
  3. “PLC类型”选择实际型号,不要把默认的 S200 留给 S1200 或 S1500 使用。
  4. 填写项目要求的 Rack、Slot;LocalTSAP 没有特殊连接要求时先保持默认。执行间隔先用 1000 毫秒,保存并启用设备。
  5. 新增变量,名称填 TestValue,寄存器地址填 DB1.0,数据类型选 Int16,保存并启用。
  6. 在变量列表查看在线状态和当前值,与 PLC 在线监视值对比。读到正确值后再添加其余地址。

S7-1200/1500 的 PLC 侧还需要允许相应的远程访问,按绝对地址读取的 DB 不能使用优化块访问。请 PLC 工程人员按实际 CPU 和 TIA 版本检查,不要为联调直接关闭所有保护。参见 Siemens 远程访问设置和 DB 访问限制。

常见地址怎么填​

PLC 点位网关地址数据类型
DB1 第 0 字节起的有符号 16 位整数DB1.0Int16
DB1 第 2 字节起的 32 位浮点数DB1.2Float
DB1 第 6 字节第 0 位DB1.6.0Boolean
M 区第 0 字节第 1 位M0.1Boolean

地址指定起点,数据类型决定读多少字节。DB1.2 中的 2 是字节偏移,不是“第 2 个变量”。

支持的通道和数据类型​

通道类型配置前检查
TCP 客户端确认设备 IP、端口和网关到设备的网络可达性。

可选数据类型: Boolean、Byte、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double、String、Decimal

插件参数​

Siemens S7 只使用 TCP 客户端通道,不填写串口参数。连接超时、重试和并发先保持默认,公共设置见采集配置。

协议参数​

参数说明
PLC类型选择实际 CPU 型号。默认 S200 不适用于所有 S7 PLC。
RackCPU 所在的机架号,默认 0;按 PLC 项目填写。
SlotCPU 模块所在的槽位号,默认 0;按 PLC 项目填写,不是网口编号。
LocalTSAP本地 TSAP 连接标识,默认 0。有专用连接要求时按 PLC 连接资源配置填写。
最大打包长度默认 200。当前 S7 读取计划不会将此值直接作为每个请求的跨度上限;缩小该值后仍需观察实际请求。
读写超时等待协议应答的时间,单位毫秒;与采集执行间隔分别设置。
帧前时间发送请求前的等待时间,单位毫秒;增加后会延长一轮读取。
数据解析顺序按 PLC 的实际字节布局选择。可用已知的 UInt32 源值逐项对照,不能只凭数值大小判断。
字符串反转字节字当前 S7 采集连接不应用这个开关;固定 ASCII 源 41 42 31 32 仍按 AB12 读取。不要依赖此项修正文本布局。
失败重试次数通信失败后的重试设置;不解决 DB 越界、权限或类型错误。
读写占空比、写优先属于公共采集调度设置,说明见采集执行策略。

“PLC类型”选项为 S200、S200Smart、S300、S400、S1200 和 S1500。Rack、Slot 和 LocalTSAP 会参与重新建立 S7 会话,修改后需重新启用设备。

LocalTSAP=0 使用型号默认值。当前非零整数与线上两字节标识存在取值差异,例如填写十进制 258 不能保证发出 01 02,应在握手消息中核对 Calling TSAP。没有专用连接要求时使用默认值;不要照搬其他项目的特殊整数。

协商 PDU 决定本次会话可用的协议数据范围,与“最大打包长度”分别观察。主站表单没有独立的 PduLength 或 ConnectionType 输入项。型号切换和重新握手也不能代替真实 PLC 的访问权限、连接资源和点位布局检查。

地址规则​

  • S7协议寄存器地址格式
  • Txxxxx Timer寄存器,例如T100/T100.1
  • Cxxxxx,Counter寄存器,例如C100/C100.1
  • AIxxxxx,AI寄存器,例如AI100/AI100.1
  • AQxxxxx,AQ寄存器,例如AQ100/AQ100.1
  • Ixxxxx,I寄存器,例如I100/I100.1
  • Qxxxxx,Q寄存器,例如Q100/Q100.1
  • Mxxxxx,M寄存器,例如M100/M100.1
  • DBxxxxx,DB寄存器,例如DB100.1/DB100.1.1
  • 宽字符串在地址前加 W=true;,例如 W=true;DB1.0;不加时按普通字符串解析。

DB 地址中的第一个数字是 DB 块号,后面的数字是字节偏移;最后再写 .0~.7 才表示位号,例如 DB100.1 为 DB100 的第 1 字节,DB100.1.1 为该字节的第 1 位。V 区等价于 DB1。

数组与字符串长度​

需要读取的内容填写方式与检查方法
一个数值采集变量的数组长度填 0,表示标量;调试面板读取数量填 1,表示读取一个元素。
三个连续 Int16起点如 DB1.600,采集变量数组长度填 3。占用 6 字节,源中连续三个值应分别返回。
固定四字节 ASCII类型选 String,地址如 DB1.600;len=4;encoding=ascii,数组长度保持标量。源 41 42 31 32 应读到 AB12。
UTF-8 文本len 按字节预留,例如“网关”占 6 个 UTF-8 字节;不能按两个汉字填 2。
S7 STRING使用与 PLC 一致的容量和当前长度头,可在地址中指定 vsl=true;encoding=ascii。头部不是文本内容,S200Smart 的布局需单独核对。
S7 WSTRING按实际大端 UTF-16 布局填写,例如 W=true;DB1.600;encoding=bigendianunicode,并核对四字节头及实际范围。W=true 选择宽字符串结构,不会自动纠正错误编码。采集与调试直接读的头部校验不同,小容量 WSTRING 在调试中可能被拒绝;先比较原始头与采集值。

类型决定每个元素的占用:Int16 为 2 字节、Float 为 4 字节、Double 为 8 字节、Decimal 为 16 字节。Decimal 采用网关转换器的十六字节表示,不能当成 PLC 的普通 REAL 或 LREAL。PLC 工程定义为 REAL/LREAL 时应分别使用 Float/Double。

特殊方法​

方法用途参数
ReadWriteDateAsync读取或写入 S7 日期值。address,可选 value
ReadWriteDateTimeAsync读取或写入 S7 日期时间值。address,可选 value

读取时不填写值;写入时只使用现场允许的安全点位。

在变量编辑器选择日期特殊方法后,寄存器地址改为方法参数的 JSON 数组,例如读取 DATE 可填 ["DB1.700"]。DATE 是自 1990-01-01 起的天数;大端源字节 00 01 对应 1990-01-02。DATE_AND_TIME 使用八字节 BCD 日期时间布局,不能按普通整数或文本解释。切回普通点位时,应清除特殊方法并恢复普通地址、类型和数组长度。

设备调试​

进入“开发配置 → 采集配置”,选择当前设备后点击“更多功能”并打开“调试”。

功能作用
读写按 S7 地址读取或写入测试值。写入前确认 DB/存储区和现场安全。
消息查看 S7 会话、请求、响应和错误状态,用于核对机架、插槽、地址和数据长度。

读写​

Siemens S7 读写

  1. 打开“读写”,填入已确认存在的地址,例如 DB1.0。
  2. 选择与 PLC 一致的数据类型,本例为 Int16,读取数量填 1。
  3. 点击“读取”,核对返回值;失败时查看错误消息和“消息”页签。

不要点击“写入”来验证读取配置。写入会修改 PLC 数据,必须另行确认地址和现场安全。

消息​

Siemens S7 消息

查看设备收发消息和协议日志,定位报文格式、连接和解析问题。

核对会话、布局和写入​

  1. 连接建立后先查看“消息”中的握手结果;PLC 型号、Rack、Slot、LocalTSAP 修改后,应确认已重新建立会话。
  2. 从一个已知的 Int16 开始,再分别加入位、32 位数、数组和字符串。新增地址前按实际字节数预留范围,避免浮点数和相邻变量重叠。
  3. 连续点位使用相同的已知源数据,对比当前值与原始响应,确认字节序。改变数据类型会改变解释方式,不会改变 PLC 存储内容。
  4. 批量读取失败时先拆成单点,区分某个地址越界与整条连接失败;组包和 PDU 受协商上限约束。
  5. 安全测试点写入后,先看逐点写入结果,再通过独立 S7 客户端或 PLC 在线监视回读。网关采集显示的结果也应在后续周期更新。

写请求返回、写后检查和周期采集分别有时间窗口。读写超时是等待应答的上限,执行周期是采集调度间隔,两者调整方法见采集执行策略。

没读到正确值时​

现象先检查
无法连接IP、102 端口、PLC 型号、Rack/Slot 及 PLC 连接资源
能连接但 DB 读取失败DB 是否存在、偏移是否越界、访问权限及优化块设置
值不正确字节偏移、数据类型和字节序,不要按变量序号填写地址
宽字符串乱码地址是否带 W=true;,类型、数组长度与 PLC 字符串布局是否一致
特殊方法失败参数、用户权限及 PLC 是否允许当前操作;不要反复尝试写入或控制

相关操作​

  • 采集配置:查看通道、设备和公共变量配置。
  • 插件索引:查找其它采集或数据转发插件。