Zum Hauptinhalt springen

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.

PositionWert
opc_typeFOCAS
Implementierungsklasseplantpulse.driver.protocol.focas.FOCASDriver
Bibliothek(keine — stub)
ZielsteuerungenFanuc 0i / 30i / 31i / 32i / 35i, Power Mate, FS18i usw.
ÜbertragungsmediumEthernet (TCP, Standard-Port 8193) — HSSB-Lichtwellenleiterkarte separat
readstub (gibt "" zurück)
writestub
Aktueller Status: stub-Treiber

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ängigkeitBeschreibungAuswirkung auf die Auslieferung
Fwlib32.dll (Windows)32-Bit-DLL — Fanuc-Lizenz erforderlichx86-JVM oder IPC-Trennung nötig
libfwlib32.so (Linux)x86-64- / ARM-Build — je Lizenz separatOS-/glibc-Versionsabgleich
HSSB-KartentreiberPCI-Karte für optische Kommunikation — 1:1 zur SteuerungLinux-Kernelmodul erforderlich
LizenzschlüsselRegistrierung als FwLib-berechtigtes MitgliedsunternehmenWeiterverteilung nicht zulässig
JNI-BindungJava <-> C-Speichermodell / ThreadsBei 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 TreiberSeite
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 TreiberSeite
OPCUAOPC-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

SituationEmpfehlung
OEM (Mazak SmartBox / DMG MORI Celos / Okuma) betreibt bereits einen MTConnect AgentMTConnect → HTTP
Fanuc 30i neuerer Bauart, OPC-UA-Option nachrüstbarFanuc OPC UA → OPCUA
Fanuc 0i älterer Bauart, SI mit Lizenz vorhandenKEPServerEX Fanuc Suite → OPCUA
Eigene FwLib-Lizenz / individuelle Daten erforderlichfocas-grpc Sidecar → HTTP
Nur einfache Verfügbarkeitskennzahl (0/1) erforderlichDigitalausgang der Steuerung → Modbus-/Ethernet-IO-Modul

Überlegungen für eine spätere native Implementierung

OptionAbhängigkeitenSchwierigkeitsgrad
FwLib JNI direkt einbettenx86-/x64-/ARM-Builds allesamt erforderlich, Lizenzsehr hoch
Separates plantpulse-edge-driver-focas.jar (Muster motorsensor.jar)Laden der Bibliothek per Reflectionhoch
Sidecar + gRPCFwLib nur im Sidecar, PlantPulse als HTTP-/gRPC-Clientmittel
Reverse-engineertes Wire-Protokoll (Drittanbieter)Risiko der Verletzung der Fanuc-Lizenznicht empfohlen
Fazit

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": []
}'