DOCA0105ZH-09

Modbus 寄存器表

概述

Note for TechPub writer: see D-SE-33693 (Compact NSX MB) for similar content and wording consistency.

以下章节将介绍 MicroLogic 控制单元的 Modbus 寄存器及其连接模块的 Modbus 寄存器。这些寄存器提供了可读信息,比如电气测量以及监控信息。命令接口允许以一种受控的方式来修改这些寄存器。

Modbus 寄存器的方法介绍如下:

要查找寄存器,使用寄存器的排序列表,通过交叉引用查找描述这些寄存器的页面。

表格格式

寄存器表包含如下各栏:

地址

寄存器

RW

单位

类型

范围

说明

               
  • 地址:一个十六进制的 16 位寄存器地址。该地址是 Modbus 帧中使用的数据。

  • 寄存器:一个十进制的 16 位寄存器号(寄存器 = 地址 + 1)。

  • RW:寄存器读写状态

    • R:寄存器可通过 Modbus 功能读取

    • W:寄存器可通过 Modbus 功能写入

    • RW:寄存器可通过 Modbus 功能读写

    • RC:寄存器可通过命令接口读取

    • WC:寄存器可通过命令接口写入

  • 单位:用来表示信息的单位。

  • 类型:编码数据类型(参阅下文介绍的数据类型)。

  • 范围 :这个变量的允许值,通常是格式允许的一个子集。

  • 说明:提供关于寄存器的信息以及相关的限制条件。

数据类型

数据类型

说明

范围

INT16U

16 位无符号整数

0 到 65535

INT16

16 位有符号整数

-32768 至 +32767

INT32U

32 位无符号整数

0 至 4 294 967 295

INT32

32 位有符号整数

-2 147 483 648 至 +2 147 483 647

INT64U

64 位无符号整数

0 至 18 446 744 073 709 600 000

INT64

64 位有符号整数

-9 223 372 036 854 775 808 至 +9 223 372 036 854 775 807

FLOAT32

带有浮点的 32 位有符号整数

2-126 (1.0) to 2127 (2 - 2-23)

OCTET STRING

文本串

每个字符占 1 个字节

XDATE

ULP 模块的日期和时间

DATETIME

采用 IEC 60870-5 格式的日期和时间

Big-Endian 格式

INT32、INT32U、INT64 和 INT64U 变量以 big-endian 格式存储:最高有效寄存器首先传输,最低有效寄存器最后传输。

INT32、INT32U、INT64 和 INT64U 变量由 INT16U 变量组成。

这些变量的十进制值计算公式为:

  • INT32:(0-bit31)x231 + bit30x230 + bit29x229 + ...bit1x21 + bit0x20

  • INT32U:bit31x231 + bit30x230 + bit29x229 + ...bit1x21 + bit0x20

  • INT64:(0-bit63)x263 + bit62x262 + bit61x261 + ...bit1x21 + bit0x20

  • INT64U:bit63x263 + bit62x262 + bit61x261 + ...bit1x21 + bit0x20

示例 1:

标准数据集中的总有功电能为寄存器 32096 至 32099 中编码的 INT64 变量。

如果寄存器中的值为:

  • 寄存器 32096 = 0

  • 寄存器 32097 = 0

  • 寄存器 32098 = 0x0017 或 23

  • 寄存器 32099 = 0x9692 或 38546(作为 INT16U 变量)以及 -26990(作为 INT16 变量)(使用 INT16U 值计算总有功电能的值)。

则总有功电能等于 0x248 + 0x232 + 23x216 + 38546x20 = 1545874 Wh。

示例 2:

旧有数据集中的无功电能为寄存器 12052 至 12053 中编码的 INT32 变量。

如果寄存器中的值为:

  • 寄存器 12052 = 0xFFF2 = 0x8000 + 0x7FF2 或 32754

  • 寄存器 12053 = 0xA96E 或 43374(作为 INT16U 变量)以及 -10606(作为 INT16 变量)(使用 INT16U 值计算无功电能的值)。

则无功电能等于 (0-1)x231 + 32754x216 + 43374x20 = -874130 kVARh。

数据类型:FLOAT32

数据类型 FLOAT32 是用单精度 IEEE 754 表示的(用于浮点算法的 IEEE 标准)。按如下方式计算数值 N:

N = (-1)S x 2E-127 x (1+M)

系数

表示

说明

位数

S

有符号

定义数值符号:

0 = 正数

1 = 负数

1 位

E

