-
Notifications
You must be signed in to change notification settings - Fork 139
5 Modbus.Net.Modbus
OpenClaw edited this page May 25, 2026
·
8 revisions
classDiagram
class ModbusMachine~TKey,TUnitKey~ {
+AddressFormater: AddressFormaterModbus
+AddressCombiner: AddressCombinerContinus
+ModbusMachine(id, alias, type, connectionString, addresses, ...)
}
class ModbusUtility {
+Endian: Endian
+GetDatasAsync(startAddress, count, originalCount)
+SetDatasAsync(startAddress, contents, originalCount)
-wrapper: ModbusProtocol
}
class ModbusProtocol {
<<abstract>>
+ProtocolLinker: IProtocolLinker
+ConnectAsync() Task~bool~
}
class ModbusTcpProtocol
class ModbusUdpProtocol
class ModbusRtuProtocol
class ModbusAsciiProtocol
class ModbusRtuInTcpProtocol
class ModbusAsciiInTcpProtocol
class ModbusRtuInUdpProtocol
class ModbusAsciiInUdpProtocol
class ModbusController
class ModbusTcpController
class ModbusRtuController
BaseMachine <|-- ModbusMachine
BaseUtility <|-- ModbusUtility
ModbusMachine --> ModbusUtility
ModbusUtility --> ModbusProtocol
ModbusProtocol <|-- ModbusTcpProtocol
ModbusProtocol <|-- ModbusUdpProtocol
ModbusProtocol <|-- ModbusRtuProtocol
ModbusProtocol <|-- ModbusAsciiProtocol
ModbusProtocol <|-- ModbusRtuInTcpProtocol
ModbusProtocol <|-- ModbusAsciiInTcpProtocol
ModbusProtocol <|-- ModbusRtuInUdpProtocol
ModbusProtocol <|-- ModbusAsciiInUdpProtocol
ModbusController <|-- ModbusTcpController
ModbusController <|-- ModbusRtuController
Modbus是Modicon公司于1979年推出的串口通讯协议。
Modbus有四种地址类型:线圈(对应输出线圈),离散型输入变量(对应输入线圈),输入型寄存器(对应输入变量)和保持型寄存器(对应存储变量)。
Modbus有两种地址空间:标准的地址空间和扩展的地址空间。
下表说明了Modbus的地址范围。
| 类型 | 标准地址空间 | 扩展地址空间 |
|---|---|---|
| 线圈 | 00001-09999 | 000001-065536 |
| 离散型输入变量 | 10001-19999 | 100001-165536 |
| 输入型寄存器 | 30001-39999 | 300001-365536 |
| 保持型寄存器 | 40001-49999 | 400001-465536 |
Modbus.Net同时支持标准地址空间和扩展地址空间,且默认为扩展地址空间,你需要注意设备的说明书,上面会告诉你设备使用了多大的地址范围。
Modbus.Net使用了不同的地址描述方式,下表说明了Modbus.Net的地址与Modbus之间的关系。
| 标准的Modbus地址 | Modbus.Net里的Modbus地址 |
|---|---|
| 00001 | 0X 1 |
| 00002 | 0X 2 |
| 09999 | 0X 9999 |
| 065536 | 0X 65536 |
| 10001 | 1X 1 |
| 30001 | 3X 1 |
| 40001 | 4X 1 |
另外,Modbus.Net里的Modbus地址还能同时描述位信息。
| 标准的Modbus地址 | Modbus.Net里的Modbus地址 |
|---|---|
| 30001 13 | 3X 1.12 |
| 40133 12 | 4X 133.11 |
在Modbus.Net.Modbus中, 地址范围的描述位: "0X"(线圈), "1X"(离散型输入), "3X"(输入寄存器), "4X"(保持寄存器)。
请不要忘了在范围和地址之间加一个空格。
如果你想使用子地址,请在地址与子地址之间增加一个"."。
4X 1.12
0X和1X的放大倍数位0.125,每增加一个地址,增加1个bit。
你只能读1X区域中的数据。
0X和1X的子地址永远为0。因此不存在子地址系统。
3X和4X的放大倍数为2,每增加一个地址,增加2个byte。
子地址的范围为0到15.
请注意:Modbus.Net.Modbus与标准Modbus在描述子地址的时候有区别。
Modbus.Net的子地址比标准Modbus少一个。
标准Modbus
| 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Modbus.Net.Modbus
| 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Modbus.Net © 2016-2026 Hangzhou Delian Science Technology Co.,Ltd. | Licensed under MIT
- 1-概要介绍
- 2-Modbus.Net主体框架规范
- 3-利用Modbus.Net实现一个协议
- 4-使用Modbus.Net
- 5-Modbus.Net.Modbus
- 6-Modbus.Net.Siemens
- 7-Modbus.Net.HJ212
- 8-调试与Issue提交
- 1-Overview
-
2-Specification of Modbus.Net main framework
- 2.1-Modbus.Net Architecture
- 2.2-Transmission Control Layer Controller
- 2.3-Transmission Link Layer Connector
- 2.4-Concrete Protocol Layer ProtocolLinker
- 2.5-Abstract Protocol Layer Protocol
- 2.6-Protocol Presentation Layer Utility
- 2.7-Device Application Layer Machine
- 2.8-Task Application Layer MachineJob
- 3-Using Modbus.Net to implement a protocol
- 4-Using Modbus.Net
- 5-Modbus.Net.Modbus
- 6-Modbus.Net.Siemens
- 7-Modbus.Net.HJ212
- 8-Debug method and issue upload