modbus 仿真软件
- modbus slave: 用作 modbus 服务器(也叫做modbus从站), 通常用于仿真PLC设备.
- modbus poll: 用作 modbus 客户端(也叫做modbus主站), 用于仿真上位机程序, 通常使用它在现场验证PLC设备的modbus通讯是否OK
理解 modbus 寻址
modbus 分4个数据区, 实际因为第4区可读可写, 同时按16个bit存储, 使用非常方便, 所以实际项目一般仅用第4区.
modbus 每个区的理论地址空间是 65536 个, 该寻址空间对于实际PLC设备来讲太大了, 所以PLC厂商一般采用的 9999 个地址空间, 也有仅仅提供 999 个地址空间, 这个地址通常叫做modbus协议地址, 简称协议地址, 也叫做modicon 地址(modicon公司是modbus协议的建立者, 归属施耐德).
各个功能区说明:
- 0区, 即线圈(Coils), 只读, 每个地址1个bit, PLC厂商支持的协议地址区间: 00001 ~ 09999
- 1区, 即离散量输入(Discrete input),可读写, 每个地址1个bit, PLC厂商支持的协议地址区间: 10001 ~ 19999
- 3区, 输入寄存器(Input registers), 只读, 每个地址16个bit, PLC厂商支持的协议地址区间: 30001 ~ 39999
- 4区, 保持寄存器(Holding registers), 可读写, 每个地址16个bit, PLC厂商支持的协议地址区间: 40001 ~ 49999
4区的各种地址叫法:
- 协议地址(五码), 即 modicon 地址, 首码为功能码, 逻辑地址从1开始计, 有效范围为: 40001 ~ 49999
- 协议地址(四码), 即 modicon 地址, 首码为功能码, 逻辑地址从1开始计, 有效范围为: 4001 ~ 4999
- 协议地址(六码): 即 modicon 地址, 首码为功能码, 逻辑地址从1开始计, 有效范围为: 400001 ~ 465536.
- 寄存器地址, 即首码不是功能码, 而且从0开始计, 如保持寄存器 0002, 对应的协议地址为 40003
- NMobus 类库使用的是寄存器地址, 公式 = PLC 地址(五码) - 40001
PLC 厂商说明书往往提供地址名称和Modbus协议地址, 使用 NMobus 类库编程时候, 我们需要将其转成寄存器地址,
对应关系:
如果MB_SLAVE的MB_HOLD_REG=P#DB1.DBX0.0 WORD 5,则DB1.DBW0对应的modbus地址是40001,DB1.DBW2对应40002,DB1.DBW4对应40003,DB1.DBWn对应40001+n/2(n为偶数)。反过来的公式是:4xxxx 对应DB1.DBWm(m=2 x (xxxx-1))。
下图为西门子 S1200 的地址:
网络资料
- S7-1200 Modbus TCP 通信服务器指令块 MB_SERVER
- Modbus 协议图文详解
- Modbus常用功能码解释及示例(2)