指数

添加的额外 127 二进制整数。

0 < E < 255 时,实际指数为:e = E - 127。

8 位

M

尾数

幅值,标准化二进制(有意义)

23 位

示例:

0 = 0 00000000 00000000000000000000000

-1.5 = 1 01111111 10000000000000000000000

具有:

  • S = 1

  • E = 01111111 = 127

  • M = 10000000000000000000000 = 1x2-1 + 0x2-2 +...+ 0x2-23 = 0.5

  • N = (-1) x 20 x (1+0.5) = -1.5

数据类型:XDATE

XDATE 是用于对 ULP 模块定义的日期和时间进行编码的数据类型。

寄存器

类型

范围

说明

1

INT16U

0-7

0x01–0x1F

8–15

0x01–0x0C

2

INT16U

0-7

0x00–0x17

小时

8–15

0x50–0xC7

  • 0x50 (80) 至 0x63 (99) 对应年份 1980 至 1999

  • 0x64 (100) 至 0xC7 (199) 对应年份 2000 至 2099

例如,0x70 (112) 对应年份 2012。

3

INT16U

0-7

0x00–0x3B

8–15

0x00–0x3B

4

INT16U

0–15

0x0000–0x03E7

补码(毫秒)

数据类型:DATETIME

DATETIME 是用于对 IEC 60870-5 标准定义的日期和时间进行编码的数据类型。

寄存器

类型

范围

说明

1

INT16U

0-6

0x00–0x7F

年:

0x00 (00) 至 0x7F (127) 对应年份 2000 至 2127

例如,0x0D (13) 对应年份 2013。

7–15

保留

2

INT16U

0-4

0x01–0x1F

5-7

保留

8-11

0x00–0x0C

12-15

保留

3

INT16U

0-5

0x00–0x3B

6–7

保留

8–12

0x00–0x17

小时

13–15

保留

4

INT16U

0–15

0x0000–0xEA5F

毫秒

DATETIME 时间戳的特性

以 DATETIME 数据类型编码的时间戳的特性在时间戳的 4 个寄存器之后的寄存器中予以指示。在这种情况下,时间戳特性的编码如下:

说明

0–11

保留

12

外部同步:

  • 0 = 无效

  • 1 = 有效

13

已同步:

  • 0 = 无效

  • 1 = 有效

14

日期和时间设置:

  • 0 = 无效

  • 1 = 有效

15

保留

寄存器中位的特性

以 INT16U 数据类型编码的寄存器中作为位枚举的每个位的特性在该寄存器之前的寄存器中予以指示。

示例:

寄存器 32001(断路器状态)的每个位的特性在前一个寄存器 32000 中给出。

与寄存器 32001 的位 0(OF 状态指示触点)对应的数据的特性在寄存器 32000 的位 0 中给出:

  • 寄存器 32000 的 位 0 = OF 状态指示的特性

  • 寄存器 32001 的 位 0 = OF 状态指示触点

如果

如果寄存器 32000 的 位 0 = 1 并且寄存器 32001 的 位 0 = 0

OF 触点指示设备已分闸

如果寄存器 32000 的 位 0 = 1 并且寄存器 32001 的 位 0 = 1

OF 触点指示设备已合闸

如果寄存器 32000 的 位 0 = 0

OF 触点指示无效

  • 类型栏说明了获取变量所需读取的寄存器数。例如,INT16U 要求读取一个寄存器,而 INT32 需要读取 2 个寄存器。

  • 某些变量必须作为多个寄存器块来读取,例如电量测量值。如果只读一部分数会导致错误。

  • 从一个未记录的寄存器读取会导致 Modbus 异常

  • 数值采用十进制表示。如果需要使用十六进制来表示,那么将其显示为一个 C 语言类常数:0xdddd。比如,十进制值 123 的十六进制表示方式为 0x007B。

  • 假如测量值与由寄存器 3314 确定的中性线相关,那么读取数值将返回 32768 (0x8000)(如果不适用)。对于出现这种情况的每个寄存器表,都会分别在脚注中予以说明。

  • 乱序和不相关数据取决于数据类型。

数据类型

乱序和不相关数值

INT16U

65535 (0xFFFF)

INT16

-32768 (0x8000)

INT32U

4294967295 (0xFFFFFFFF)

INT32

0x80000000

INT64U

0xFFFFFFFFFFFFFFFF

INT64

0x8000000000000000

FLOAT32

0xFFC00000

QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

这有帮助吗?