Skip to main content
Version: 2.1

Modbus Nodes

Modbus is the most widely deployed protocol in industrial automation. MaestroHub supports all three variants: TCP, RTU, and ASCII so you can communicate with PLCs, sensors, meters, and supervisory systems from a single node set.

Configuration Quick Reference

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile, function, configure function parameters with expression support, and optionally override timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.

Modbus Read node configuration

Modbus Read Node

Modbus Read Node

Read data from PLCs, sensors, meters, and industrial devices.

Supported Function Types:

Function NamePurposeCommon Use Cases
Read Coils (0x01)Read digital outputsMotor status, valve positions
Read Discrete Inputs (0x02)Read digital inputsLimit switches, sensors
Read Holding Registers (0x03)Read holding registersSetpoints, configuration
Read Input Registers (0x04)Read input registersTemperature, pressure, flow
Read FIFO Queue (0x18)Read FIFO queueEvent logs, alarm history

Node Configuration

ParameterTypeRequiredDescription
ConnectionSelectionYesModbus connection profile to use
FunctionSelectionYesRead function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema (e.g., address, quantity, dataType). See your Modbus connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.

Input

The node receives the output of the previous node as input. Input data can be referenced in function parameter expressions using $input.

Output Structure

On success the node produces:

{
"success": true,
"functionId": "<function-id>",
"data": { ... },
"durationMs": 42,
"timestamp": "2026-01-15T08:30:00Z"
}
FieldTypeDescription
successbooleantrue when the function executed without errors
functionIdstringID of the executed function
dataanyFunction-specific result data (see below)
durationMsnumberExecution time in milliseconds
timestampstringISO 8601 / RFC 3339 UTC timestamp

Function-Specific Output Data

The shape of data depends on the function code:

Function Codedata Contents
FC01 Read CoilsArray of boolean values, one per coil
FC02 Read Discrete InputsArray of boolean values, one per input
FC03 Read Holding RegistersConverted values based on the configured dataType (e.g., int16, float32, raw)
FC04 Read Input RegistersConverted values based on the configured dataType
FC24 Read FIFO QueueFIFO queue contents from the target address

Modbus Write node configuration

Modbus Write Node

Modbus Write Node

Write control values, setpoints, and configuration to devices.

Supported Function Types:

Function NamePurposeCommon Use Cases
Write Single Coil (0x05)Write single digital outputStart/stop motor
Write Single Register (0x06)Write single registerUpdate setpoint
Write Multiple Coils (0x0F)Write multiple digital outputsBatch control
Write Multiple Registers (0x10)Write multiple registersConfiguration update
Write Masked Register (0x16)Masked register writeBit manipulation
Read/Write Multiple Registers (0x17)Atomic read+writeSynchronized operations

Node Configuration

ParameterTypeRequiredDescription
ConnectionSelectionYesModbus connection profile to use
FunctionSelectionYesWrite function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema (e.g., address, value, values). See your Modbus connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

All function parameters support expression syntax ({{ expression }}) for dynamic values.

Input

The node receives the output of the previous node as input. Use expressions like {{ $input.payload.value }} to pass dynamic values to write parameters.

Output Structure

The write node uses the same output envelope as the read node:

{
"success": true,
"functionId": "<function-id>",
"data": { ... },
"durationMs": 15,
"timestamp": "2026-01-15T08:30:00Z"
}

Function-Specific Output Data

Function Codedata Contents
FC05 Write Single CoilConfirmation of the written coil address and value
FC06 Write Single RegisterConfirmation of the written register address and value
FC0F Write Multiple CoilsAddress and quantity of coils written
FC10 Write Multiple RegistersAddress and quantity of registers written
FC16 Write Masked RegisterAddress, AND mask, and OR mask applied
FC17 Read/Write Multiple RegistersRead results from the combined operation
Safety First

Always implement validation and safety checks before writing to industrial equipment. Consider adding condition nodes to verify values are within safe ranges.


Modbus Read Group Node

The Modbus Read Group node executes multiple Modbus read operations in a single node. It supports selective function lists, a Read All mode for complete device snapshots, and parallel or sequential execution.

Modbus Read Group node configuration

Modbus Read Group Node

Node Configuration

