Zum Hauptinhalt springen

GE SRTP Treiber

Überblick​

GE SRTP (Service Request Transport Protocol) — Ethernet-Kommunikationsprotokoll der GE Fanuc Series 90 / RX3i / RX7i / VersaMax PLC. PlantPulse Edge startet einen externen Native Client (GEClient) als Kindprozess und implementiert das Muster NativeProcessDriver, 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✅ (%R WORD/DWORD/FLOAT · %M BIT · %Q BIT)
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. Wenn die Option use-multi=true + channel-thread größer als 1 ist, wird die Adressliste partitioniert und es werden mehrere Kindprozesse parallel gestartet.
  • Ausführungsverzeichnis des Kindprozesses: /opt/kopens/plantpulse-edge/plc/ge. Ausführbare Datei: ./GEClient.
  • read() — Rückgabe des letzten Werts über current_value_map.get(addr + ":" + format) (der Kindprozess aktualisiert bei jedem Timecycle).
  • close() — process.destroyForcibly() aller ProcessTasks.

OPC-Registrierungsoptionen​

FeldBedeutungStandardwert
opc_agent_ip / opc_agent_portPLC-IP / SRTP-Port (üblicherweise 18245)—
timecyclePolling-Intervall (ms) — wird als Argument an den Kindprozess ü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. Wenn 10 Sekunden lang kein Tag gelesen wird, erfolgt eine START-ADDRESS-SCAN-SLOW-Warnung.


Tag-Format 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]Nach Wort-Read Extraktion von N Bit (N = 0..F, hex möglich)
STRWort → 16-bit binary → Umwandlung in ASCII-Text
(sonstige)Zeichenkette unverändert, wie vom Kindprozess gesendet

Nicht unterstützte Bereiche​

  • Write — ist implementiert. %R unterstützt WORD/DWORD/FLOAT, %M und %Q arbeiten bitweise.
  • 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 (ältere Version .NET → Java).
  • Symbolic Tag — nur Koordinaten (Bereich + Index) werden unterstützt, Named Tags nicht.
  • Programming-/Service-Request-Modus — nur einfache Read-Abfragen.

Testabdeckung​

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


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, erfolgt 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).