Modbus 地址
通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master 协议库把标准的Modbus 地址映射为所谓 Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址:
00001 - 09999:数字量输出( 线圈)
10001 - 19999:数字量输入(触点)
30001 - 39999:输入数据寄存器(通常为模拟量输入)
40001 - 49999:数据保持寄存器
Modbus Master 协议库支持的功能
为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:
表 1. 需要从站支持的功能
Modbus 地址 | 读/写 | Modbus 从站须支持的功能 |
---|---|---|
00001 - 09999 数字量输出 | 读 | 功能 1 |
写 | 功能 5:写单输出点 功能 15:写多输出点 | |
10001 - 19999 数字量输入 | 读 | 功能 2 |
写 | - | |
30001 - 39999 | 读 | 功能 4 |
写 | - | |
40001 - 49999 保持寄存器 | 读 | 功能 3 |
写 | 功能 6:写单寄存器单元 功能 16:写多寄存器单元 |
Modbus 地址和 S7-200 SMART 存储区地址的映射
S7-200 SMART 通过 Modbus Master 和 Slave 协议库通信时,Modbus 地址和 S7-200SMART CPU内存储区地址的 映射关系都类似。
Modbus 保持寄存器地址映射举例:
Modbus 保持寄存器地址 4000112 344000256 78400039A BC | S7-200 SMART 存储区字寻址 VW20012 34VW20256 78VW2049A BC | S7-200 SMART 存储区字节寻址 VB20012VB20134VB20256VB20378VB2049AVB205BC |
Modbus 数字量地址映射举例:
位地址(0xxxx 和 1xxxx)数据总是以字节为单位打包读写。第一个字节中的Zui低有效位对应 Modbus地址的起始地址。如下图所示:
图6 . 数字量地址映射举例
Modbus RTU 主站例程
为了更好地理解 Modbus 主站的编程,可参考下面的轮询例程。
注意:
1. 该例程使用 STEP 7-Micro/WIN SMART 编写,针对端口0。
2. 该例程仅访问一个从站,多个MBUS_MSG指令轮询执行,若访问不同的从站,可通过改变从站地址来实现。
Modbus RTU 主站指令库应用例程