Skip to main content
Version: 3.0 (next)

OPC DA Nodes

OPC DA (Data Access) is the classic COM/DCOM-based protocol found in virtually every legacy SCADA and DCS installation. MaestroHub connects to OPC DA servers through a lightweight Windows agent and exposes read, write, and browse capabilities as pipeline nodes.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the OPC DA 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.

OPC DA Write node configuration

OPC DA Write Node

OPC DA Write Node​

Write values to OPC DA server items. Supports writing multiple items in a single execution and dynamic values through expression syntax.

Supported Function Types:

Function NamePurposeCommon Use Cases
OPC DA Write (opcda.write)Send values to OPC DA server itemsUpdate setpoints, write control commands, push recipe parameters

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesOPC DA connection profile to use
FunctionSelectionYesWrite function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your OPC DA connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Function parameters for Write:

ParameterTypeRequiredDescription
dataArray of objectsYesArray of path/value pairs to write (1–50 items)
data[].pathStringYesOPC DA item path to write to
data[].valueAnyYesValue to write

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

Output Structure​

{
"result": {
"results": [
{
"path": "Channel1.Device1.Setpoint",
"success": true
},
{
"path": "Channel1.Device1.Command",
"success": false,
"error": "Access denied"
}
],
"successCount": 1,
"failureCount": 1
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 15, "timestamp": "2026-01-15T08:30:00Z" }
}
FieldTypeDescription
_metadata.successbooleantrue when the function executed without errors
_metadata.functionIdstringID of the executed function
result.resultsarrayPer-item write results
result.results[].pathstringOPC DA item path
result.results[].successbooleanWhether this item was written successfully
result.results[].errorstringError message (present only on failure)
result.successCountnumberNumber of items written successfully
result.failureCountnumberNumber of items that failed
_metadata.durationMsnumberExecution time in milliseconds
_metadata.timestampstringISO 8601 / RFC 3339 UTC timestamp
Safety First

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


OPC DA Read node configuration

OPC DA Read Node

OPC DA Read Node​

Read tag values from an OPC DA server. Supports reading multiple items and optional direct device reads bypassing the server cache.

Supported Function Types:

Function NamePurposeCommon Use Cases
OPC DA Read (opcda.read)Fetch current item values from OPC DA serverEquipment telemetry, quality checks, process monitoring

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesOPC DA connection profile to use
FunctionSelectionYesRead function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your OPC DA connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Function parameters for Read:

ParameterTypeRequiredDefaultDescription
tagsArray of stringsYes—OPC DA item paths to read (1–50 items)
fromDeviceBooleanNofalseRead directly from the device instead of the server cache. Ensures the most current values but may be slower.

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

Output Structure​

{
"result": {
"values": [
{
"path": "Channel1.Device1.Temperature",
"value": 78.5,
"quality": "Good",
"timestamp": "2026-01-15T08:30:00.123Z"
},
{
"path": "Channel1.Device1.Pressure",
"value": 145.2,
"quality": "Good",
"timestamp": "2026-01-15T08:30:00.150Z"
}
]
},
"_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
result.valuesarrayArray of item read results
result.values[].pathstringFull OPC DA item path
result.values[].valueanyCurrent item value — type depends on the OPC DA item data type
result.values[].qualitystringQuality indicator ("Good", "Bad", "Uncertain", "Bad_CommFailure", etc.)
result.values[].timestampstringISO 8601 timestamp from the OPC DA server
_metadata.operation, _metadata.tagCount, _metadata.fromDevicestring, number, booleanThe call's own facts: read, how many tags came back, and whether the values were read straight from the device rather than the server cache
_metadata.durationMsnumberExecution time in milliseconds
_metadata.timestampstringISO 8601 / RFC 3339 UTC timestamp

OPC DA Browse node configuration

OPC DA Browse Node

OPC DA Browse Node​

Browse the OPC DA server tag hierarchy to discover available items. Useful for dynamic tag discovery, building tag catalogs, and verifying server structure within pipelines.

Supported Function Types:

Function NamePurposeCommon Use Cases
OPC DA Browse (opcda.browse)Traverse server tag hierarchyTag discovery, catalog building, server structure verification

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesOPC DA connection profile to use
FunctionSelectionYesBrowse function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your OPC DA connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Function parameters for Browse:

ParameterTypeRequiredDefaultDescription
pathStringNo""Item path to browse. Empty string browses from the root.
limitNumberNo5000Maximum number of nodes to return (100–50,000)

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

Output Structure​

{
"result": {
"path": "",
"nodes": [
{
"name": "Channel1",
"itemId": "Channel1",
"type": "branch",
"hasChildren": true
},
{
"name": "Temperature",
"itemId": "Channel1.Device1.Temperature",
"type": "leaf",
"accessRights": "readWrite",
"hasChildren": false
}
],
"truncated": false
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 85, "timestamp": "2026-01-15T08:30:00Z" }
}
FieldTypeDescription
_metadata.successbooleantrue when the function executed without errors
_metadata.functionIdstringID of the executed function
result.pathstringThe path that was browsed
result.nodesarrayArray of discovered nodes
_metadata.truncatedbooleantrue if results were limited by the limit parameter — a fact about the call, so it rides with the execution facts
_metadata.operation, _metadata.nodeCountstring, numberThe call's other facts: browse, and how many nodes came back
result.nodes[].namestringDisplay name of the node
result.nodes[].itemIdstringFull OPC DA item identifier
result.nodes[].typestring"branch" (folder) or "leaf" (tag)
result.nodes[].accessRightsstring"read", "write", or "readWrite" (leaf nodes only)
result.nodes[].hasChildrenbooleanWhether this node has child items
_metadata.durationMsnumberExecution time in milliseconds
_metadata.timestampstringISO 8601 / RFC 3339 UTC timestamp

Settings Tab​

All OPC DA 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.