Modbus TCP 服务器

简介

Modbus TCP 不以层次结构为基础,而是基于客户端/服务器模型。

无需任何配置,总线耦合器的嵌入式以太网端口即可支持 Modbus 服务器。

Modbus TCP 服务器

Modbus 服务器支持以下 Modbus 请求:

功能代码

十进制(十六进制)

子功能

十进制(十六进制)

功能

3 (3)

读取保持寄存器 (%MW)

6 (6)

写入单个寄存器 (%MW)

16 (10)

写入多个寄存器 (%MW)

22 (16)

-

掩蔽写入寄存器

23 (17)

读取/写入多个寄存器 (%MW)

43 (2B)

14 (E)

读取设备标识

Modbus TCP 配置

要将 TM3 Ethernet 总线耦合器 配置为 Modbus TCP 设备,请添加总线耦合器。然后,选择 Modbus TCP IO Scanner > TM3BCEIP

TM3 总线耦合器 Modbus TCP 寄存器

区域

访问

寄存器

功能

诊断区

RO

900 - 901

总线耦合器诊断

RO

930 - 931

TM2/TM3 总线和模块状态

RO

932

系统状态

RO

991 - 992

通讯诊断

RO

1058...1066

Ethernet 通讯参数

RO

1100...1115

TM3 总线耦合器 产品信息

RO

2512 - 2513

TM3 总线耦合器 设备序列号

IO Scanner 区

RO

1...99

总线耦合器模块输入值的子集(前 7 个模块)(1)

RW

101...199

总线耦合器模块输出值的子集(前 7 个模块)(1)

RO

3001...3499

总线耦合器模块输入值(所有模块)(1)

RW

3501...3999

总线耦合器模块输出值(所有模块)(1)

RO

13001...13499

用于与 HMI 设备一起使用的总线耦合器模块输入值(所有模块)。

RO

13501...13999

用于与 HMI 设备一起使用的总线耦合器模块输出值(所有模块)。

直接 TM3 配置

请参阅如何配置:配置管理寄存器

15000 - 16499

让控制器能够通过 Modbus 请求发送 TM3 配置。

(1)系统状态(寄存器 932)不为 5(TM3 总线受到 modbus TCP 控制)时,对这些寄存器的访问会导致返回错误。只有在寄存器 931 为 0(总线状态良好,所有模块状态良好)时,寄存器 3001...3499、3501...3999、13001...13999 的值才有效。

总线耦合器诊断

寄存器

功能

描述

900

总线耦合器诊断

位 (0...8):未使用

位 (9):I/O 总线运行时错误

位 (10-11):未使用

位 (13):I/O 总线未配置或者总线配置错误

位 (14-15):未使用

901

I/O 模块状态

位 (0...13):第一个扩展模块的状态变成第 14 个扩展模块的状态

位 (14-15):未使用

0:未检测到错误

1:检测到错误

TM3/TM2 总线和模块状态

寄存器

功能

描述

930

TM3/TM2 总线和模块状态

0...1 模块 1

模块状态(每个模块 2 个位):

  • 0(十六进制):模块正常

  • 1(十六进制):检测到模块配置错误

  • 2(十六进制):检测到模块运行时错误

  • 3(十六进制):不存在模块,但模块可选配

2...3 模块 2

4...5 模块 3

6...7 模块 4

8...9 模块 5

10...11 模块 6

12...13 模块 7

14...15 模块 8

931

TM3/TM2 总线和模块状态

0...1 模块 9

模块状态(每个模块 2 个位):

  • 0(十六进制):模块正常

  • 1(十六进制):检测到模块配置错误

  • 2(十六进制):检测到模块运行时错误

  • 3(十六进制):不存在模块,但模块可选配

2...3 模块 10

4...5 模块 11

6...7 模块 12

8...9 模块 13

10...11 模块 14

12...13

保留

14...15

总线状态:

  • 0(十六进制):总线正常

  • 1(十六进制):检测到总线配置错误

  • 2(十六进制):检测到总线运行时错误

  • 3(十六进制):总线未配置

