Skip to content

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
Loading

基本概念

Modbus是Modicon公司于1979年推出的串口通讯协议。

Modbus的地址

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

Home

中文

English

Clone this wiki locally