西门子S7-200 SMART Modbus RTU寄存器地址映射完全指南

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 一、概述
  2. 2. 二、Modbus地址类型说明
  3. 3. 三、S7-200 SMART Modbus地址映射表
  4. 4. 3.1 数字量输出区(Q区)→ 0xxxx线圈
  5. 5. 3.2 数字量输入区(I区)→ 1xxxx离散输入
  6. 6. 3.3 模拟量输入区(AIW区)→ 3xxxx输入寄存器
  7. 7. 3.4 V存储区 → 4xxxx保持寄存器
  8. 8. 四、PLC从站配置步骤
  9. 9. 4.1 安装Modbus从站指令库
  10. 10. 4.2 调用MBUS_INIT指令初始化从站
  11. 11. 4.3 主轮询MBUS_SLAVE指令
  12. 12. 4.4 配置V存储区数据
  13. 13. 五、PLC主站配置与读取示例
  14. 14. 5.1 调用MBUS_CTRL指令初始化主站
  15. 15. 5.2 调用MBUS_MSG指令发起读写请求
  16. 16. 5.3 读取保持寄存器示例
  17. 17. 六、常见问题与排障指南
  18. 18. 6.1 通讯无响应,从站不回话
  19. 19. 6.2 读不到数据或数据不对
  20. 20. 6.3 数据乱码或数值不对
  21. 21. 6.4 偶发通讯失败
  22. 22. 6.5 Error错误代码说明
  23. 23. 七、总结
  24. 24. 八、相关链接

一、概述

S7-200 SMART PLC作为Modbus RTU主站或从站时,其内部存储区(I、Q、AIW、V)与Modbus标准地址之间有固定的映射关系。本文基于西门子官方技术文档,详细说明S7-200 SMART的Modbus地址映射规则,包含完整的地址对照表、配置步骤、通讯示例和排障指南。

S7-200 SMART支持两种Modbus工作模式:

  • Modbus RTUHauptstation(Master):主动发起通讯请求,读取或控制从站设备
  • Modbus RTUVon der Station(Slave):被动响应主站的读写请求

二、Modbus地址类型说明

Modbus协议定义了四种数据区域,每种区域有固定的地址范围和功能码:

Modbus地址区域 Funktionscode 读写属性 Datentyp 对应S7-200 SMART存储区
0xxxx(线圈) 01(读线圈)/ 05(写单线圈)/ 15(写多线圈) 读/写 位(1 bit) Q区数字量输出
1xxxx(离散输入) 02(Lesen Sie getrennte Eingabe) 只读 位(1 bit) I区数字量输入
3xxxx(输入寄存器) 04(Eingangsregister lesen) 只读 字(16 bit) AIW模拟量输入
4xxxx(保持寄存器) 03(Lesen Sie das Register)/ 06(写单寄存器)/ 16(写多寄存器) 读/写 字(16 bit) V存储区(可配置)

重要说明:Modbus地址采用1-based编号,即从1开始计数。而PLC内部地址通常是0-based,Beginn von 0。

三、S7-200 SMART Modbus地址映射表

3.1 数字量输出区(Q区)→ 0xxxx线圈

数字量输出Q区映射到Modbus的0xxxx线圈区域,支持读写操作。

ModbusAdresse S7-200 SMARTAdresse 说明
00001 Q0.0 Die0通道第0位
00002 Q0.1 Die0通道第1位
00003 Q0.2 Die0通道第2位
00004 Q0.3 Die0通道第3位
00005 Q0.4 Die0通道第4位
00006 Q0.5 Die0通道第5位
00007 Q0.6 Die0通道第6位
00008 Q0.7 Die0通道第7位
00009 Q1.0 Die1通道第0位
00010 Q1.1 Die1通道第1位
00011 Q1.2 Die1通道第2位
00012 Q1.3 Die1通道第3位
00013 Q1.4 Die1通道第4位
00014 Q1.5 Die1通道第5位
00015 Q1.6 Die1通道第6位
00016 Q1.7 Die1通道第7位
00017 Q2.0 Die2通道第0位
00018 Q2.1 Die2通道第1位
依次类推,每8个地址对应一个字节
00256 Q31.7 最大地址(最多支持32个字节输出)

计算公式:ModbusAdresse = 通道号 × 8 + 位号 + 1

