Mitsubishi MELSEC Nodes
Read and write Mitsubishi MELSEC PLCs directly from pipelines over SLMP / MC Protocol. Each function type authored on a MELSEC connection is available as a matching node in the Pipeline Designer, plus a dedicated MELSEC Read Group node for executing several reads in one node with request coalescing.
For connection setup, the device addressing model, data types, and per-function configuration fields, see the Mitsubishi MELSEC connection guide.
Configuration Quick Reference
| Field | What you choose | Details |
|---|---|---|
| Parameters | Connection, Function, Function Parameters, Timeout Override | Select the MELSEC connection profile, pick a function, bind parameters with expression support, and optionally override the timeout. |
| Settings | Description, Timeout (seconds), Retry on Timeout, Retry on Fail, On Error | Node description, maximum execution time, retry behaviour on timeout or failure, and error strategy. All execution settings default to pipeline-level values. |
MELSEC Read Node
MELSEC Read Node
Read a single typed value from one device, or many typed datapoints from a device range in a single coalesced call. The node runs whichever read function you select — melsec.read.device (one value) or melsec.read.block (a batch of named points).
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
Read Device (melsec.read.device) | Read one typed value from a single device address | Setpoint readback, status/input bit, timer/counter value |
Read Block (melsec.read.block) | Read many typed datapoints from a device range in the fewest SLMP requests | Dashboard snapshots, historian logging, mixed-type process blocks |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | MELSEC connection profile to use |
| Function | Selection | Yes | A melsec.read.device or melsec.read.block function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema (device, dataType, length, wordSwap, or the dataPoints array for a block read). See the MELSEC connection functions for field-level details. |
| Timeout Override | Number (seconds) | No | Override 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
Read Device — a single decoded value:
{
"success": true,
"functionId": "<function-id>",
"data": {
"device": "D100",
"dataType": "REAL",
"value": 72.5
},
"durationMs": 11,
"timestamp": "2026-06-05T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
success | boolean | true when the read completed without an error |
functionId | string | ID of the executed function |
data.device | string | Echoes the device/tag reference you supplied (a raw address such as D100, or the tag name if you used one) |
data.dataType | string | Data type used to decode the value |
data.value | any | The decoded value — type matches dataType (BIT → boolean, WORD/INT/DWORD/DINT → number, REAL/LREAL → number, STRING → string) |
durationMs | number | Execution time in milliseconds |
timestamp | string | ISO 8601 / RFC 3339 UTC timestamp |
Read Block — a map keyed by datapoint name:
{
"success": true,
"functionId": "<function-id>",
"data": {
"count": 4,
"values": {
"speed": 1234,
"count": 100000,
"level": 72.5,
"estop": true
},
"totalDataPoints": 4,
"totalReads": 2
},
"durationMs": 18,
"timestamp": "2026-06-05T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
data.values | object | Map keyed by datapoint name — every point configured in the function appears here. |
data.count | number | Number of decoded datapoints returned |
data.totalDataPoints | number | Number of datapoints requested |
data.totalReads | number | Number of SLMP batch requests the points were coalesced into (gap-merged + ceiling-chunked) |
Access pattern in downstream nodes:
{{ $node["MELSEC Read"].data.values.speed }}
{{ $node["MELSEC Read"].data.values.estop }}
A Read Block sorts its datapoints per device code and merges them into the fewest SLMP batch requests — adjacent word points within a small gap become one ReadWords request, adjacent bit points become one ReadBits request, and anything above the per-request ceiling (3584 words / 7168 bits) is automatically chunked. The totalReads field shows how many wire requests the read actually used.
MELSEC Write Node
MELSEC Write Node
Write a single typed value to one writable device. 32-bit and float values are written as a single multi-word batch (atomic per request); bit devices are written natively. Read-only devices (X inputs, TN, CN, SD, SM) are rejected before the request reaches the PLC.
Supported Function Type:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
Write Device (melsec.write.device) | Write a typed value to a single device | Setpoints, recipe download, control/output bits, mode changes |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | MELSEC connection profile to use |
| Function | Selection | Yes | A melsec.write.device function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema (device, dataType, value, length, wordSwap). The value field supports ((paramName)) templates — see the MELSEC connection functions. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
All function parameters support expression syntax ({{ expression }}) and template placeholders (((paramName))). Use expressions like {{ $input.payload.setpoint }} to feed dynamic values into the value parameter.
Input
The node receives the output of the previous node as input.
Output Structure
On success:
{
"success": true,
"functionId": "<function-id>",
"data": {
"device": "D100",
"dataType": "REAL",
"value": "3.14"
},
"durationMs": 12,
"timestamp": "2026-06-05T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
data.device | string | Echoes the device/tag reference that was written (raw address, or the tag name if you used one) |
data.dataType | string | Data type used to encode the value |
data.value | any | Echo of the value that was written (after parameter substitution) |
A write to a read-only device returns success: false with an error like device X0 (X) is read-only, and the request never reaches the PLC.
Always validate values in a Condition node before writing to industrial equipment. A setpoint or output bit can move a motor, valve, or actuator immediately. Use parameter type/default/required settings to enforce ranges, and remember that STRING writes require the function's String Length to be set to the full string length or the value is truncated.
MELSEC Read Group Node
MELSEC Read Group Node
Execute multiple read functions from a single MELSEC connection in one node. The read group runs the selected functions (in parallel or sequentially) and merges their results, which is ideal for comprehensive data collection from one PLC without dropping a node per function.
Per-request batching and chunking still happen inside each melsec.read.block function; the read group coalesces at the pipeline level, the same way the Siemens S7 read group does.
Supported Function Types:
| Function Name | Purpose |
|---|---|
Read Device (melsec.read.device) | One typed value per function |
Read Block (melsec.read.block) | A batch of named datapoints per function |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | MELSEC connection profile to use |
| Functions | Multi-selection | Yes | One or more read functions from the selected connection |
| Execution Mode | Selection | No | How to execute the coalesced requests (parallel or sequential) |
| Timeout Override | Number (seconds) | No | Override the default timeout |
When to use Read Group vs. the standard Read node
| Approach | Use Case |
|---|---|
| MELSEC Read | Execute a single read function (one device or one block) |
| MELSEC Read Group | Execute several read functions from one connection together, with their requests grouped into the fewest SLMP requests |
Device and block reads are grouped into the fewest SLMP requests, with anything above the per-request ceiling (3584 words / 7168 bits) auto-chunked for optimal performance.
Settings Tab
All MELSEC node types share the same Settings tab:
| Setting | Type | Default | Description |
|---|---|---|---|
| Description | Text | — | Optional description displayed on the node |
| Timeout (seconds) | Number | Pipeline default | Maximum time the node may run before timing out |
| Retry on Timeout | Toggle | Pipeline default | Automatically retry the node if it times out |
| Retry on Fail | Toggle | Pipeline default | Automatically retry the node if it fails |
| On Error | Selection | Pipeline default | Error 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.
Use the Test Function button in the function form (on the connection page) to validate every MELSEC function against the live PLC before wiring it into a pipeline. It is the fastest way to catch a wrong address, wrong radix (hex vs decimal), wrong data type, or a read-only target.