Omron FINS Nodes
Read and write Omron CV, CS/CJ, CP, and NJ/NX series PLCs directly from pipelines using FINS/UDP. Each function type authored on an Omron connection is available as a matching node in the Pipeline Designer.
For connection setup, memory-area reference, and per-function configuration fields, see the Omron FINS connection guide.
Configuration Quick Reference
| Field | What you choose | Details |
|---|---|---|
| Parameters | Connection, Function, Function Parameters, Timeout Override | Select the Omron 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. |
Omron Read Node
Omron Read Node
Read one or more typed data points from Omron PLC memory in a single call. Contiguous same-area word points are automatically coalesced into minimal FINS frames to reduce round-trips.
Supported Function Type:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
Read Memory Points (omron.read) | Fetch one or more typed data points | Process variables, recipes, batch data acquisition, status flags |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Omron connection profile to use |
| Function | Selection | Yes | omron.read function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema (dataPoints array). See the Omron connection functions for the full data-point field reference. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
All function parameters support expression syntax ({{ expression }}) and template placeholders (((paramName))) for dynamic values.
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": {
"results": {
"zone_temp": {
"values": [72.5],
"dataType": "Real",
"memoryArea": "DM",
"address": 100,
"count": 1
},
"setpoint": {
"values": [1024],
"dataType": "Word",
"memoryArea": "DM",
"address": 102,
"count": 1
},
"fan_running": {
"values": [true],
"dataType": "Bit",
"memoryArea": "CIO",
"address": 50,
"count": 1
}
}
},
"durationMs": 38,
"timestamp": "2026-04-21T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
success | boolean | true when the function executed without errors |
functionId | string | ID of the executed function |
data.results | object | Map keyed by data point name — every point configured in the function appears here |
durationMs | number | Execution time in milliseconds |
timestamp | string | ISO 8601 / RFC 3339 UTC timestamp |
Each data point entry contains:
| Field | Type | Description |
|---|---|---|
values | array | Decoded values. Always an array — scalar types (Word/DWord/Real/Bit) return a single-element array; String and Bytes return a one-entry array containing the full blob. |
dataType | string | Echoes the configured data type (Bit, Word, DWord, Real, Bytes, String). |
memoryArea | string | Echoes the configured memory area (CIO, WR, HR, AR, DM, EM, TIM_CT_PV, TIM_CT_FLAG, TASK_STATUS). |
address | number | Echoes the starting word address. |
count | number | Echoes the configured count. |
Access pattern in downstream nodes:
{{ $node["Omron Read"].data.results.zone_temp.values[0] }}
{{ $node["Omron Read"].data.results.fan_running.values[0] }}
If a single data point fails (e.g. a decode error, or a per-point FINS end code), that point's entry contains error, category, and optionally endCode fields instead of values. Other data points in the same call still return successfully, and the node itself reports success: true.
Contiguous same-area points (within the same memory area and EM bank) are merged into a single FINS read frame. Points separated by a gap of 4 words or less are still merged — it's cheaper than a second round-trip. Bit reads are not merged with word reads because they use a different FINS frame shape.
Omron Write Node
Omron Write Node
Write a single value or a contiguous run of values to a writable Omron memory area. Read-only areas (AR 0..447, TIM_CT_FLAG, TASK_STATUS) are rejected client-side before the request hits the wire.
Supported Function Type:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
Write Memory (omron.write) | Write a typed value or contiguous run of values | Setpoints, recipe download, ASCII labels, bulk register updates |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Omron connection profile to use |
| Function | Selection | Yes | omron.write function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema (memoryArea, address, dataType, values, bitOffset?, emBank?). See the Omron connection functions for field-level details. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
All function parameters support expression syntax ({{ expression }}) and template placeholders (((paramName))).
Input
The node receives the output of the previous node as input. Use expressions like {{ $input.payload.setpoint }} to pass dynamic values into values.
Output Structure
On success:
{
"success": true,
"functionId": "<function-id>",
"data": {
"memoryArea": "DM",
"address": 200,
"dataType": "Real",
"written": 1,
"timestamp": "2026-04-21T08:30:00Z"
},
"durationMs": 12,
"timestamp": "2026-04-21T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
data.memoryArea | string | Echoes the target memory area |
data.address | number | Echoes the starting word address |
data.dataType | string | Echoes the data type |
data.written | number | Number of units written (length of the values array) |
data.timestamp | string | ISO 8601 / RFC 3339 UTC timestamp of the write |
Always validate values in a condition node before writing to industrial equipment. Use parameter type/default/required settings to enforce ranges. For single bits, prefer the Omron Bit Control node — it's atomic at the PLC, so it won't clobber neighbouring bits in the same word.
Omron Bit Control Node
Omron Bit Control Node
Atomically set, reset, or toggle a single bit on the PLC via Omron's Force Set/Reset FINS commands. Safer than a full-word write because no other bits in the same word are touched.
Supported Function Type:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
Bit Control (omron.bit.control) | Set / Reset / Toggle a single bit | Start/stop flags, alarm latch reset, test indicators |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Omron connection profile to use |
| Function | Selection | Yes | omron.bit.control function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema (memoryArea, address, bitOffset, action, emBank?). See the Omron connection functions. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Input
The node receives the output of the previous node as input. Bind action via a placeholder (((bitAction))) if you want to drive Set vs Reset from an upstream decision.
Output Structure
On success:
{
"success": true,
"functionId": "<function-id>",
"data": {
"memoryArea": "CIO",
"address": 100,
"bitOffset": 3,
"action": "Set",
"timestamp": "2026-04-21T08:30:00Z"
},
"durationMs": 9,
"timestamp": "2026-04-21T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
data.memoryArea | string | Echoes the target area |
data.address | number | Echoes the word address |
data.bitOffset | number | Echoes the bit position (0–15) |
data.action | string | Echoes the action (Set / Reset / Toggle) |
data.timestamp | string | ISO 8601 / RFC 3339 UTC timestamp |
Set and Reset use Omron's Force Set/Reset commands and are atomic at the PLC.
Toggle is implemented as read-modify-write — if another writer updates the same word between the read and the write, the toggle may overwrite that change. Prefer Set/Reset whenever possible.
Omron Read Clock Node
Omron Read Clock Node
Read the PLC's internal real-time clock. It takes no parameters, is the cheapest possible FINS frame, and doubles as a lightweight connectivity probe.
Supported Function Type:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
Read PLC Clock (omron.read.clock) | Fetch the PLC clock value | Log PLC time, drift monitoring, lightweight health check |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Omron connection profile to use |
| Function | Selection | Yes | omron.read.clock function from the selected connection |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
The function itself has no parameters.
Output Structure
On success:
{
"success": true,
"functionId": "<function-id>",
"data": {
"timestamp": "2026-04-21T08:30:42Z",
"dayOfWeek": 2
},
"durationMs": 6,
"timestamp": "2026-04-21T08:30:42Z"
}
| Field | Type | Description |
|---|---|---|
data.timestamp | string | PLC clock value as ISO 8601 / RFC 3339 UTC |
data.dayOfWeek | number | PLC-reported day of week (0 = Sunday, 1 = Monday, …, 6 = Saturday) |
Memory Areas
Omron memory areas that the connector recognises:
| Area | Name | Readable | Writable | Bit-addressable |
|---|---|---|---|---|
CIO | Core I/O | Yes | Yes | Yes |
WR | Work Area | Yes | Yes | Yes |
HR | Holding Relay (retentive) | Yes | Yes | Yes |
AR | Auxiliary Relay | Yes | 0..447 read-only; 448+ writable | Yes |
DM | Data Memory | Yes | Yes | Yes |
EM | Expansion Memory (bank required, 0–12) | Yes | Yes | Yes |
TIM_CT_PV | Timer/Counter present value | Yes | Yes | No (word only) |
TIM_CT_FLAG | Timer/Counter completion flag | Yes | No (read-only) | Yes (bit only) |
TASK_STATUS | Task status | Yes | No (read-only) | No (word only) |
Supported Data Types
| Data Type | Words on Wire (per unit) | Value Shape |
|---|---|---|
Bit | — (bit frame) | boolean |
Word | 1 | unsigned 16-bit integer (0–65535) |
DWord | 2 (low word first) | unsigned 32-bit integer |
Real | 2 (low word first) | IEEE 754 single-precision float |
Bytes | ⌈N/2⌉ | single raw byte array (one blob) |
String | ⌈N/2⌉ | single ASCII string (one blob) |
See the Omron connection guide for detailed semantics and per-type examples.
Settings Tab
All Omron 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 button in the function form (on the connection page) to validate every Omron function against the live PLC before wiring it into a pipeline. It's the fastest way to catch wrong addresses, wrong data types, or routing mistakes.