Skip to main content
Version: 3.0 (next)

Keyence KV Nodes

Read and write Keyence KV PLCs directly from pipelines over Host Link. Each operation has its own node in the Pipeline Designer (Keyence Read, Keyence Block Read and Keyence Write), plus a Keyence Read Group node that runs several reads in one node.

For connection setup, device addressing, data types and per-function fields, see the Keyence KV connection guide.

Configuration Quick Reference​

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

Keyence Read Node​

Read one typed value from a device or tag, or Count consecutive values as a list. Runs a keyence.read.device function.

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesKeyence connection profile to use
FunctionSelectionYesA keyence.read.device function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function (device, dataType, count, length). See Read Device.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Output Structure​

quality is good when the PLC answered: an error reply (E0–E6) fails the node instead of storing a value, so a value that reached the result is the PLC's own reading.

{
"result": {
"device": "DM100",
"dataType": "DINT",
"value": 1234,
"quality": "good"
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 6, "timestamp": "2026-09-30T08:30:00Z" }
}
FieldTypeDescription
result.devicestringThe device or tag you read (a raw address such as DM100, or the tag name)
result.dataTypestringThe type the value was decoded as
result.valueanyThe decoded value (BIT → boolean, STRING → text, the rest → number); a list of values when Count is more than 1
result.qualitystringgood: a PLC error reply fails the node instead of storing a value
{{ $node["Keyence Read"].result.value }}

Keyence Block Read Node​

Read many named, typed points in the fewest requests. Runs a keyence.read.block function.

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesKeyence connection profile to use
FunctionSelectionYesA keyence.read.block function from the selected connection
Function ParametersDynamicVariesThe dataPoints list. See Read Block.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Output Structure​

{
"result": {
"count": 2,
"values": { "count": 1234, "alarm": true },
"quality": "good",
"totalDataPoints": 2,
"totalReads": 2
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 9, "timestamp": "2026-09-30T08:30:00Z" }
}
FieldTypeDescription
result.valuesobjectEvery point by its name
result.countnumberHow many points were decoded
result.qualitystringgood: a PLC error reply fails the node instead of storing a value
result.totalDataPointsnumberHow many points were requested
result.totalReadsnumberHow many Host Link requests the points were merged into
{{ $node["Keyence Block Read"].result.values.alarm }}
How points are merged

Points on the same device type are sorted by address. Neighbours within a small gap share one RDS request, and a run never exceeds the PLC's per-request count limit (1000 words on KV, 256 on a KV Nano). Relays, timers and counters are read in their own requests. totalReads shows how many requests the read used.


Keyence Write Node​

Write one typed value to a writable device, or a list of values to consecutive devices in one request. Runs a keyence.write.device function.

A single relay is set or reset on its own (ST / RS), so relays the PLC changes meanwhile are never overwritten. A bit inside a data-memory word (DM100.05) is written by reading the word and writing it back with that bit changed. A write is sent once: the node does not repeat it when the PLC does not answer, and it does not run in a pipeline started by a late (replayed) input.

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesKeyence connection profile to use
FunctionSelectionYesA keyence.write.device function from the selected connection
Function ParametersDynamicVariesdevice, dataType, value, length. The value field supports ((paramName)) templates. See Write Device.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Output Structure​

{
"result": {
"device": "DM200",
"dataType": "REAL",
"value": "72.5"
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 7, "timestamp": "2026-09-30T08:30:00Z" }
}
FieldTypeDescription
result.devicestringThe device or tag written
result.dataTypestringThe type the value was encoded as
result.valueanyThe value as given (after parameter substitution)

A value the type cannot hold (70000 as WORD), a write to the read-only digital trimmer AT, or text longer than the string length fails the node before anything is sent to the PLC.

Safety first

Validate values in a Condition node before writing to equipment. A setpoint or relay can move a motor, valve or actuator immediately.


Keyence Read Group Node​

Execute multiple read functions from a single Keyence connection in one node. The read group runs the selected functions (in parallel or sequentially) and merges their results, which is ideal for collecting a line's data from one PLC without a node per function.