系统状态

寄存器

功能

描述

932

系统的状态

  • 0(十六进制):系统正在启动。

  • 1(十六进制):未配置 TM3 总线。

  • 2(十六进制):正在传输 TM3 配置。

  • 3(十六进制):已成功应用有效的 TM3 配置。输出设置为 0。

  • 4(十六进制):TM3 总线受到 EIP 控制。

  • 5(十六进制):TM3 总线受到 Modbus TCP IO Scanner 控制。

  • 6(十六进制):TM3 总线受到 Web 服务器 控制

  • 7(十六进制):现场总线刷新超时

  • 8(十六进制):正在更新固件

  • A 十六进制:正在进行系统状态转换。

933

TM3/TM2 总线配置

  • 位 [0]:ModbusTCP 数据一致性

  • 0(十六进制):禁用

  • 1(十六进制):启用

注: 在启用了 Modbus TCP 的情况下,状态寄存器(900...901、930...932)的值会反映 TM3 总线耦合器和已连接的 TM3 扩展模块的状态。在执行 IO 交换之前,请查看这些状态寄存器,并视需要执行相应的操作。

通讯诊断

寄存器

功能

描述

991

已接收的消息数

已接收的消息数。

992

已发送的消息数

已发送的消息数

Ethernet 通讯参数

有关如何使用寄存器 1050 - 1056 来配置网络配置的详细信息,请参阅 通过 Modbus 命令配置网络设置

寄存器

功能

1050

开始或应用网络配置。

1= 开始

0= 应用

1051

IP 地址高字

1052

IP 地址低字

1053

子网掩码高字

1054

子网掩码低字

1055

网关地址高字

1056

网关地址低字

1057

检测到错误。(请参阅下表中的位的错误指示)

1058

MAC 地址

1059

1060

1061

IP 地址

1062

1063

子网掩码

1064

1065

网关

1066

下表介绍了寄存器 1057 的位的错误指示:

位字段

错误位

( 0 = 无错误,1 = 有错误)

描述

位 0

无效 IP

不允许使用 90.0.0.1 和 90.0.0.2,它们在总线耦合器中保留供 RNDIS 网络使用。

位 1

无效 IP

高字节值不正确。

值不得为零。

值应大于或等于 224。

无效 IP 地址的示例:
  • 0.xxx.xxx.xxx

  • 224.xxx.xxx.xx

  • 255.xxx.xxx.xxx

位 2

无效 IP

不允许使用回送地址。

IP 地址的高字节值或者高字节不得为 127。

示例:不允许使用 IP 地址 127.xxx.xxx.xxx。

位 3

子网掩码无效

最后一个字节的最大允许值为 252。

无效子网掩码值的示例:
  • xxx.xxx.xxx.253

  • xxx.xxx.xxx.254

  • xxx.xxx.xxx.255

位 4

子网掩码无效

子网掩码必须包含连续的数位,中间不得有零。

无效地址的示例:

  • 160.0.0.0 [10100000.00000000.00000000.00000000]

位 5

无效 IP

IP 地址不得为广播地址。

广播地址通过对子网掩码的位取反、然后对 IP 地址执行按位运算来计算得到。

示例:IP 地址为 10.10.0.3、子网掩码为 255.255.255.252 的配置是无效配置,因为所得到的广播地址等于 IP 地址。

位 6

子网无效

未涵盖 IP 类。

使用子网掩码的取反位值对 IP 地址执行的按位运算所得到的结果不应为 0。

示例:不允许使用 IP 地址 10.10.0.4 和子网掩码 255.255.255.252,因为子网掩码未涵盖 IP 类。

位 7

网关无效

网关地址的高字节值不正确。

不允许使用零。

不允许使用 127。

值应小于 224。

不正确网关地址的示例:
  • 0.xxx.xxx.xxx

  • 127.xxx.xxx.xxx

  • 255.xxx.xxx.xxx

