Modbus 服务器支持以下 Modbus 请求:
功能代码 十进制(十六进制) |
子功能 十进制(十六进制) |
功能 |
---|---|---|
3 (3) |
– |
读取保持寄存器 (%MW) |
6 (6) |
– |
写入单个寄存器 (%MW) |
16 (10) |
– |
写入多个寄存器 (%MW) |
22 (16) |
- |
掩蔽写入寄存器 |
23 (17) |
– |
读取/写入多个寄存器 (%MW) |
43 (2B) |
14 (E) |
读取设备标识 |
下表包含数据选择代码列表:
数据选择代码(十六进制) |
描述 |
---|---|
00 |
保留 |
01 |
基本网络诊断 |
02 |
以太网端口诊断 |
03 |
Modbus TCP/端口 502 诊断 |
04 |
Modbus TCP/端口 502 连接表 |
05 - 7E |
为其他公共代码保留 |
7F |
数据结构偏移 |
区域 |
访问 |
寄存器 |
功能 |
---|---|---|---|
诊断区 |
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:检测到错误 |
寄存器 |
功能 |
位 |
描述 |
---|---|---|---|
930 |
TM3/TM2 总线和模块状态 |
0...1 模块 1 |
模块状态(每个模块 2 个位):
|
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 个位):
|
2...3 模块 10 |
|||
4...5 模块 11 |
|||
6...7 模块 12 |
|||
8...9 模块 13 |
|||
10...11 模块 14 |
|||
12...13 |
保留 |
||
14...15 |
总线状态:
|
寄存器 |
功能 |
描述 |
---|---|---|
932 |
系统的状态 |
|
933 |
TM3/TM2 总线配置 |
|
有关如何使用寄存器 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 地址的示例:
|
||
位 2 |
无效 IP |
不允许使用回送地址。 IP 地址的高字节值或者高字节不得为 127。 示例:不允许使用 IP 地址 127.xxx.xxx.xxx。 |
||
位 3 |
子网掩码无效 |
最后一个字节的最大允许值为 252。
无效子网掩码值的示例:
|
||
位 4 |
子网掩码无效 |
子网掩码必须包含连续的数位,中间不得有零。 无效地址的示例:
|
||
位 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。
不正确网关地址的示例:
|
||
位 8 |
网关无效 |
不允许使用网关地址 255.255.255.255。 |
||
位 9 |
无效 IP |
如果网关地址等于广播地址,则会返回错误。 广播地址通过对子网掩码的位取反、然后对 IP 地址执行按位或运算来计算得到。
无效配置的示例:
|
||
位 10 |
网关无效 |
主机 ID 通过对子网掩码的位取反、然后对网关地址执行按位与运算来计算得到。所得到的值不应为 0。
无效配置的示例:
|
||
位 11 |
无效 IP |
网络不可达。 如果(IP 地址和子网掩码的与运算的结果)不等于(网关地址和子网掩码的与运算的结果),则会返回错误。
无效配置的示例:
|
||
位 12 |
子网无效 |
不允许使用子网掩码 0.0.0.0。 |
||
位 13 |
未使用 |
– |
||
位 14-15 |
状态位:指示网络设置配置的状态 |
位 15 |
位 14 |
描述 |
0 |
0 |
通电时的缺省值。 |
||
0 |
1 |
总线耦合器正在保存网络配置(向寄存器 1050 写入了 |
||
1 |
0 |
已保存网络配置,等待执行电源重置。 |
||
1 |
1 |
网络配置出错,或者发生了超时。 |
||
示例:
|