ParameterTypeRequiredDefaultDescription
ConnectionSelectionYesModbus connection profile
Read AllToggleNofalseWhen enabled, executes all read functions (FC01–FC04, FC24) from the connection
FunctionsArray of {functionId, alias}When Read All is off[]List of specific functions to execute. Each entry requires a functionId; alias is optional.
Execution ModeSelectionNoparallelparallel — all functions run concurrently. sequential — functions run one after another.
Continue on ErrorToggleNotrueWhen enabled, the node continues executing remaining functions even if one fails
Debug ModeToggleNofalseEnable detailed logging for troubleshooting

Read All Mode

When Read All is enabled the function list is ignored. The node automatically discovers and executes every read function defined on the selected connection.

Supported read function types for Read All:

Function TypeFunction Code
modbus.read.coilsFC01
modbus.read.discreteInputsFC02
modbus.read.holdingRegistersFC03
modbus.read.inputRegistersFC04
modbus.read.fifoQueueFC24

Input

The node receives the output of the previous node as input.

Output Structure

{
"Temperature Sensor": {
"value": [22.5, 23.1],
"success": true,
"duration": 45,
"timestamp": "2026-01-15T08:30:00Z"
},
"Pressure Gauge": {
"value": [1013],
"success": true,
"duration": 38,
"timestamp": "2026-01-15T08:30:00Z"
},
"_meta": {
"connectionId": "conn-123",
"connectionName": "PLC-01",
"total": 2,
"successful": 2,
"failed": 0,
"totalDuration": 83,
"executionMode": "parallel",
"originalRequests": 2
}
}

Each function result contains:

FieldTypeDescription
valueanyThe function's return data
successbooleanWhether this function succeeded
errorstringError message (present only on failure)
durationnumberExecution time in milliseconds
timestampstringISO 8601 / RFC 3339 UTC timestamp

The _meta object provides execution summary:

FieldTypeDescription
connectionIdstringConnection profile ID
connectionNamestringConnection profile display name
totalnumberTotal functions executed
successfulnumberCount of successful executions
failednumberCount of failed executions
totalDurationnumberWall-clock time for the entire group (ms)
executionModestringparallel or sequential
originalRequestsnumberNumber of function configs submitted
keyCollisionsstring[]Output keys that appeared more than once (omitted when empty)

Output Key Resolution

Each function result is keyed in the output map using the first available value:

  1. Alias — the custom alias set in the function entry
  2. Function Name — the name defined on the connection function
  3. Function ID — the unique function identifier (fallback)

Use aliases to give results predictable, human-readable keys, especially when the same function type is read from multiple address ranges.

Execution Modes

Parallel (Recommended) (default)

  • All functions execute concurrently.
  • Fastest total execution time.
  • Utilizers Coalescing to efficiently handle overlapping function ranges.
  • Best for independent read operations across different address ranges.

Sequential

  • Functions execute one after another in list order.
  • More predictable timing and lower peak load on the device.
  • When Continue on Error is off, execution stops at the first failure.

Error Handling

Continue on ErrorBehavior
true (default)The node completes even if individual functions fail. Failed functions include an error field in their result. The node output remains successful.
falseThe node fails as soon as any function fails. In sequential mode, remaining functions are skipped. The node result is marked as failed.

Validation Rules

  • connectionId is required.
  • executionMode must be parallel or sequential.
  • When Read All is off, at least one function entry is required.
  • Duplicate functionId values are not allowed.
  • Duplicate alias values are not allowed.
  • The connection type must be modbus.

Best Practices

  • Use Read All for device commissioning, complete state backups, and monitoring dashboards where you need every data point.
  • Use specific functions in production pipelines with known data requirements for better performance and clarity.
  • Assign aliases when reading multiple functions of the same type to keep output keys readable.
  • Prefer parallel mode unless the target device has limited concurrent request handling.
  • Enable Continue on Error for monitoring scenarios where partial data is still valuable.

Settings Tab

All three Modbus node types share the same Settings tab:

SettingTypeDefaultDescription
DescriptionTextOptional description displayed on the node
Timeout (seconds)NumberPipeline defaultMaximum time the node may run before timing out
Retry on TimeoutTogglePipeline defaultAutomatically retry the node if it times out
Retry on FailTogglePipeline defaultAutomatically retry the node if it fails
On ErrorSelectionPipeline defaultError strategy: stop the pipeline, continue to the next node, or follow the error output path

When left at their defaults, these settings inherit from the pipeline-level execution configuration.