使用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 或 02 | 00001(线圈)或 10001(离散输入) | M0.0 → 00001(线圈) |
关键点:
-
地址偏移:
-
Modbus 地址采用 1-based 索引(从 1 开始),而 PLC 内部地址是 0-based(从 0 开始)。
-
例如:PLC 的
VW0
(V 区字地址 0)对应 Modbus 地址40001
。
-
-
数据类型:
-
字(Word):如
VW0
、VW2
等,每个字占 2 字节,对应 Modbus 保持寄存器。 -
位(Bit):如
I0.0
、Q0.1
等,对应 Modbus 线圈或离散输入。
-
二、如何确定起始地址和寄存器数量?
方法 1:通过 PLC 编程软件(STEP 7-Micro/WIN SMART)
-
打开 PLC 程序:
-
在编程软件中查看程序中使用的 V 区、I 区、Q 区 的地址。
-
例如:若程序中使用了
VW100
存储数据,则对应 Modbus 地址为40001 + (100/2) = 40051
(因为VW100
是字地址,每个字占 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 区数据
-
假设需要读取 PLC 中
VW100
开始的 2 个寄存器(即VW100
和VW102
): -
Modbus 地址:40051(对应
VW100
) -
协议帧地址:50(十进制)→ 0x0032(十六进制)
-
寄存器数量:2 → 0x0002(十六进制)
字段 | 值(十六进制) | 说明 |
---|---|---|
设备地址 | 0x01 | 从站地址(假设为1) |
功能码 | 0x03 | 读保持寄存器 |
起始地址高字节 | 0x00 | 协议帧地址高字节 |
起始地址低字节 | 0x32 | 协议帧地址低字节 |
寄存器数量高字节 | 0x00 | 读取2个寄存器 |
寄存器数量低字节 | 0x02 | |
CRC 低字节 | 0x45 | 示例值(需实际计算) |
CRC 高字节 | 0x87 |
四、注意事项
-
地址偏移问题:
-
Modbus 协议地址从 1 开始,而 PLC 内部地址从 0 开始,需注意转换。
-
-
字节顺序:
-
西门子 PLC 默认使用 大端格式(高位在前),确保程序解析时一致。
-
-
通信参数匹配:
-
波特率(如 9600、19200)、数据位(8)、停止位(1)、校验位(无/奇/偶)必须与 PLC 设置一致。
-
-
PLC 程序中的 Modbus 从站配置:
-
需在 PLC 程序中调用
MBUS_SLAVE
指令,并启用 Modbus 从站功能。
-
五、调试工具推荐
-
Modbus 调试工具:
-
使用
Modbus Poll
或QModMaster
等工具验证 PLC 响应,确认地址和寄存器数量是否正确。
-
-
PLC 数据监控:
-
在 STEP 7-Micro/WIN SMART 中监控 V 区数据,确保写入的值能被正确读取。
-
六、常见问题
-
无响应:
-
检查物理连接(RS485 接线是否正确,A/B 线是否反接)。
-
确认 PLC 的 Modbus 从站功能已启用。
-
-
CRC 校验错误:
-
检查 CRC 计算算法是否正确(西门子使用标准 Modbus CRC16)。
-