Zum Hauptinhalt springen

GE SRTP Treiber

Übersicht

GE SRTP (Service Request Transport Protocol) — Ethernet-Kommunikationsprotokoll der GE Fanuc Series 90 / RX3i / RX7i / VersaMax PLC. PlantPulse Edge startet einen externen nativen Client (GEClient) als Kindprozess und implementiert das NativeProcessDriver-Muster, bei dem die Zeilen der Standardausgabe geparst und die Werte akkumuliert werden.

PositionWert
opc_typeGE
Implementierungsklasseplantpulse.driver.protocol.ge.GEDriver
KommunikationsbibliothekExternes natives Binary (./GEClient, basierend auf uGESRTP)
VererbungNativeProcessDriver
read✅ (Cache-Polling)
write
Sicherheitkeine
Standardport18245 (SRTP TCP) — Angabe über opc_agent_port

Klassenstruktur / Funktionsweise

GEDriver
└── ProcessTask (Thread) — ProcessBuilder 로 ./GEClient ip port addresses timecycle
└── Binder (Thread) — 자식의 stdout 한 라인씩 파싱
↳ "VAL:<dev>:<idx>:<type>:<format>:<value>" → current_value_map
↳ "START:" / "READ_FAIL:" / "ERROR:" / "LOG:" → 로그
  • connect()NetUtils.isReachable(ip) ICMP-Ping → bei Fehlschlag sofortiger Abbruch. Sind die Optionen use-multi=true + channel-thread größer als 1, wird die Adressliste partitioniert und mehrere Kindprozesse werden gleichzeitig gestartet.
  • Ausführungsverzeichnis des Kindprozesses: /opt/kopens/plantpulse-edge/plc/ge. Ausführbare Datei: ./GEClient.
  • read() — gibt über current_value_map.get(addr + ":" + format) den letzten Wert zurück (der Kindprozess aktualisiert ihn in jedem Timecycle).
  • close()process.destroyForcibly() aller ProcessTasks.

OPC-Registrierungsoptionen

FeldBedeutungStandard
opc_agent_ip / opc_agent_portPLC-IP / SRTP-Port (üblicherweise 18245)
timecyclePolling-Intervall (ms) — wird dem Kindprozess als Argument übergeben
options.use-multiMultiprozess-Modustrue
options.channel-threadAnzahl der Partitionen (1 = Einzelprozess)1

Interne Konstante: GE_DEFAULT_CONNECTION_DELAY_MS = 1500 — Wartezeit nach dem ersten Connect. Wird 10 Sekunden lang kein einziger Tag gelesen, erfolgt eine START-ADDRESS-SCAN-SLOW-Warnung.


Format von Tag plc_address

Format zur Übergabe an den Kindprozess (commaIOAddress): <dev>:<idx>:<data_type>:<format> per Komma verbunden.

NotationBedeutung (GE Fanuc Standard)
R00001Register %R 1 (16-bit signed)
R00500Register %R 500
I00001Input-Bit %I 1
Q00001Output-Bit %Q 1
T00001Temporary Memory %T
M00001Internal Coil %M
AI00001Analogeingang
AQ00001Analogausgang

format-Zuordnung (afterFormat):

formatVerhalten
BIN[N]Wort lesen, dann N-tes Bit extrahieren (N = 0..F, hex möglich)
STRWort → 16-bit binär → ASCII-Text-Konvertierung
(sonstige)Zeichenkette unverändert wie vom Kindprozess gesendet

Nicht unterstützte Bereiche

  • Writewrite() ist immer false. Möglich erst, wenn SRTP write im nativen Client verfügbar ist.
  • Reine Java-SRTP-Implementierung — derzeit besteht eine Abhängigkeit vom externen Binary. Die Umstellung auf In-Process mittels uGESRTP / iot-communication-Bibliothek ist eine Folgeaufgabe in derselben Richtung wie beim LS Treiber (alte Version .NET → Java).
  • Symbolic Tag — nur Koordinaten (Bereich + Index) werden unterstützt, keine named Tags.
  • Programming-/Service-Request-Modus — ausschließlich einfache Read-Abfragen.

Testabdeckung

test/java/plantpulse/driver/protocol/ge/GEDriverTest — Adressumsetzung (commaIOAddress), Prüfung der BIN/STR-Verzweigung von afterFormat. Da die Wire-Level-Verarbeitung an das externe Binary delegiert wird, sind Unit-Tests mit einem Mock-Kindprozess separat zu betrachten.


Referenzen

  • GE Fanuc SRTP — öffentliches Reverse Engineering: uGESRTP, Wireshark dissector.
  • Code: plantpulse-edge-driver/src/plantpulse/driver/protocol/ge/GEDriver.java.
  • Betrieb: Fehlt das Kind-Binary, erscheint in der Connect-Phase eine PROCESS-SLOW-Warnung + ERROR:-Log — zuerst prüfen, ob /opt/kopens/plantpulse-edge/plc/ge/GEClient ausführbar ist (+x).