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

诊断请求

下表包含数据选择代码列表:

数据选择代码(十六进制)

描述

00

保留

01

基本网络诊断

02

以太网端口诊断

03

Modbus TCP/端口 502 诊断

04

Modbus TCP/端口 502 连接表

05 - 7E

为其他公共代码保留

7F

数据结构偏移

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 个位):

  • 0x0:模块正常

  • 0x1:检测到模块配置错误

  • 0x2:检测到模块运行时错误

  • 0x3:不存在模块,但模块可选配

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 个位):

  • 0x0:模块正常

  • 0x1:检测到模块配置错误

  • 0x2:检测到模块运行时错误

  • 0x3:不存在模块,但模块可选配

2...3 模块 10

4...5 模块 11

6...7 模块 12

8...9 模块 13

10...11 模块 14

12...13

保留

14...15

总线状态:

  • 0x0:总线正常

  • 0x1:检测到总线配置错误

  • 0x2:检测到总线运行时错误

  • 0x3:总线未配置

系统状态

寄存器

功能

描述

932

系统的状态

  • 0x0:系统正在启动。

  • 0x1:未配置 TM3 总线。

  • 0x2:正在传输 TM3 配置。

  • 0x3:已成功应用有效的 TM3 配置。输出设置为 0。

  • 0x4:TM3 总线受到 EIP 控制。

  • 0x5:TM3 总线受到 ModbusTCP IO Scanner 控制。

  • 0x6:TM3 总线受到 Web 服务器 控制

  • 0x7:现场总线刷新超时

  • 0x8:正在更新固件

  • 0xA:正在进行系统状态转换。

933

TM3/TM2 总线配置

  • 位 [0]:Modbus TCP 数据一致性

  • 0x0:禁用

  • 0x1:启用

注: 在启用了 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

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

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

  • 配置已保存:0x8000

  • 配置超时:0xC000

  • 零子网错误:0xD000

TM3 总线耦合器产品信息

寄存器

功能

1100

TM3 总线耦合器 产品代码

2507-2508

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

2512-2513

TM3 总线耦合器 设备序列号

2601

旋转开关 ONES 位置

2602

旋转开关 TENS 位置