Merging neighbouring addresses into one request happens inside each keyence.read.block function. The connection still carries one request at a time, so parallel functions queue on the link rather than overtake each other.

Supported Function Types:

Function NamePurpose
Read Device (keyence.read.device)One typed value (or a list) per function
Read Block (keyence.read.block)A batch of named datapoints per function

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesKeyence connection profile to use
Function SelectionSelectionNoSelect Functions (default) reads the functions you list, All Functions reads every read function on the connection, By Labels reads every function whose labels match the labels you pick
FunctionsListWith Select FunctionsOne or more read functions from the selected connection, each with an optional alias that becomes its output key
Execution ModeSelectionNoHow to execute the coalesced requests (parallel or sequential)
Continue on ErrorToggleNoOn by default: a failed read is recorded in the output and the other functions still run. Off: the node fails as soon as any function fails

Output Structure​

The node output is the canonical {result, _metadata} envelope: result holds one entry per function read, keyed by the function's output key; _metadata holds the group's accounting.

{
"result": {
"Press Count": {
"value": 1234,
"success": true,
"error": "",
"duration": 11,
"timestamp": "2026-09-07T08:30:00Z"
},
"Line Block": {
"value": { "count": 2, "values": { "Temperature": 72.5, "Alarm": false }, "quality": "good", "totalDataPoints": 2, "totalReads": 2 },
"success": true,
"error": "",
"duration": 19,
"timestamp": "2026-09-07T08:30:00Z"
}
},
"_metadata": {
"connectionId": "conn-123",
"connectionName": "Press Line KV-8000",
"total": 2,
"successful": 2,
"failed": 0,
"totalDuration": 83,
"executionMode": "parallel",
"originalRequests": 2
}
}

Each entry under result is one function's read — keyed by the function's alias, else its name, else its id:

FieldTypeDescription
result.<alias>.valueanyWhat the function read — its own result.value when it has one (the decoded value for keyence.read.device, since its result carries value; the whole {count, values, …} object for keyence.read.block), otherwise its whole result. null when the read failed
result.<alias>.successbooleantrue when this function's read succeeded
result.<alias>.errorstringWhy the read failed; empty when it succeeded — always present
result.<alias>.durationnumberHow long this function's read took, in milliseconds
result.<alias>.timestampstringWhen the read was issued, RFC 3339 UTC

The _metadata object is the group's execution summary:

FieldTypeDescription
_metadata.connectionIdstringThe connection every function was read on
_metadata.connectionNamestringThat connection's display name
_metadata.totalnumberHow many functions the group ran
_metadata.successfulnumberHow many read successfully — including the ones onChange then suppressed
_metadata.failednumberHow many failed; successful + failed = total
_metadata.totalDurationnumberWall-clock time of the whole group, in milliseconds
_metadata.executionModestringparallel or sequential
_metadata.originalRequestsnumberHow many functions were selected to run
_metadata.keyCollisionsstring[]Output keys that two or more functions resolved to — the later read overwrote the earlier under that key. Present only when it happened
_metadata.configWarningsstring[]Non-fatal problems in the node's config, each saying what was ignored. Present only when there were any
_metadata.outputModestringonChange — present only in that mode
_metadata.suppressedCountnumberonChange mode: how many successful reads were unchanged since the last run and left out of result
_metadata.emittedCountnumberonChange mode: how many entries result carries — total − suppressedCount
_metadata.suppressedKeysstring[]onChange mode: the output keys left out as unchanged. Present only when at least one was
_metadata.reasonstringonChange mode, when every successful read was unchanged: why result is empty — the node buffers instead of waking downstream

Settings Tab​

All Keyence node types share the same Settings tab:

SettingTypeDefaultDescription
DescriptionText—Optional 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: Pipeline Default (the pipeline's Error Handling setting), Stop Pipeline or Continue Execution

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

Test before wiring

Use Test Function in the function form (on the connection page) to run every Keyence function against the live PLC before wiring it into a pipeline. It catches a wrong address, a hex/decimal mix-up, or a data type the device cannot hold.