Atlas Copco Open Protocol (Tightening)
Open Protocol is a tightening controller standard published by Sweden's Atlas Copco in the late 1990s. Nearly every torque wrench, nutrunner, and power tool on automotive, aerospace, and home-appliance assembly lines speaks this protocol.
Representative controllers: Power Focus 4000 / 6000 / 8 / Tools Net / FlexController.
This gateway's OP driver focuses on collecting tightening results (last result) and changing Psets.
Registration form entries
| Field | What to enter | Example |
|---|---|---|
| IP address | Controller IP | 192.168.0.100 |
| Port | Open Protocol port | 4545 (standard) |
| Cell ID (cell-id) | Cell number in a multi-cell setup | 1 (for a single cell, use 0 or leave blank) |
| Channel ID (channel-id) | Channel / spindle within the controller | 1 |
Open Protocol has no authentication step. Once the IP is reachable and the controller accepts "MID 0001 application start", communication begins.
PLC address notation for tags
Open Protocol data arrives in MID (Message ID) units. The gateway unpacks and exposes the fields of the most frequently used MIDs as follows.
| Notation | Meaning |
|---|---|
MID:0061:torque | Last tightening result — torque (real) |
MID:0061:angle | Last tightening result — angle |
MID:0061:status | Result status (1 = OK, 0 = NOK) |
MID:0061:psetId | Pset number used |
MID:0061:vin | VIN / Identifier (string) |
MID:0061:resultData | Full raw payload (string) |
MID:0071:alarm | Alarm raised (string) |
MID:0035:psetId | Currently selected Pset (Read) |
Write (Pset change)
| Notation | Meaning |
|---|---|
MID:0018:psetId | Write a Pset number to force selection (write-only) |
For writable notations, you must enable write permission under [Tag Registration] in the gateway.
Data format matching
| MID field | Data format | Format modifier |
|---|---|---|
| Measured values such as torque / angle | Float | REAL |
| Status / Pset number | Integer | (blank) |
| VIN / alarm message | String | STR[N] |
| OK / NOK | Boolean | (blank) |
Common problems and fixes
| Symptom / message | Possible cause | Fix |
|---|---|---|
| Connection succeeds but no values arrive | MID 0060 / 0061 subscribe failed | Check that the controller firmware supports "Result data subscription" |
| New tightening occurred but values do not change | Controller is in an unsubscribed state | Restart the gateway → MID 0001 + 0060 re-subscribe automatically |
| "MID not supported" | MID differences by firmware / model | Check the compatibility table in the Atlas Copco Open Protocol Specification PDF |
| Torque value off by a factor of 100 or 1000 | Unit mismatch (Nm vs cNm) | Convert units with Apply Formula |
Frequently used examples
A standard registration set for one channel of a tightening line.
| Tag name | Address | Data format | Format modifier |
|---|---|---|---|
| Last torque | MID:0061:torque | Float | REAL |
| Last angle | MID:0061:angle | Float | REAL |
| OK/NOK | MID:0061:status | Boolean | (blank) |
| Pset number | MID:0061:psetId | Integer | (blank) |
| VIN | MID:0061:vin | String | STR[25] |
Tightening results are commonly post-processed and loaded into a DB. Combining View Collection History with Advanced — REST API makes pushing to the MES straightforward.
Rich result data fields of MID 0061 (Last Tightening Result)
Atlas Copco controllers include the following rich fields in the MID 0061 response. The gateway unpacks and exposes the commonly used fields in advance, but you can also take the raw payload via resultData and parse it yourself.
| Field | Meaning | Data format |
|---|---|---|
cellId | Cell number | Integer |
channelId | Channel / spindle number | Integer |
torqueControllerName | Controller name | String |
vin | VIN / Identifier (usually the body number) | String |
psetId | Pset number used | Integer |
psetName | Pset name (human-readable) | String |
batchSize | Batch size (e.g. 4 bolts) | Integer |
batchCount | Current batch counter (n/batchSize) | Integer |
batchStatus | Batch OK / NOK / in progress | Integer (0/1/2) |
torque | Measured torque (Nm) | Float |
torqueStatus | Torque OK / Low / High | Integer |
angle | Measured angle (degrees) | Float |
angleStatus | Angle OK / Low / High | Integer |
prevailingTorque | Friction torque (optional) | Float |
currentMonitoring | Current monitoring result | Float |
selfTapTorque | Self-tap torque | Float |
tighteningId | Unique tightening ID | Long |
timestamp | Tightening timestamp (ISO-8601) | String |
toolSerial | Tool serial number | String |
operatorName | Operator ID (if present) | String |
resultData | Raw text containing all of the above fields | String |
In the gateway's [Tag Registration], simply pick entries such as MID:0061:torque, MID:0061:angle, and MID:0061:status.
Frequently used operating patterns
Pattern 1. Standard registration set for one line channel (automotive line)
| Tag name | Address | Format | Notes |
|---|---|---|---|
| Last torque | MID:0061:torque | Float | Nm by default |
| Last angle | MID:0061:angle | Float | Degrees |
| OK/NOK | MID:0061:status | Boolean | OK=true |
| Pset number | MID:0061:psetId | Integer | |
| VIN | MID:0061:vin | String | Body number |
| Operation timestamp | MID:0061:timestamp | String | ISO-8601 |
| Tool serial | MID:0061:toolSerial | String | For tool traceability |
Pattern 2. OK/NOK per batch (one body = 6 bolts)
| Tag name | Address | Format |
|---|---|---|
| Batch counter | MID:0061:batchCount | Integer |
| Batch status | MID:0061:batchStatus | Integer |
The moment batchStatus becomes 1 (OK) marks completion of one body. Use it as an MES / downstream process trigger.
Pattern 3. Forced Pset change (write)
MID:0018:psetId = 12
Force a Pset number from the host during line changes or model changeovers. This is normally handled by the PLC / MES, but it is also possible via PlantPulse's [tag write permission].
Pattern 4. Alarm monitoring
| Tag name | Address | Format |
|---|---|---|
| Alarm text | MID:0071:alarm | String |
The controller pushes this when an alarm is raised. Use it for PlantPulse notifications and post-processing.
More detailed examples / automated registration
See the Open Protocol examples in Advanced — REST API.