Beispiel:要访问Q2.3,ModbusAdresse = 2×8 + 3 + 1 = 00020

Funktionscode

  • Lesen Sie den Zustand:Funktionscode01
  • Schreiben Sie eine einzelne Schleife.:Funktionscode05
  • Schreiben Sie mehrere Schleife.:Funktionscode15(0x0F)

Aufmerksamkeit

  • Q区地址映射是固定的,不需要额外配置
  • 实际可用的Q区数量取决于CPU型号和扩展模块
  • 如果硬件上不存在对应的Q点,读出来的值始终为0

3.2 数字量输入区(I区)→ 1xxxx离散输入

数字量输入I区映射到Modbus的1xxxx离散输入区域,只读。

ModbusAdresse S7-200 SMARTAdresse 说明
10001 I0.0 Die0通道第0位
10002 I0.1 Die0通道第1位
10003 I0.2 Die0通道第2位
10004 I0.3 Die0通道第3位
10005 I0.4 Die0通道第4位
10006 I0.5 Die0通道第5位
10007 I0.6 Die0通道第6位
10008 I0.7 Die0通道第7位
10009 I1.0 Die1通道第0位
10010 I1.1 Die1通道第1位
10011 I1.2 Die1通道第2位
10012 I1.3 Die1通道第3位
10013 I1.4 Die1通道第4位
10014 I1.5 Die1通道第5位
10015 I1.6 Die1通道第6位
10016 I1.7 Die1通道第7位
10017 I2.0 Die2通道第0位
10018 I2.1 Die2通道第1位
依次类推,每8个地址对应一个字节
10256 I31.7 最大地址(最多支持32个字节输入)

计算公式:ModbusAdresse = 10000 + 通道号 × 8 + 位号 + 1

Beispiel:要访问I3.5,ModbusAdresse = 10000 + 3×8 + 5 + 1 = 10030

Funktionscode:读离散输入用功能码02

Aufmerksamkeit

  • I区地址映射是固定的,不需要额外配置
  • 离散输入是只读的,主站不能写
  • 实际可用的I区数量取决于CPU型号和扩展模块

3.3 模拟量输入区(AIW区)→ 3xxxx输入寄存器

模拟量输入AIW区映射到Modbus的3xxxx输入寄存器区域,只读。

ModbusAdresse S7-200 SMARTAdresse 说明
30001 AIW0 Die1路模拟量输入
30002 AIW2 Die2路模拟量输入
30003 AIW4 Die3路模拟量输入
30004 AIW6 Die4路模拟量输入
30005 AIW8 Die5路模拟量输入
30006 AIW10 Die6路模拟量输入
30007 AIW12 Die7路模拟量输入
30008 AIW14 Die8路模拟量输入
30009 AIW16 Die9路模拟量输入
30010 AIW18 Die10路模拟量输入
依次类推,步长为2
30056 AIW110 Die56路模拟量输入(最大)

计算公式:ModbusAdresse = 30000 + AIW编号 / 2 + 1

Beispiel:要读取AIW20,ModbusAdresse = 30000 + 20/2 + 1 = 30011

Funktionscode:读输入寄存器用功能码04

Aufmerksamkeit

  • AIW是字寻址,每个AIW占2个字节,所以地址步长为1对应AIW步长2
  • 输入寄存器是只读的,主站不能写
  • 模拟量输入值范围通常是0-32767(单极性)或-32768-32767(双极性)
  • 实际可用的AIW数量取决于模拟量模块的路数

3.4 V存储区 → 4xxxx保持寄存器

V存储区的映射是可配置的,通过Modbus从站指令MBUS_INIT的两个参数定义:

  • HoldStart:保持寄存器区的起始VAdresse(如&VB1000)
  • MaxHold:保持寄存器区的字数(单位:字,即VW的数量)

映射规则

ModbusAdresse S7-200 SMARTAdresse 说明
40001 VW[HoldStart] Die erste保持寄存器
40002 VW[HoldStart + 2] Der zweite保持寄存器
40003 VW[HoldStart + 4] Der dritte保持寄存器
40004 VW[HoldStart + 6] Der vierte保持寄存器
依次类推,步长为2字节
400XX VW[HoldStart + 2 × (XX – 1)] DieXX个保持寄存器

完整示例:如果HoldStart = &VB1000,MaxHold = 100

