Atlas Copco Open Protocol (拧紧)
Open Protocol 是瑞典 Atlas Copco 于 1990 年代后期公开的拧紧 (tightening) 控制器标准协议。汽车 / 航空 / 白色家电装配线上的扭矩扳手 / 拧紧枪 / 电动工具几乎都采用该协议。
代表性控制器:Power Focus 4000 / 6000 / 8 / Tools Net / FlexController。
本网关的 OP 驱动重点在于 拧紧结果 (last result) 采集 + Pset 切换。
注册表单输入项
| 输入栏 | 填写内容 | 示例 |
|---|---|---|
| IP 地址 | 控制器 IP | 192.168.0.100 |
| 端口 | Open Protocol 端口 | 4545 (标准) |
| 单元 ID (cell-id) | 多单元环境下的单元编号 | 1 (单单元时填 0 或留空) |
| 通道 ID (channel-id) | 控制器内的通道 / 主轴 | 1 |
Open Protocol 没有认证流程。只要 IP 可达且控制器接受 “MID 0001 application start”,通信即开始。
标签的 PLC 地址表示法
Open Protocol 的数据以 MID (Message ID) 为单位传入。网关将最常用 MID 的字段解析后按如下方式暴露。
| 表示法 | 含义 |
|---|---|
MID:0061:torque | 最后一次拧紧结果 — 扭矩 (实数) |
MID:0061:angle | 最后一次拧紧结果 — 角度 |
MID:0061:status | 结果状态 (1 = OK, 0 = NOK) |
MID:0061:psetId | 所使用的 Pset 编号 |
MID:0061:vin | VIN / Identifier (字符串) |
MID:0061:resultData | 完整 raw payload (字符串) |
MID:0071:alarm | 报警发生 (字符串) |
MID:0035:psetId | 当前选中的 Pset (Read) |
写入 (Pset 切换)
| 表示法 | 含义 |
|---|---|
MID:0018:psetId | 写入 Pset 编号以强制选择 (仅 Write) |
可写表示法需在网关的 [标签注册] → 写权限 ON 中进行设置。
数据格式匹配
| MID 字段 | 数据格式 | 格式辅助 |
|---|---|---|
| 扭矩 / 角度等测量值 | Float | REAL |
| 状态 / Pset 编号 | Integer | (留空) |
| VIN / 报警消息 | String | STR[N] |
| OK / NOK | Boolean | (留空) |
常见问题与解决方法
| 现象 / 消息 | 可能原因 | 解决方法 |
|---|---|---|
| 只连接上但收不到值 | MID 0060 / 0061 subscribe 失败 | 确认控制器固件是否支持 “Result data subscription” |
| 已有新的拧紧但值不变 | 控制器处于 unsubscribe 状态 | 重启网关 → 自动重新订阅 MID 0001 + 0060 |
| “MID not supported” | 固件 / 型号间的 MID 差异 | 查阅 Atlas Copco Open Protocol Specification PDF 的兼容表 |
| 扭矩值相差 100 倍 / 1000 倍 | 单位 (Nm vs cNm) 不一致 | 通过应用计算公式进行单位换算 |
常用示例
拧紧线单个通道的标准注册组合。
| 标签名称 | 地址 | 数据格式 | 格式辅助 |
|---|---|---|---|
| 最后扭矩 | MID:0061:torque | Float | REAL |
| 最后角度 | MID:0061:angle | Float | REAL |
| OK/NOK | MID:0061:status | Boolean | (留空) |
| Pset 编号 | MID:0061:psetId | Integer | (留空) |
| VIN | MID:0061:vin | String | STR[25] |
拧紧结果通常需要后处理 / 入库。配合查看采集历史与高级 — REST API使用,可轻松向 MES 侧 push 数据。
MID 0061 (Last Tightening Result) 的丰富结果数据字段
Atlas Copco 控制器在 MID 0061 响应中包含如下丰富字段。网关会预先解析常用字段并暴露,但也可以通过 resultData 获取 raw payload 自行解析。
| 字段 | 含义 | 数据格式 |
|---|---|---|
cellId | 单元编号 | Integer |
channelId | 通道 / 主轴编号 | Integer |
torqueControllerName | 控制器名称 | String |
vin | VIN / Identifier (通常为车身号) | String |
psetId | 所使用的 Pset 编号 | Integer |
psetName | Pset 名称 (可读) | String |
batchSize | 单批次大小 (例如 4 颗螺栓) | Integer |
batchCount | 当前批次计数 (n/batchSize) | Integer |
batchStatus | 批次 OK / NOK / 进行中 | Integer (0/1/2) |
torque | 实测扭矩 (Nm) | Float |
torqueStatus | 扭矩 OK / Low / High | Integer |
angle | 实测角度 (度) | Float |
angleStatus | 角度 OK / Low / High | Integer |
prevailingTorque | 摩擦扭矩 (可选) | Float |
currentMonitoring | 电流监控结果 | Float |
selfTapTorque | 自攻扭矩 | Float |
tighteningId | 拧紧唯一 ID | Long |
timestamp | 拧紧时刻 (ISO-8601) | String |
toolSerial | 工具序列号 | String |
operatorName | 操作员 ID (若有) | String |
resultData | 包含以上所有字段的 raw 文本 | String |
在网关的 [标签注册] 中,按 MID:0061:torque、MID:0061:angle、MID:0061:status 这样选择并注册即可。
常用运维模式
模式 1. 产线单通道的标准注册组合 (汽车产线)
| 标签名称 | 地址 | 格式 | 备注 |
|---|---|---|---|
| 最后扭矩 | MID:0061:torque | Float | 默认单位 Nm |
| 最后角度 | MID:0061:angle | Float | 度 |
| OK/NOK | MID:0061:status | Boolean | OK=true |
| Pset 编号 | MID:0061:psetId | Integer | |
| VIN | MID:0061:vin | String | 车身号 |
| 作业时刻 | MID:0061:timestamp | String | ISO-8601 |
| 工具序列号 | MID:0061:toolSerial | String | 用于工具追溯 |
模式 2. 以批次 (一台车身 = 6 颗螺栓) 为单位的 OK/NOK
| 标签名称 | 地址 | 格式 |
|---|---|---|
| 批次计数 | MID:0061:batchCount | Integer |
| 批次状态 | MID:0061:batchStatus | Integer |
batchStatus 变为 1 (OK) 的时刻即为一台车身完成的时间点。可用作 MES / 后工序的 trigger。
模式 3. 强制切换 Pset (write)
MID:0018:psetId = 12
在换线 / 车型切换时由 host 强制指定 Pset 编号。通常由 PLC / MES 处理,但也可通过 PlantPulse 的 [标签写权限] 实现。
模式 4. 报警监控
| 标签名称 | 地址 | 格式 |
|---|---|---|
| 报警文本 | MID:0071:alarm | String |
报警发生时由控制器 push。可用于 PlantPulse 的通知 / 后处理。
更详细的示例 / 自动化注册
请参考高级 — REST API 中的 Open Protocol 示例。