Fanuc FOCAS (CNC) Treiber
Überblick
FOCAS = Fanuc Open CNC API Specification. Die De-facto-Standard-API zum Auslesen von Spindellast, Achspositionen, Bearbeitungsprogrammen, Alarmen und OEE-Kennzahlen aus Fanuc CNC (Computer Numerical Control) Steuerungen. Auch Werkzeugmaschinen-OEMs wie Mazak, DMG MORI oder Doosan stellen dieselbe Schnittstelle bereit, sofern sie Fanuc als Steuerung einsetzen.
| Position | Wert |
|---|---|
opc_type | FOCAS |
| Implementierungsklasse | plantpulse.driver.protocol.focas.FOCASDriver |
| Bibliothek | (keine — stub) |
| Zielsteuerungen | Fanuc 0i / 30i / 31i / 32i / 35i, Power Mate, FS18i usw. |
| Übertragungsmedium | Ethernet (TCP, Standard-Port 8193) — HSSB-Lichtwellenleiterkarte separat |
| read | stub (gibt "" zurück) |
| write | stub |
FOCAS existiert nur als stub. Für die tatsächliche Kommunikation mit einer Fanuc-Steuerung verwenden Sie eines der Bridge-Muster unter
Alternative Betriebsverfahren.
Es ist nicht geplant, native FwLib in das einzelne jar dieser PlantPulse-Codebasis einzubetten.
Warum eine native Implementierung schwierig ist
Das Wire-Protokoll von FOCAS ist nicht öffentlich. Fanuc veröffentlicht die Wire-Spezifikation nicht, sondern verteilt an Lizenznehmer die C-Bibliothek FwLib (Focas Library). Um FOCAS direkt aus Java heraus zu sprechen, wäre also eines der folgenden Elemente nötig:
| Abhängigkeit | Beschreibung | Auswirkung auf die Auslieferung |
|---|---|---|
Fwlib32.dll (Windows) | 32-Bit-DLL — Fanuc-Lizenz erforderlich | x86-JVM oder IPC-Trennung nötig |
libfwlib32.so (Linux) | x86-64- / ARM-Build — je Lizenz separat | OS-/glibc-Versionsabgleich |
| HSSB-Kartentreiber | PCI-Karte für optische Kommunikation — 1:1 zur Steuerung | Linux-Kernelmodul erforderlich |
| Lizenzschlüssel | Registrierung als FwLib-berechtigtes Mitgliedsunternehmen | Weiterverteilung nicht zulässig |
| JNI-Bindung | Java <-> C-Speichermodell / Threads | Bei Aufruffehlern JVM-Absturz möglich |
Wie bei ROS 2 / DALI / IO-Link gilt auch hier: Angesichts der Zielsetzung von PlantPulse Edge — Auslieferung als einzelnes jar bei Unterstützung verschiedener OS/ARCH — ist das Einbetten nativer Bibliotheken cost > benefit. Zudem ist FwLib lizenzrechtlich keine Komponente, die PlantPulse frei weiterverteilen dürfte.
Alternative Betriebsverfahren
Glücklicherweise stellen Fanuc selbst sowie Drittanbieter bereits Standard-Bridges bereit. PlantPulse muss lediglich die Ausgabeschnittstelle der Bridge (HTTP / OPC UA) entgegennehmen.
Option 1. MTConnect Adapter / Agent (empfohlen)
Die meisten modernen Werkzeugmaschinen bzw. Fanuc CNCs nutzen MTConnect (ANSI/MTC1.4) als primären Integrationspfad. Fanuc stellt einen eigenen FOCAS-MTConnect Adapter kostenlos bereit; OEMs (Okuma, DMG MORI, Mazak SmartBox) folgen demselben Standard.
| Zu verwendender PlantPulse Treiber | Seite |
|---|---|
HTTP (REST-Polling, XML-Parsing erfolgt in der Formel bzw. der Empfangs-Pipeline) | HTTP |
Option 2. OPC UA (Fanuc CNC OPC UA Option oder KEPServer)
Neuere Fanuc-Steuerungen stellen als Zusatzoption einen OPC UA Server bereit. Ältere Steuerungen werden über kommerzielle Gateways wie Kepware KEPServerEX Fanuc Suite oder Matrikon FOCAS OPC Server umgesetzt.
| Zu verwendender PlantPulse Treiber | Seite |
|---|---|
OPCUA | OPC-UA |
Option 3. Direct FwLib JNI (Sidecar)
Wer über eine FwLib-Lizenz verfügt, kann ein eigenes JNI-Modul als separates jar (Muster motorsensor.jar) oder als
Sidecar-Prozess (z. B. focas-grpc-server) betreiben und PlantPulse dessen Ausgabe pollen lassen.
Auch in diesem Fall bleibt das PlantPulse-jar unverändert und der FOCAS-Treiber kann stub bleiben.
Welche Option ist die richtige
| Situation | Empfehlung |
|---|---|
| OEM (Mazak SmartBox / DMG MORI Celos / Okuma) betreibt bereits einen MTConnect Agent | MTConnect → HTTP |
| Fanuc 30i neuerer Bauart, OPC-UA-Option nachrüstbar | Fanuc OPC UA → OPCUA |
| Fanuc 0i älterer Bauart, SI mit Lizenz vorhanden | KEPServerEX Fanuc Suite → OPCUA |
| Eigene FwLib-Lizenz / individuelle Daten erforderlich | focas-grpc Sidecar → HTTP |
| Nur einfache Verfügbarkeitskennzahl (0/1) erforderlich | Digitalausgang der Steuerung → Modbus-/Ethernet-IO-Modul |
Überlegungen für eine spätere native Implementierung
| Option | Abhängigkeiten | Schwierigkeitsgrad |
|---|---|---|
| FwLib JNI direkt einbetten | x86-/x64-/ARM-Builds allesamt erforderlich, Lizenz | sehr hoch |
Separates plantpulse-edge-driver-focas.jar (Muster motorsensor.jar) | Laden der Bibliothek per Reflection | hoch |
| Sidecar + gRPC | FwLib nur im Sidecar, PlantPulse als HTTP-/gRPC-Client | mittel |
| Reverse-engineertes Wire-Protokoll (Drittanbieter) | Risiko der Verletzung der Fanuc-Lizenz | nicht empfohlen |
Der von PlantPulse Edge empfohlene offizielle Integrationspfad ist MTConnect (HTTP-Treiber). OEMs liefern den MTConnect Adapter bereits mit, und Probleme mit Lizenz, Auslieferung und OS-Kompatibilität entfallen vollständig. Steht die Fanuc OPC UA Option zur Verfügung, ist die direkte Anbindung über den OPCUA-Treiber der sauberste Weg.
stub-Registrierung (nur zu Testzwecken)
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": []
}'