Skip to main content
Version: 3.0 (next)

Open Protocol Nodes

Read tightening results and tool data, and control tightening controllers (Atlas Copco, Desoutter, Stanley, Cleco) from a pipeline.

Status
Beta
Reads
Tightening result · Tool data
Commands
7, each sent at most once

Use tightening controllers that speak Open Protocol in pipelines. Each function authored on an Open Protocol connection is available as a matching node in the Pipeline Designer.

For connection setup, controller preparation and how results are acknowledged, see the Open Protocol connection guide.

For the event-driven triggers (every tightening result, alarms, parameter set changes and job progress), see the Open Protocol Triggers.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the Open Protocol connection, 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 and error strategy. All execution settings default to pipeline-level values.

Open Protocol Read Tightening Result nodeOpen Protocol Read Tightening Result node

Read Tightening Result node

Open Protocol Read Tightening Result Node​

Supported Function Types:

NodeFunctionPurposeCommon Use Cases
Open Protocol Read Tightening Result (connected.openprotocol.readResult)openprotocol.readResultOne stored result by tightening ID, or the latest oneQuality reviews, fetching results missed during an outage

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesOpen Protocol connection profile to use
FunctionSelectionYesAn openprotocol.readResult function from the selected connection
Function ParametersDynamicVariesThe tightening ID (0 = latest) can be a ((parameter)). See Read Tightening Result.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

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

Output Structure​

{
"result": {
"tighteningId": 4711,
"status": "NOK",
"resultType": "tightening",
"psetId": 4,
"jobId": 1,
"vin": "WAUZZZ8V5KA012345",
"torque": { "value": 12.48, "min": 11, "max": 13, "target": 12, "status": "ok", "unit": "Nm" },
"angle": { "value": 182, "min": 90, "max": 180, "target": 150, "status": "high" },
"batch": { "size": 10, "counter": 4, "status": "running" },
"timestamp": "2026-10-21T07:14:03Z"
}
}

Which keys are present depends on the result revision the controller answers in; a field the controller leaves blank is absent, never 0.