ModbusAdresse V存储区地址 字节范围 说明
40001 VW1000 VB1000-VB1001 Die erste保持寄存器
40002 VW1002 VB1002-VB1003 Der zweite保持寄存器
40003 VW1004 VB1004-VB1005 Der dritte保持寄存器
40004 VW1006 VB1006-VB1007 Der vierte保持寄存器
40005 VW1008 VB1008-VB1009 Die fünfte保持寄存器
40100 VW1198 VB1198-VB1199 Der 100.保持寄存器(最后一个)

Funktionscode

  • Lesen Sie das Register:Funktionscode03
  • Schreiben eines einzelnen Registers:Funktionscode06
  • Schreiben mehrerer Register:Funktionscode16(0x10)

Aufmerksamkeit

  • V存储区映射是可配置的,通过MBUS_INIT指令的HoldStart和MaxHold参数设置
  • HoldStart必须指向VBAdresse,如&VB1000
  • MaxHold的单位是(VW),不是字节(VB)
  • 保持寄存器区域不能与PLC程序中已使用的V存储区冲突
  • 如果MaxHold设为100,则占用VB1000-VB1199共200个字节

四、PLC从站配置步骤

4.1 安装Modbus从站指令库

  1. Öffnen.STEP 7-Micro/WIN SMART编程软件
  2. 在指令树中找到「库」文件夹
  3. 如果没有Modbus Slave库,需要先导入:右键「库」→「导入库」→ AuswahlModbus Slave库文件
  4. 库文件通常在西门子官方网站下载,名称为「Modbus Slave」

4.2 调用MBUS_INIT指令初始化从站

在第一个扫描周期(SM0.1)调用MBUS_INIT指令,参数说明如下:

参数名 取值范围 说明
Mode 0 / 1 0=禁用ModbusVon der Station,恢复为普通自由口;1=aktiviert.ModbusVon der Station
Baud 1200-115200 Porter Rate,常用值:9600、19200、38400、115200
Parity 0 / 1 / 2 Prüfmethode:0=无校验,1=Seltsame Tests,2=Zufällige Prüfungen
Port 0 / 1 通讯端口:0=板载RS485口,1=信号板SB CM01的RS485口
SlaveAddr 1-247 Modbusvon der Station Adresse,同一总线不能重复
HoldStart &VBxxx 保持寄存器区起始V地址指针,如&VB1000
MaxHold 0-10000 保持寄存器区字数(单位:字),如100表示100个VW
Done BOOL 初始化完成标志位
Error BYTE 错误代码

4.3 主轮询MBUS_SLAVE指令

在主程序循环中,每个扫描周期都要调用MBUS_SLAVE指令:

  • 该指令负责处理Modbus主站发来的请求
  • 如果不调用,从站将无法响应主站
  • Parameter:Done(完成标志)、Error(错误代码)

4.4 配置V存储区数据

在HoldStart指定的V地址区存放要读写的数据:

  • 主站写过来的数据会存到这个区域
  • PLC程序从这个区域读取数据进行处理
  • 注意不要与程序中其他已使用的V地址冲突

五、PLC主站配置与读取示例

5.1 调用MBUS_CTRL指令初始化主站

在第一个扫描周期(SM0.1)调用MBUS_CTRL指令初始化ModbusHauptstation:

参数名 取值范围 说明
Mode 0 / 1 0=禁用ModbusHauptstation,1=aktiviert.ModbusHauptstation
Baud 1200-115200 Porter Rate,必须与从站一致
Parity 0 / 1 / 2 校验方式,必须与从站一致
Port 0 / 1 通讯端口:0=板载RS485,1=信号板
Timeout 1-32767 ms 等待从站响应的超时时间,建议1000ms
Done BOOL 初始化完成标志位
Error BYTE 错误代码

5.2 调用MBUS_MSG指令发起读写请求

MBUS_MSG指令用于发起一次Modbus读写请求:

参数名 取值范围 说明
First BOOL 首次执行脉冲,检测到上升沿时发起请求
Slave 1-247 von der Station Adresse
RW 0 / 1 0=读请求,1=写请求
Addr ModbusAdresse 要访问的ModbusAdresse,如40001表示读保持寄存器Die erste
Count 1-120 读写的寄存器/线圈数量
DataPtr &VBxxx 数据缓冲区指针,如&VB2000
Done BOOL 本次请求完成标志位
Error BYTE 错误代码