位 8

网关无效

不允许使用网关地址 255.255.255.255。

位 9

无效 IP

如果网关地址等于广播地址,则会返回错误。

广播地址通过对子网掩码的位取反、然后对 IP 地址执行按位运算来计算得到。

无效配置的示例:
  • IP 地址:10.10.0.100

  • 子网掩码:255.255.255.0

  • 网关:10.10.0.255

位 10

网关无效

主机 ID 通过对子网掩码的位取反、然后对网关地址执行按位运算来计算得到。所得到的值不应为 0。

无效配置的示例:
  • 子网掩码:255.255.255.192

  • 网关:10.10.0.192

位 11

无效 IP

网络不可达。

如果(IP 地址和子网掩码的运算的结果)不等于(网关地址和子网掩码的运算的结果),则会返回错误。

无效配置的示例:
  • IP 地址:10.10.0.128

  • 子网掩码:255.255.255.192

  • 网关:10.10.0.64

位 12

子网无效

不允许使用子网掩码 0.0.0.0。

位 13

未使用

位 14-15

状态位:指示网络设置配置的状态

位 15

位 14

描述

0

0

通电时的缺省值。

0

1

总线耦合器正在保存网络配置(向寄存器 1050 写入了 0 之后)。

1

0

已保存网络配置,等待执行电源重置。

1

1

网络配置出错,或者发生了超时。

示例:
  • 包含错误,正在保存配置:4000

    十六进制
  • 配置已保存:8000(十六进制)

  • 配置超时:C000

    十六进制
  • 零子网错误:D000

    十六进制

TM3 总线耦合器产品信息

寄存器

功能

1100

TM3 总线耦合器 产品代码

2507-2508

TM3 总线耦合器 产品固件版本

2512-2513

TM3 总线耦合器 设备序列号

2601

旋转开关 ONES 位置

2602

旋转开关 TENS 位置

总线耦合器和模块描述寄存器

下表显示了 TM3 总线耦合器 支持的用于扩展模块的寄存器:

寄存器

访问

功能

1100

RO

TM3 总线耦合器 产品代码

1101

RO

TM3 总线耦合器 软件版本

1102

RO

扩展模块 1 的类型

1103

RO

扩展模块 2 的类型

1104

RO

扩展模块 3 的类型

1105

RO

扩展模块 4 的类型

1106

RO

扩展模块 5 的类型

1107

RO

扩展模块 6 的类型

1108

RO

扩展模块 7 的类型

1109

RO

扩展模块 8 的类型

1110

RO

扩展模块 9 的类型

1111

RO

扩展模块 10 的类型

1112

RO

扩展模块 11 的类型

1113

RO

扩展模块 12 的类型

1114

RO

扩展模块 13 的类型

1115

RO

扩展模块 14 的类型

总线耦合器状态和配置

下表显示了用于总线耦合器状态和配置接口的寄存器:

寄存器

功能

描述

2502 - 2506

保留

未使用

2507

固件主修订版

-

2508

固件次修订版

-

2512 - 2513

序列号

-

2514 - 2515

保留

未使用

2518

检测到的 I/O 模块总数

最多 14 个模块

2519

插槽 0 模块 ID(如有)

-

2520

插槽 1 模块 ID(如有)

-

2521

插槽 2 模块 ID(如有)

-

2522

插槽 3 模块 ID(如有)

-

2523

插槽 4 模块 ID(如有)

-

2524

插槽 5 模块 ID(如有)

-

2525

插槽 6 模块 ID(如有)

-

2526

插槽 7 模块 ID(如有)

-

2527

插槽 8 模块 ID(如有)

-

2528

插槽 9 模块 ID(如有)

-

2529

插槽 10 模块 ID(如有)

-

2530

插槽 11 模块 ID(如有)

-

2531

插槽 12 模块 ID(如有)

-

2532

插槽 13 模块 ID(如有)

-

2533 - 2600

保留

保留

2601

旋转开关个位

-

2602

旋转开关十位

-