DOCA0091ZH-08

Modbus 功能

概述

Modbus 协议提供了在 Modbus 网络上读写数据的众多功能。Modbus 协议还提供了诊断和网络管理功能。

本节介绍由断路器处理的 Modbus 功能。

读功能

有以下读功能:

功能代码

子功能代码

名称

描述

3 (0x03)

读保持寄存器

读取 n 个输出或内部寄存器

4 (0x04)

读输入寄存器

读取 n 个输入寄存器

43 (0x2B)

14 (0x0E)

读取设备标识

读取从设备的标识数据

43 (0x2B)

15 (0x0F)

获取日期和时间

读取从设备的日期和时间

注: 寄存器数量 n 限制为 52(带有 MasterPact MicroLogic E 脱扣单元时)。

读寄存器的实例

下表展示了如何读取寄存器 1016 相 A (IA) rms 电流。寄存器 1016 的地址为 1016 - 1 = 1015 = 0x03F7。Modbus 从设备的 Modbus 地址为 47 = 0x2F。

主设备请求

从设备应答

字段名称

实例

字段名称

实例

Modbus 从设备地址

0x2F

Modbus 从设备地址

0x2F

功能代码

0x03

功能代码

0x03

要读取的寄存器地址(最高有效位)

0x03

数据长度(字节)

0x02

要读取的寄存器地址(最低有效位)

0xF7

寄存器数值(最高有效位)

0x02

寄存器数量(最高有效位)

0x00

寄存器数值(最低有效位)

0x2B

寄存器数量(最低有效位)

0x01

CRC(最高有效位)

0xXX

CRC(最高有效位)

0xXX

CRC(最低有效位)

0xXX

CRC(最低有效位)

0xXX

寄存器 1016(地址 0x03F7)的内容是 0x022B = 555。因此,相 A (IA) 的 rms 电流为 555 A。

获得日期和时间的示例

下表描述如何获得 Modbus 从设备的日期和时间。Modbus 从设备的 Modbus 地址为 47 = 0x2F。

主设备请求

从设备应答

字段名称

实例

字段名称

实例

Modbus 从设备地址

0x2F

Modbus 从设备地址

0x2F

功能代码

0x2B

功能代码

0x2B

子功能代码

0x0F

子功能代码

0x0F

保留

0x00

保留

0x00

日期和时间

请参阅 DATETIME 数据类型

设置日期和时间的示例

下表展示如何设置 Modbus 从设备日期和时间。Modbus 从设备的 Modbus 地址为47 = 0x2F,最新日期为 2014 年 10 月 2 日,最新时间为下午 2:32:03:500。

注: 利用广播模式(Modbus 从设备地址 = 0)设置所有 Modbus 从设备的日期和时间。

主设备请求

从设备应答

字段名称

实例

字段名称

实例

Modbus 从设备地址

0x2F

Modbus 从设备地址

0x2F

功能代码

0x2B

功能代码

0x2B

子功能代码

0x10

子功能代码

0x10

保留 1

0x00

保留 1

0x00

未使用

0x00

未使用

0x00

年份 = 2014

0x0E

年份 = 2014

0x0E

月份 = 10 月

0x0A

月份 = 10 月

0x0A

日期 = 2 日

0x02

日期 = 2 日

0x02

小时 = 14

0x0E

小时 = 14

0x0E

分钟 = 32

0x20

分钟 = 32

0x20

3 秒 500 毫秒

0x0DAC

3 秒 502 毫秒

0x0DAE

正常回应是应答该请求,在远程设备更新日期时间后返回。如果日期时间结构内容与正确的日期时间不符(即无效日期时间),则设备会将返回日期时间字段的数值设置为 0。

如果断开 24 Vdc 的电源,则不再刷新没有电池的 Modbus 从设备的日期和时间。因此在接通 24 Vdc 电源后,必须设置所有 Modbus 从设备的日期和时间。

另外,因为每个 Modbus 从设备都有时钟漂移,因此必须定期设置所有 Modbus 从设备的日期和时间。建议至少每 15 分钟设置一次。

分散保持寄存器读功能

提供了以下分散保持寄存器读功能:

功能代码

子功能代码

名称

描述

100 (0x64)

4 (0x04)

读取分散保持寄存器

读取 n 个非连续寄存器

n 的最大值为 100,但使用 MasterPact MicroLogic AE 脱扣单元时,建议 n 等于或小于 21。

借助分散保持寄存器读功能,用户可以:

  • 避免在只需要少数寄存器的情况下读取大量连续寄存器

  • 避免多次使用功能 3 和 4,以读取非连续寄存器

