使用Modbus协议与西门子 S7-200 SMART PLC 通信

一、S7-200 SMART 的 Modbus 地址映射规则

S7-200 SMART 作为 Modbus 从站时,其存储区与 Modbus 地址的对应关系如下:

PLC 存储区Modbus 功能码Modbus 地址范围示例
V 区(变量存储区)03 (读保持寄存器)40001 开始VW0 → 40001,VW2 → 40002
I 区(输入映像区)02 (读离散输入)10001 开始I0.0 → 10001,I0.1 → 10002
Q 区(输出映像区)01 (读线圈)00001 开始Q0.0 → 00001,Q0.1 → 00002
M 区(标志位)01 或 0200001(线圈)或 10001(离散输入)M0.0 → 00001(线圈)
关键点:
  1. 地址偏移

    • Modbus 地址采用 1-based 索引(从 1 开始),而 PLC 内部地址是 0-based(从 0 开始)。

    • 例如:PLC 的 VW0(V 区字地址 0)对应 Modbus 地址 40001

  2. 数据类型

    • 字(Word):如 VW0VW2 等,每个字占 2 字节,对应 Modbus 保持寄存器。

    • 位(Bit):如 I0.0Q0.1 等,对应 Modbus 线圈或离散输入。


二、如何确定起始地址和寄存器数量?

方法 1:通过 PLC 编程软件(STEP 7-Micro/WIN SMART)
  1. 打开 PLC 程序

    • 在编程软件中查看程序中使用的 V 区、I 区、Q 区 的地址。

    • 例如:若程序中使用了 VW100 存储数据,则对应 Modbus 地址为 40001 + (100/2) = 40051(因为 VW100 是字地址,每个字占 2 字节)。

  2. Modbus 从站配置

    • 在 PLC 的 系统块 中配置 Modbus 通信参数(波特率、数据位、校验位等),确保与主站设置一致。

方法 2:直接地址换算公式
  • 对于 V 区(保持寄存器)

    Modbus 地址 = 40001 + (V区字地址 / 2)
    • 示例:VW200 的 Modbus 地址为 40001 + (200/2) = 40101

  • 对于 I/Q/M 区(位地址)

    Modbus 地址 = 10001 + (字节地址 * 8 + 位号)   // 输入映像区(功能码 02)
    Modbus 地址 = 00001 + (字节地址 * 8 + 位号)   // 输出映像区(功能码 01)
    • 示例:I1.5 对应 Modbus 地址 10001 + (1*8 + 5) = 10014


三、示例:读取 V 区数据

  1. 假设需要读取 PLC 中VW100 开始的 2 个寄存器(即 VW100 和 VW102):

  2. Modbus 地址:40051(对应 VW100

  3. 协议帧地址:50(十进制)→ 0x0032(十六进制)

  4. 寄存器数量:2 → 0x0002(十六进制)

字段值(十六进制)说明
设备地址0x01从站地址(假设为1)
功能码0x03读保持寄存器
起始地址高字节0x00协议帧地址高字节
起始地址低字节0x32协议帧地址低字节
寄存器数量高字节0x00读取2个寄存器
寄存器数量低字节0x02
CRC 低字节0x45示例值(需实际计算)
CRC 高字节0x87

四、注意事项

  • 字节顺序

西门子 PLC 默认使用 大端格式(高位在前),确保程序解析时一致。

  • 通信参数匹配

波特率(如 9600、19200)、数据位(8)、停止位(1)、校验位(无/奇/偶)必须与 PLC 设置一致。

  1. PLC 程序中的 Modbus 从站配置

    • 需在 PLC 程序中调用 MBUS_SLAVE 指令,并启用 Modbus 从站功能。


五、调试工具推荐

  1. Modbus 调试工具

    • 使用 Modbus Poll 或 QModMaster 等工具验证 PLC 响应,确认地址和寄存器数量是否正确。

  2. PLC 数据监控

    • 在 STEP 7-Micro/WIN SMART 中监控 V 区数据,确保写入的值能被正确读取。


六、常见问题

  • 无响应

    • 检查物理连接(RS485 接线是否正确,A/B 线是否反接)。

    • 确认 PLC 的 Modbus 从站功能已启用。

  • CRC 校验错误

    • 检查 CRC 计算算法是否正确(西门子使用标准 Modbus CRC16)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值