5.3 读取保持寄存器示例

假设要读取地址为1的从站设备的10个保持寄存器(40001-40010):

  1. First:用一个脉冲信号触发
  2. Slave:1
  3. RW:0(读)
  4. Addr:40001
  5. Count:10
  6. DataPtr:&VB2000

读取成功后,VB2000开始的20个字节中存放了10个寄存器的数据。

六、常见问题与排障指南

6.1 通讯无响应,从站不回话

  • 检查接线:RS485的A+和B-是否接反,这是最常见的错误
  • 检查参数一致性:主从站的波特率、Datenplatz、Stoppen Sie Platz、校验位必须完全一致
  • 检查从站地址:SlaveAddr是否正确,总线上不能有重复地址
  • 测量总线电压:A线(D+)应高于B线(D-)约200mV以上
  • 检查终端电阻:总线两端是否加了120Ω终端电阻(距离远时需要)
  • 检查PortParameter:是否选对了通讯端口(0或1)

6.2 读不到数据或数据不对

  • 检查地址格式:Modbus地址有1-based和0-based两种写法,注意区分
  • 检查HoldStart:确认保持寄存器起始地址设置是否正确
  • 检查MaxHold:确认保持寄存器数量是否足够
  • 检查地址范围:要读的地址是否在MaxHold定义的范围内
  • 检查字节序:32位数据的高低字顺序是否与主站匹配

6.3 数据乱码或数值不对

  • 检查数据格式:确认是16位整数、32位整数还是浮点数
  • 检查字节序:大端序(Big-Endian)和小端序(Little-Endian)是否一致
  • 检查字序:32位数据的高低字顺序是否正确
  • 检查缩放比例:是否需要乘以倍率(如0.1℃单位的要除以10)
  • 检查负数处理:负数是用补码表示的,注意有符号数和无符号数的区别

6.4 偶发通讯失败

  • 检查屏蔽线:RS485线是否用了屏蔽双绞线,屏蔽层是否单端接地
  • 检查总线长度:9600bps下最大1200米,115200bps下最大约100米
  • 检查从站数量:一条RS485总线最多挂32个从站(不带中继器)
  • 检查电磁干扰:通讯线是否与动力线平行走线,是否有干扰源
  • 检查超时设置:Timeout参数是否设得太小,适当调大试试

6.5 Error错误代码说明

错误代码 说明 解决方法
0 无错误
1 奇偶校验错误 检查校验位设置
2 波特率不支持 检查波特率参数
3 超时错误 检查接线、从站电源、超时设置
4 从站地址错误 检查SlaveAddrParameter
5 确认未收到 从站无响应,检查接线和参数
10 网关错误 检查网关配置

七、总结

S7-200 SMART的Modbus地址映射规则清晰明了:

  • 0xxxx线圈区域 → 对应Q区数字量输出,读写
  • 1xxxx离散输入区域 → 对应I区数字量输入,只读
  • 3xxxx输入寄存器区域 → 对应AIW模拟量输入,只读
  • 4xxxx保持寄存器区域 → 对应V存储区,可配置,读写

掌握这个映射关系,就能快速实现S7-200 SMART与第三方设备的Modbus RTUKommunikation。实际应用中,建议先用Modbus Poll等调试软件测试通讯,确认地址映射正确后再编写PLC程序。

八、相关链接

  • Modbus RTU通讯基础教程
  • ModbusFunktionscode ausführlich
  • 西门子S7-200 SMART Modbus主站配置实例
  • RS485总线接线规范
技术术语(共 9 个)—— Zum Erweitern klicken
Modbus RTU基于串行链路的ModbusVereinbarung,使用二进制编码和CRC-Test
RS485工业常用的差分串行通信标准,支持多点通信
FunktionscodeModbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
Register.Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
Porter Rate串行通信每秒传输符号数,Modbus RTU常用9600/19200
网关协议转换设备,如 Modbus RTU ↔ Modbus TCP
线圈Modbus位可读写数据,地址从00001开始
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— Zum Erweitern klicken
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Kategorie Weitere technische Informationen 字数 5490 字 · 阅读约 14 分钟 更新 2026-09-20 永久链接 https://www.modbus.cn/53051.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 keine Installation erforderlich,Mikro-Suche「Modbus-Debug-Assistent」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.