 Modbus Node
Modbus Node
  x/modbus component: v0.29.0+ A Modbus read/write component used to perform Modbus protocol read or write operations. Supports two communication protocols: TCP and RTU.
Additional extension library required: rulego-components-iot (opens new window)
# Configuration
| Field | Type | Description | Default Value | 
|---|---|---|---|
| server | string | Modbus server address (Format: <mode>://<host:port>or<mode>://<serial device>) | tcp://127.0.0.1:502 | 
| cmd | string | Modbus command name, supported commands include: ReadCoils,ReadDiscreteInputs,ReadRegisters,WriteCoil,WriteRegisters, etc. | ReadCoils | 
| unitId | uint8 | Unit ID (Slave ID).Format: uint8, Example: 1 | 1 | 
| address | string | Register address, placeholder variables ${}are allowed. Format: uint16, Example: 16 | None | 
| quantity | string | Number of registers, placeholder variables ${}are allowed | None | 
| value | string | Register value, placeholder variables ${}are allowed. No need to provide for reading. If writing multiple values, separate them with commas. For example:0x01,0x01,true,51,52. | None | 
| regType | uint | Register type, options: 0- Holding Register(0x03)1- Input Register(0x04) | None | 
| TcpConfig | TCP Configuration Parameters | ||
| timeout | int64 | Request timeout in seconds | 5 | 
| certPath | string | Path to the certificate (required for TLS/SSL connections) | None | 
| keyPath | string | Path to the private key (required for TLS/SSL connections) | None | 
| caPath | string | Path to the CA certificate (required for TLS/SSL connections) | None | 
| RtuConfig | RTU Configuration Parameters | ||
| speed | uint | Serial baud rate (RTU mode only) | 19200 | 
| dataBits | uint | Number of data bits (RTU mode only) | 8 | 
| parity | uint | Parity mode (RTU mode only), options: 0- None1- Even2- Odd | 0 | 
| stopBits | uint | Number of stop bits (RTU mode only) | 2 | 
| EncodingConfig | Encoding Configuration Parameters | ||
| endianness | uint | Byte order of registers, options: 1- Big Endian2- Little Endian | 1 | 
| wordOrder | uint | Word order for 32-bit registers, options: 1- High Word First2- Low Word First | 1 | 
# Command Description
| Command Name | Command Description | Parameter Description | 
|---|---|---|
| ReadCoils | Read coil statuses | address: Starting address of coilsquantity: Number of coils to read | 
| ReadCoil | Read a single coil status | address: Address of the coil | 
| ReadDiscreteInputs | Read discrete input statuses | address: Starting address of discrete inputsquantity: Number of inputs to read | 
| ReadDiscreteInput | Read a single discrete input status | address: Address of the discrete input | 
| ReadRegisters | Read registers | address: Starting address of registersquantity: Number of registers to readregType: Register type (e.g., Holding Register or Input Register) | 
| ReadRegister | Read a single register | address: Address of the registerregType: Register type | 
| ReadUint32s | Read unsigned 32-bit integers | address: Starting address of registersquantity: Number of registers to readregType: Register type | 
| ReadUint32 | Read a single unsigned 32-bit integer | address: Address of the registerregType: Register type | 
| ReadFloat32s | Read 32-bit floating-point numbers | address: Starting address of registersquantity: Number of registers to readregType: Register type | 
| ReadFloat32 | Read a single 32-bit floating-point number | address: Address of the registerregType: Register type | 
| ReadUint64s | Read unsigned 64-bit integers | address: Starting address of registersquantity: Number of registers to readregType: Register type | 
| ReadUint64 | Read a single unsigned 64-bit integer | address: Address of the registerregType: Register type | 
| ReadFloat64s | Read 64-bit floating-point numbers | address: Starting address of registersquantity: Number of registers to readregType: Register type | 
| ReadFloat64 | Read a single 64-bit floating-point number | address: Address of the registerregType: Register type | 
| ReadBytes | Read byte data | address: Starting address of registersquantity: Number of registers to readregType: Register type | 
| ReadRawBytes | Read raw byte data | address: Starting address of registersquantity: Number of registers to readregType: Register type | 
| WriteCoil | Write a single coil status | address: Address of the coilvalue: Value to write (boolean) | 
| WriteCoils | Write multiple coil statuses | address: Starting address of coilsvalue: Values to write (boolean array) | 
| WriteRegister | Write a single register | address: Address of the registervalue: Value to write (16-bit integer) | 
| WriteRegisters | Write multiple registers | address: Starting address of registersvalue: Values to write (16-bit integer array) | 
| WriteUint32 | Write a single unsigned 32-bit integer | address: Address of the registervalue: Value to write (32-bit integer) | 
| WriteUint32s | Write multiple unsigned 32-bit integers | address: Starting address of registersvalue: Values to write (32-bit integer array) | 
| WriteFloat32 | Write a single 32-bit floating-point number | address: Address of the registervalue: Value to write (floating-point number) | 
| WriteFloat32s | Write multiple 32-bit floating-point numbers | address: Starting address of registersvalue: Values to write (floating-point number array) | 
| WriteUint64 | Write a single unsigned 64-bit integer | address: Address of the registervalue: Value to write (64-bit integer) | 
| WriteUint64s | Write multiple unsigned 64-bit integers | address: Starting address of registersvalue: Values to write (64-bit integer array) | 
| WriteFloat64 | Write a single 64-bit floating-point number | address: Address of the registervalue: Value to write (floating-point number) | 
| WriteFloat64s | Write multiple 64-bit floating-point numbers | address: Starting address of registersvalue: Values to write (floating-point number array) | 
| WriteBytes | Write byte data | address: Starting address of registersvalue: Values to write (byte array) | 
| WriteRawBytes | Write raw byte data | address: Starting address of registersvalue: Values to write (byte array) | 
# Relation Type
- Success: On successful execution, the message is sent to the Successchain.
- Failure: On failed execution, the message is sent to the Failurechain.
# Execution Result
Write: Do not change the message payload value.
Read: Returns an array, where each element is an object containing the following fields:
- Field List
| Field Name | Data Type | Description | 
|---|---|---|
| unitId | int | Unit ID (Slave ID) | 
| type | string | Data type, e.g., "uint16" | 
| address | int | Address, indicating the storage location of the data | 
| value | int float bool []byte | Current value, representing the data content | 
- Example Data(reading Modbus data format):
[
  {
    "unitId": 1,
    "type": "uint16",
    "address": 4,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 5,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 6,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 7,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 8,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 9,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 10,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 11,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 12,
    "value": 0
  },
  {
    "unitId": 1,
    "type": "uint16",
    "address": 13,
    "value": 0
  }
]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Edit this page on GitHub  (opens new window)
  Last Updated: 2025/09/02, 11:02:23
