Skip to main content
Version: 3.0 (next)

Siemens S7 Nodes

Communicate with Siemens S7-300, S7-400, S7-1200, and S7-1500 series PLCs through dedicated read, write, and system nodes optimized for deterministic industrial control.

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.

Siemens S7 Read node configuration

S7 Read Node

S7 Read Node​

Read data from Siemens PLC data blocks and memory areas with optimized batch reading.

Supported Function Types:

Function NamePurposeCommon Use Cases
Read Data Block Multi (s7.read.db.multi)Fetch multiple data points from a single DBRecipes, production counters, configuration
Read Memory Area Multi (s7.read.memory.multi)Read multiple data points from M, I, or Q areasInterlocking, diagnostics, status dashboards

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesS7 connection profile to use
FunctionSelectionYesRead function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your S7 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:

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

Function-Specific Output Data​

Read Data Block Multi (s7.read.db.multi) — the node's result:

{
"dbNumber": 100,
"dataPoints": {
"Temperature": {
"value": 25.5,
"dataType": "REAL",
"start": 0,
"size": 4,
"rawBuffer": [...]
},
"Pressure": {
"value": 1234,
"dataType": "INT",
"start": 4,
"size": 2,
"rawBuffer": [...]
}
},
"readOperations": [
{ "start": 0, "size": 6, "bytesRead": 6 }
],
"totalDataPoints": 2,
"totalReads": 1
}
FieldTypeDescription
result.dbNumbernumberData block number that was read
result.dataPointsobjectMap of data point name to result. Each entry contains value, dataType, start, size, rawBuffer and quality (good — a point that decoded is the PLC's own reading; a read or parse failure fails the whole node instead of storing a value). Pass quality to a UNS Publish node's Quality parameter.
result.readOperationsarrayOptimized read operations performed (adjacent points are coalesced)
result.totalDataPointsnumberNumber of data points returned
result.totalReadsnumberNumber of actual read operations (may be fewer than data points due to coalescing)

Read Memory Area Multi (s7.read.memory.multi) — the node's result:

{
"area": "M",
"dataPoints": {
"Flag1": {
"value": true,
"dataType": "BIT",
"start": 0,
"size": 1,
"rawBuffer": [...]
}
},
"readOperations": [
{ "start": 0, "size": 1, "bytesRead": 1 }
],
"totalDataPoints": 1,
"totalReads": 1
}
FieldTypeDescription
result.areastringMemory area: M (Merkers), I (Process Inputs), Q (Process Outputs)
result.dataPointsobjectSame structure as Read Data Block
result.readOperationsarrayOptimized read operations
result.totalDataPointsnumberNumber of data points
result.totalReadsnumberActual read operations performed

Function parameters for Read Data Block Multi:

ParameterTypeRequiredDescription
dbNumberNumberYesData block number (0–65535)
dataPointsArrayYesData points to read (see Data Point Structure below)

Function parameters for Read Memory Area Multi:

ParameterTypeRequiredDescription
areaStringYesMemory area: M, I, or Q
dataPointsArrayYesData points to read (see Data Point Structure below)

Data Point Structure:

FieldTypeRequiredDescription
nameStringYesUnique name for this data point
startNumberYesByte offset (>= 0)
sizeNumberYesSize in bytes (1–65536)
dataTypeStringYesS7 data type (see Supported Data Types)
bitPosNumberFor BIT onlyBit position (0–7), required when dataType is BIT
Read Coalescing

Adjacent data points are automatically merged into fewer read operations. Data points within 32 bytes of each other are combined into a single read (up to 255 bytes per operation), reducing PLC communication overhead.


Siemens S7 Write node configuration

S7 Write Node

S7 Write Node​

Write deterministic control values to Siemens PLC data blocks or memory areas.

Supported Function Types:

Function NamePurposeCommon Use Cases
Write Data Block (s7.write.db)Write a value to a DB locationDownload production orders or recipes
Write Memory Area (s7.write.memory)Write a value to M or Q areasForce outputs, toggle sequences, command transitions

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesS7 connection profile to use
FunctionSelectionYesWrite function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your S7 connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride 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. Use expressions like {{ $input[0].result.value }} to pass dynamic values to write parameters.

Function-Specific Parameters and Output​

Write Data Block (s7.write.db):

ParameterTypeRequiredDescription
dbNumberNumberYesData block number (0–65535)
startNumberYesByte offset (>= 0)
dataTypeStringYesS7 data type (see Supported Data Types)
valueStringYesValue to write (parsed according to dataType)
bitPosNumberFor BIT onlyBit position (0–7)
sizeNumberFor STRING/CHARSize in bytes (1–65536)

The node's result (result.dbNumber, result.start, result.dataType, result.value, result.bytesWritten; when the write ran is _metadata.timestamp):

{
"dbNumber": 100,
"start": 0,
"dataType": "REAL",
"value": "25.5",
"bytesWritten": 4
}

Write Memory Area (s7.write.memory):

ParameterTypeRequiredDescription
areaStringYesMemory area: M or Q only (I is read-only)
startNumberYesByte offset (>= 0)
dataTypeStringYesS7 data type (STRING not supported for memory writes)
valueStringYesValue to write
bitPosNumberFor BIT onlyBit position (0–7)

The node's result (result.area instead of result.dbNumber, the rest as above):

{
"area": "M",
"start": 0,
"dataType": "BIT",
"value": "true",
"bytesWritten": 1
}
BIT Writes

BIT writes use a Read-Modify-Write pattern: the node reads the current byte, modifies the specific bit, and writes the byte back. This ensures other bits in the same byte are preserved.

Safety First

Always implement validation and safety checks before writing to industrial equipment. Consider adding condition nodes to verify values are within safe ranges. The Input area (I) is read-only and cannot be written.


S7 Read Group Node​

The S7 Read Group node executes multiple S7 read operations in a single node with request coalescing for efficiency. It supports selective function lists, an All Functions mode, and parallel or sequential execution.

Node Configuration​

ParameterTypeRequiredDefaultDescription
ConnectionSelectionYes—S7 connection profile
Function SelectionSelectionNoSelect FunctionsSelect Functions 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.
FunctionsArray of {functionId, alias}When Function Selection is Select Functions[]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

All Functions Mode​

When Function Selection is All Functions, the function list is ignored. The node automatically discovers and executes every read function defined on the selected connection.

Read function types that All Functions runs:

Function TypeDescription
s7.read.db.multiRead Data Block Multi
s7.read.memory.multiRead Memory Area Multi

Input​

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

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": {
"DB100 Temperatures": {
"value": { "dbNumber": 100, "dataPoints": { "Temperature": { "value": 25.5, "dataType": "REAL", "start": 0, "size": 4 } }, "totalDataPoints": 1, "totalReads": 1 },
"success": true,
"error": "",
"duration": 45,
"timestamp": "2026-09-07T08:30:00Z"
},
"Merker Flags": {
"value": { "area": "M", "dataPoints": { "RunFlag": { "value": true, "dataType": "BIT", "start": 0, "size": 1 } }, "totalDataPoints": 1, "totalReads": 1 },
"success": true,
"error": "",
"duration": 38,
"timestamp": "2026-09-07T08:30:00Z"
}
},
"_metadata": {
"connectionId": "conn-123",
"connectionName": "S7-1500 Line A",
"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 (see Output Key Resolution):

FieldTypeDescription
result.<alias>.valueanyWhat the function read — its own result.value when it has one (the whole {dbNumber, dataPoints, totalDataPoints, totalReads} object for a DB read, {area, dataPoints, …} for a memory read — neither result carries a top-level value), 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

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)