读取分散保持寄存器的示例

下表显示如何读取 Modbus 从设备寄存器 664(地址 0x0297)和寄存器 666(地址 0x0299)的地址。Modbus 从设备的 Modbus 地址为 47 = 0x2F.

主设备请求

从设备应答

字段名称

实例

字段名称

实例

Modbus 从设备地址

0x2F

Modbus 从设备地址

0x2F

功能代码

0x64

功能代码

0x64

数据长度(字节)

0x06

数据长度(字节)

0x06

子功能代码

0x04

子功能代码

0x04

传输数 (1)

0xXX

传输数 (1)

0xXX

要读取的第一个寄存器的地址(最高有效位)

0x02

要读取的第一个寄存器的数值(最高有效位)

0x12

要读取的第一个寄存器的地址(最低有效位)

0x97

要读取的第一个寄存器的数值(最低有效位)

0x0A

要读取的第二个寄存器的地址(最高有效位)

0x02

要读取的第二个寄存器的数值(最高有效位)

0x74

要读取的第二个寄存器的地址(最低有效位)

0x99

要读取的第二个寄存器的数值(最低有效位)

0x0C

CRC(最高有效位)

0xXX

CRC(最高有效位)

0xXX

CRC(最低有效位)

0xXX

CRC(最低有效位)

0xXX

(1)主设备在请求中给出传输数。从设备在应答中返回同样的传输数。

写功能

提供了以下写功能:

功能代码

子功能代码

名称

描述

6 (0x06)

预置一个寄存器

写入 1 个寄存器

16 (0x10)

预置多个寄存器

写入 n 个寄存器

43 (0x2B)

16 (0x10)

设置日期和时间

写入从设备的日期和时间

注: 寄存器数量 n 限制为 52(带有 MasterPact MicroLogic E 脱扣单元时)。

诊断功能

提供了以下诊断功能:

功能代码

子功能代码

名称

描述

8 (0x08)

诊断

管理诊断计数器

8 (0x08)

10 (0x0A)

清空计数器和诊断寄存器

复位所有诊断计数器

8 (0x08)

11 (0x0B)

返回总线消息计数器

读取从设备管理的正确总线消息计数器

8 (0x08)

12 (0x0C)

返回总线通讯错误计数器

读取从设备管理的错误总线消息计数器

8 (0x08)

13 (0x0D)

返回总线异常错误计数器

读取从设备管理的异常应答计数器

8 (0x08)

14 (0x0E)

返回从设备消息计数器

读取发送给从设备的消息的计数器

8 (0x08)

15 (0x0F)

返回从设备无应答计数器

读取广播消息计数器

8 (0x08)

16 (0x10)

返回从设备否定确认计数器

读取发送给从设备,但是因为出现否定确认异常代码 07 而没有应答的消息的计数器

8 (0x08)

17 (0x11)

返回从设备繁忙计数器

读取发送给从设备,但是因为出现从设备设备繁忙异常代码 06 而没有应答的消息的计数器

8 (0x08)

18 (0x12)

返回总线溢出计数器

读取因为溢出错误而出现的错误总线消息的计数器

11 (0x0B)

获取通讯事件计数器

读取 Modbus 事件计数器

诊断计数器

Modbus 使用诊断计数器来进行性能和错误管理。可以通过 Modbus 诊断功能(功能代码 8 和 11)访问这些计数器。下表介绍了Modbus 诊断计数器和 Modbus 事件计数器:

计数器编号

计数器名称

描述

1

总线消息计数器

从设备管理的正确总线消息计数器

2

总线通讯错误计数器

从设备管理的错误总线消息计数器

3

从设备异常错误计数器

从设备管理的异常晌应以及错误广播消息的计数器

4

从设备消息计数器

发送给从设备的消息的计数器

5

从设备无晌应计数器

广播消息计数器

6

从设备否定确认计数器

发送给从设备,但是因为出现否定确认异常代码 07 而没有应答的消息的计数器

7

从设备繁忙计数器

发送给从设备,但是因为出现从设备繁忙异常代码 06 而没有应答的消息的计数器

8

总线字符溢出计数器

因为溢出错误而出现的错误总线消息的计数器

9

普通事件计数器

Modbus 事件计数器(通过功能代码 11 读取此计数器)

计数器复位

在以下情况,将诊断计数器复位为 0:

  • 最大值达到 65535,

  • 已通过 Modbus 命令将其复位(功能代码 8,子功能代码 10),

  • 在断电以后,或者,

  • 修改通讯参数以后。