跳到主要内容

Fanuc FOCAS (CNC) 驱动

概述

FOCAS = Fanuc Open CNC API Specification。它是从 Fanuc CNC(Computer Numerical Control)控制器读取 主轴负载 / 轴位置 / 加工程序 / 报警 / OEE 指标的事实标准 API。 Mazak、DMG MORI、Doosan 等机床 OEM 只要采用 Fanuc 作为控制器,同样会暴露该接口。

项目
opc_typeFOCAS
实现类plantpulse.driver.protocol.focas.FOCASDriver
(无 — stub)
目标控制器Fanuc 0i / 30i / 31i / 32i / 35i、Power Mate、FS18i 等
通信介质Ethernet(TCP,默认端口 8193)— HSSB 光纤卡另行处理
readstub(返回 "")
writestub
当前状态:stub 驱动

FOCAS 仅存在 stub 实现。若需与实际 Fanuc 控制器通信,请使用下方 替代运行方案 中的任一桥接模式。 PlantPulse 本代码库并不计划在单一 jar 中嵌入 native FwLib。


native 实现为何困难

FOCAS 的 wire 协议是非公开的。Fanuc 不公开 wire 规范, 而是向许可会员分发名为 FwLib (Focas Library) 的 C 库。 也就是说,若要在 Java 侧直接使用 FOCAS,需要具备以下条件之一。

依赖要素说明对部署的影响
Fwlib32.dll (Windows)32-bit DLL — 必须持有 Fanuc 许可需要 x86 JVM 或 IPC 分离
libfwlib32.so (Linux)x86-64 / ARM 构建 — 按许可分别提供需匹配 OS / glibc 版本
HSSB 卡驱动光通信用 PCI 卡 — 与控制器 1:1需要 Linux 内核模块
许可密钥注册为可使用 FwLib 的会员单位不可再分发
JNI 绑定Java <-> C 内存模型 / thread调用失败时可能导致 JVM 崩溃

与 ROS 2 / DALI / IO-Link 相同,按照追求单一 jar 部署 + 支持多种 OS / ARCH 的 PlantPulse Edge 策略,嵌入 native 库属于 cost > benefit。 此外,受许可政策限制,FwLib 也不是 PlantPulse 可以自由再分发的组件。


替代运行方案

所幸 Fanuc 官方 / 第三方已提供标准桥接方案。PlantPulse 只需接收桥接端的 输出接口(HTTP / OPC UA)即可。

方案 1. MTConnect Adapter / Agent(推荐)

大多数现代机床 / Fanuc CNC 采用 MTConnect(ANSI/MTC1.4)作为首选集成路径。 Fanuc 免费提供自家的 FOCAS-MTConnect Adapter,OEM(Okuma、DMG MORI、Mazak SmartBox) 也遵循同一标准。

使用的 PlantPulse 驱动页面
HTTP(REST 轮询,XML 解析在计算公式 / 接收管道中处理)HTTP

方案 2. OPC UA(Fanuc CNC OPC UA 选件或 KEPServer)

Fanuc 新型控制器可通过附加选件暴露 OPC UA Server。 旧型控制器则使用 Kepware KEPServerEX Fanuc SuiteMatrikon FOCAS OPC Server 等商用网关进行转换。

使用的 PlantPulse 驱动页面
OPCUAOPC-UA

方案 3. Direct FwLib JNI(边车)

持有 FwLib 许可的用户,可将自研 JNI 模块以独立 jar(motorsensor.jar 模式)或 边车进程(例如 focas-grpc-server)的形式运行,由 PlantPulse 轮询其输出。 此时 PlantPulse 本体 jar 保持不变,FOCAS 驱动也可继续保留为 stub。


应如何选择方案

场景推荐
OEM(Mazak SmartBox / DMG MORI Celos / Okuma)已在运行 MTConnect AgentMTConnect → HTTP
Fanuc 30i 新型,可加装 OPC UA 选件Fanuc OPC UA → OPCUA
Fanuc 0i 旧型,SI 持有许可KEPServerEX Fanuc Suite → OPCUA
自有 FwLib 许可 / 需要定制数据focas-grpc 边车 → HTTP
仅需简单的开动率(0/1)指标控制器数字输出 → Modbus/Ethernet IO 模块

日后进行 native 实现时的考虑事项

方案依赖难度
直接嵌入 FwLib JNI需要 x86 / x64 / ARM 全部构建,以及许可极高
独立 plantpulse-edge-driver-focas.jar(motorsensor.jar 模式)通过 reflection 加载库
边车 + gRPCFwLib 仅在边车侧,PlantPulse 作为 HTTP/gRPC 客户端
逆向得到的 wire 协议(第三方)有违反 Fanuc 许可的风险不推荐
结论

PlantPulse Edge 推荐的官方集成路径是 MTConnect(HTTP 驱动)。 OEM 已提供 MTConnect Adapter,可同时规避许可 / 部署 / OS 兼容性问题。 若具备 Fanuc OPC UA 选件,则通过 OPCUA 驱动 直接连接是最为简洁的路径。


stub 注册(仅供测试)

curl -X POST http://<edge-host>/api/v1/opc \
-H "Content-Type: application/json" \
-d '{
"opc_id": "OPC_FOCAS_STUB",
"opc_type": "FOCAS",
"opc_name": "FANUC FOCAS stub",
"opc_agent_ip": "192.168.0.0",
"opc_agent_port": "8193",
"site_id": "SITE_00001",
"auto_collect": false,
"timecycle": 5000,
"tag_list": []
}'