Execution Modes​

Parallel (default)

  • All functions execute concurrently.
  • Fastest total execution time.
  • Best when reading from different data blocks or memory areas.

Sequential

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

S7 PLCs typically support a limited number of concurrent connections (usually 8). Parallel mode runs multiple reads within a single connection, which is safe and efficient.

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.
  • With Select Functions, at least one function entry is required; with By Labels, at least one label is required.
  • Duplicate functionId values are not allowed.
  • Duplicate alias values are not allowed.
  • The connection type must be s7.

Best Practices​

  • Use All Functions for complete PLC data snapshots during commissioning or diagnostics.
  • Use specific functions in production pipelines for targeted reads.
  • Assign aliases to make output keys descriptive (e.g., "Line A Temperatures" instead of a function ID).
  • Leverage read coalescing — define data points close together in the same DB to minimize the number of actual read operations.

Supported Data Types​

The following data types are supported in S7 read and write operations:

Data TypeSizeDescription
BIT1 byteBoolean value (requires bitPos 0–7)
BYTE1 byteUnsigned 8-bit integer (0–255)
WORD2 bytesUnsigned 16-bit integer (0–65535)
DWORD4 bytesUnsigned 32-bit integer
INT2 bytesSigned 16-bit integer (−32768 to 32767)
DINT4 bytesSigned 32-bit integer
REAL4 bytes32-bit IEEE 754 floating point
LREAL8 bytes64-bit IEEE 754 floating point
CHARVariableASCII character(s)
STRINGVariableS7 string with 2-byte header (DB writes only)

Memory Areas:

AreaNameReadableWritable
MMerkers (Flags)YesYes
IProcess InputsYesNo
QProcess OutputsYesYes

Settings Tab​

All S7 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.