以下是西门子S7-1500 PLC的Modbus地址对应软元件表,涵盖功能码、地址范围、PLC内部软元件映射关系及关键说明,适用于Modbus RTU和Modbus TCP通信:

西门子S7-1500 Modbus地址映射表

功能码 地址范围 功能描述 软元件符号(PLC内部) 总数量 数据类型 协议支持 说明
0x01 00001-065536 读线圈状态(输出) Q0.0 - Q8191.7 65536位 BOOL RTU/TCP 映射到输出过程映像区(Q区),每地址对应1位,支持最大8192字节(65536位)
0x05 00001-065536 写单个线圈 Q0.0 - Q8191.7 65536位 BOOL RTU/TCP 单地址强制输出ON/OFF,与Q区直接映射,地址偏移量为0(00001=Q0.0)
0x0F 00001-065536 写多个线圈 Q0.0 - Q8191.7 65536位 BOOL RTU/TCP 批量写入线圈,一次最多写入1968位(246字节),需指定起始地址和数量
0x02 10001-165536 读离散输入状态 I0.0 - I8191.7 65536位 BOOL RTU/TCP 映射到输入过程映像区(I区),每地址对应1位,反映物理输入点状态
0x03 40001-465536 读保持寄存器 DB.DBW0 - DB.DBW131070 65536字 INT/DINT/REAL RTU/TCP 映射到用户定义DB块(非优化访问),每字地址对应16位数据,支持32位/64位数据拆分
0x06 40001-465536 写单个保持寄存器 DB.DBW0 - DB.DBW131070 65536字 INT/DINT/REAL RTU/TCP 单地址写入16位数据,32位数据需分两次写入(如40001+40002对应一个DINT)
0x10 40001-465536 写多个保持寄存器 DB.DBW0 - DB.DBW131070 65536字 INT/DINT/REAL RTU/TCP 批量写入寄存器,一次最多写入123个字(246字节),适用于大数据块传输
0x04 30001-332768 读输入寄存器 IW0 - IW65534 32768字 INT/REAL RTU/TCP 映射到模拟量输入模块(如SM 1531),每字对应1个模拟量通道(16位原始值)

关键说明

  1. 地址编码规则

    • Modbus地址采用“类型码+偏移量”格式:
      • 0xxxx:线圈(输出Q区),1xxxx:离散输入(输入I区),3xxxx:输入寄存器(模拟量输入),4xxxx:保持寄存器(DB块)。
    • 地址偏移计算:Modbus地址 = 实际偏移量 + 1(如40001对应偏移量0,即DB*.DBW0)。
  2. DB块配置要求

    • 保持寄存器(4xxxx)必须映射到非优化访问的DB块(在DB属性中取消“优化的块访问”)。
    • 通过MB_SERVER指令的MB_HOLD_REG参数指定映射范围,例如P#DB10.DBX0.0 WORD 1000表示40001对应DB10.DBW0,41000对应DB10.DBW1998。
  3. 数据类型映射

    • 16位数据(INT/UINT):直接对应1个Modbus字地址(如40001=DB1.DBW0)。
    • 32位数据(DINT/REAL):占用连续2个Modbus字地址(如40001+40002=DB1.DBD0)。
    • 64位数据(LINT/LREAL):占用连续4个Modbus字地址。
  4. 协议差异

    • Modbus RTU:通过CM 1541(RS485模块)实现,支持1200m通信距离,波特率最高115200bps,最多32个从站。
    • Modbus TCP:通过PROFINET接口直接实现,地址格式省略前导码(如40001直接写为1),支持多主站同时访问(最多16个客户端)。
  5. 扩展能力

    • S7-1500支持最大8192字节的I/Q区(65536位),远超S7-1200,适用于大规模IO场景。
    • 保持寄存器可映射到多个DB块(如DB1、DB2...),通过MB_SERVER的“地址偏移”参数区分(需在TIA Portal中配置)。
  6. 兼容性注意

    • 第三方主站可能采用“0基地址”(如40001被识别为40000),需在通信配置中设置“地址偏移量=1”修正。
    • 模拟量输入寄存器(3xxxx)的数值需通过PLC内部 scaling(如SCALE_X指令)转换为工程值(如0-10V对应0-100.0)。

配置示例

  • 读取保持寄存器(32位浮点数)
    Modbus地址:40001-40002 → PLC变量:DB5.DBD0(REAL类型) → 功能码0x03,读取长度2字。

  • 写入多个线圈
    Modbus地址:00010-00020 → PLC变量:Q1.2-Q2.4 → 功能码0x0F,起始地址10,数量11位。

通过此表可快速实现S7-1500与第三方设备(如HMI、变频器、仪表)的Modbus通信配置,实际应用需结合TIA Portal的硬件组态和MB_SERVER/MB_CLIENT指令参数调整。