KeyMeaning
result.tighteningIdThe controller's ID of this tightening
result.statusOK or NOK
result.resultTypetightening, loosening, batchIncrement, batchDecrement, … (revision 3 and later)
result.psetIdThe parameter set used
result.jobIdThe job the tightening belongs to
result.vinThe VIN or part identifier
result.identifierResultPart2, result.identifierResultPart3, result.identifierResultPart4Further identifiers (revision 4 and later)
result.timestampWhen the tightening happened, UTC (converted from the controller's zone)
result.torquevalue, min, max, target, status (low, ok, high) and, from revision 3, unit
result.anglevalue, min, max, target in degrees, and status
result.batchsize, counter and status (ok, nok, notUsed, running)
result.strategyThe tightening strategy, e.g. torqueControlAngleMonitoring
result.strategyOptionsThe strategy option bits, each a boolean
result.errorStatus, result.errorStatus2The tightening error bits, each a boolean
result.rundownAngle, result.selfTap, result.prevailTorque, result.prevailTorqueCompensate, result.currentMonitoring, result.currentMonitoringAmp, result.overallAngleEach monitored value with its limits and status, as for torque and angle
result.postViewTorquePost-view torque settings and limits
result.peakTorque, result.residualBreakawayTorque, result.clickTorque, result.clickAngleFurther measured values (later revisions)
result.startFinalAngle, result.startRundownAngle, result.rundownAngleCompleteAngle measurement points (later revisions)
result.angleNumeratorScaleFactor, result.angleDenominatorScaleFactorAngle scale factors (revision 10 and later)
result.customerTighteningErrorCodeThe customer error code (revision 5 and later)
result.jobSequenceNumber, result.syncTighteningIdJob sequence number and synchronised tightening ID
result.toolSerialNumberThe tool that tightened
result.selectedIdentifierNumber, result.jointIdIdentifier number and joint ID (revision 12)
result.stationId, result.stationNameThe station that stored the result, on controllers with several stations

Read the torque with $node["Read Result"].result.torque.value.


Open Protocol Read Tool Data nodeOpen Protocol Read Tool Data node

Read Tool Data node

Open Protocol Read Tool Data Node​

Supported Function Types:

NodeFunctionPurposeCommon Use Cases
Open Protocol Read Tool Data (connected.openprotocol.readTool)openprotocol.readToolThe tool's serial number, tightening count and calibrationService intervals, calibration tracking

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesOpen Protocol connection profile to use
FunctionSelectionYesAn openprotocol.readTool function from the selected connection
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

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

Output Structure​

{
"result": {
"toolSerialNumber": "B1234567",
"tighteningCount": 1500,
"lastCalibrationDate": "2026-09-01T06:00:00Z",
"controllerSerialNumber": "9876543210"
}
}
KeyMeaning
result.toolSerialNumberThe tool's serial number
result.tighteningCountTightenings the tool has done
result.lastCalibrationDateThe last calibration, UTC
result.controllerSerialNumberThe controller's serial number
result.calibrationValueThe calibration value (revision 2 and later)
result.lastServiceDate, result.tighteningsSinceServiceService data
result.toolType, result.motorSize, result.openEndDataTool type, motor size and open-end settings
result.controllerSoftwareVersionThe controller software version
result.toolMaxTorque, result.gearRatio, result.toolFullSpeedTool ratings
result.primaryTool, result.toolModelPrimary tool type and model (later revisions)

Open Protocol Select Parameter Set nodeOpen Protocol Select Parameter Set node

Select Parameter Set node, one of the seven command nodes

Open Protocol Command Nodes​

Supported Function Types:

NodeFunctionPurpose
Open Protocol Select Parameter Set (connected.openprotocol.selectPset)openprotocol.selectPsetSelect the parameter set the tool runs next
Open Protocol Select Job (connected.openprotocol.selectJob)openprotocol.selectJobSelect the job the station runs next
Open Protocol Set Batch Size (connected.openprotocol.setBatchSize)openprotocol.setBatchSizeSet a parameter set's batch size
Open Protocol Reset Batch Counter (connected.openprotocol.resetBatchCounter)openprotocol.resetBatchCounterRestart a running batch
Open Protocol Disable Tool (connected.openprotocol.disableTool)openprotocol.disableToolLock the tool
Open Protocol Enable Tool (connected.openprotocol.enableTool)openprotocol.enableToolRelease the tool
Open Protocol Send VIN (connected.openprotocol.sendVin)openprotocol.sendVinSend a VIN or part identifier

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesOpen Protocol connection profile to use
FunctionSelectionYesA command function from the selected connection
Function ParametersDynamicVariesIDs, batch size and VIN can be ((parameters)). See Commands.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

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

A command acts on the tool and is never sent twice automatically

Every parameter is checked before anything is sent. If the command fails after it may have reached the controller (no answer, a dropped connection), the node fails with outcome unknown and is not retried, even with Retry on Fail or a ForEach retry configured. Check the controller before running it again. A command the controller refused fails as refused, with the controller's reason, and is not retried either.

A command is also refused in a run started by a late (replayed) value, unless the node allows late input.

Output Structure​

{
"result": {
"accepted": true,
"mid": "0018",
"revision": 1
}
}
KeyMeaning
result.acceptedThe controller accepted the command (MID 0005); always true on a success
result.midThe Open Protocol message sent, e.g. 0018 for Select Parameter Set
result.revisionThe message revision sent (2 for job IDs or batch sizes above 99)

Errors​

ErrorMeaningRetried by the node settings?
controller refused MID 0018: error 02, parameter set ID not presentThe controller did not act: it names its reasonNo
outcome unknownA command may have reached the controller and no answer came backNever
tightening ID requested not foundThe controller no longer holds that resultNo
not connectedThe connection is down; nothing was sentRead nodes, as configured; command nodes are not retried