modbus 协议地址

modbus 协议类型

modbus 协议属于应用层协议蔟, 由主站发出请求, 从站负责应答, 具体可以分为如下几种实现:

  • modbus ASCII 协议, 用的较少, 底层只能走串口通讯, 采用ASCII编码, 传输速率通常为 2.4kbps.
  • modbus RTU 协议, 底层走的是串口通讯, 通过RS-485或RS-232接口, 主站通过广播的方式+slaveId识别modbus设备, 最多支持 247 个从站, 即slaveId编号从1~247. 通讯速率较低, 通常在 192.kbps以下, 容易收到电磁干扰, 另外通讯没有认证和加密,安全性较差
  • modbus TCP/IP 协议,底层为网络协议,通过IP和port识别modbus设备, 它克服了 modbus RTU 协议的很多缺点.
  • modbus RTU over TCP/IP, 是将原始的modbus RTU协议通过TCP/IP网络实现,属于一种“模拟”,性能略劣于原生modbus TCP。而modbus TCP/IP是原生支持modbus TCP协议的,性能和可靠性较高,但实现相对简单。

modbus 仿真软件

  • modbus slave: 用作 modbus 服务器(也叫做modbus从站), 通常用于仿真PLC设备.
  • modbus poll: 用作 modbus 客户端(也叫做modbus主站, 主动一方为主站), 用于仿真上位机程序, 通常使用它在现场验证PLC设备的modbus通讯是否OK
  • 使用说明和下载地址: https://blog.csdn.net/u012749085/article/details/125270869

理解 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 的地址:

网络资料

posted @ 2023-05-09 22:21  harrychinese  阅读(852)  评论(0编辑  收藏  举报