Zum Hauptinhalt springen

SECS/GEM HSMS-Treiber

Überblick

Kommunikationsstandard für Halbleiter-Fab-Anlagen (SEMI E5/E30/E37). HSMS = SECS-II over TCP. Über den Austausch von S/F-Nachrichten (Stream/Function) zwischen equipment und host werden Anlagenstatus, alarm und event report erfasst.

PunktWert
opc_typeSECSGEM
Implementierungsklasseplantpulse.driver.protocol.secsgem.SECSGEMDriver
BibliothekEigene Java-Implementierung (keine externen Abhängigkeiten)
read⚠️ 1. Stufe (Select-Handshake + S1F1/S1F2 usw. auf Fixture-Ebene)
write⚠️ 1. Stufe (nur S2F41 Host Command Send)
Sicherheitkeine
Standardport5000 (TCP)
Implementierung der 1. Stufe

Verifiziert sind der HSMS-Handshake Select.req/rsp, der Linktest im Hintergrund, der SECS-II-Item-Codec (List/Binary/Boolean/ASCII/I1-8/U1-8/F4/F8) sowie die Standard-Nachrichtenbuilder (S1F1/S1F2/S2F41/S5F1/S6F11). Das Read/Write-Dispatching funktioniert, die vollständige Integration von Fab-Tools (SECS-I-Serial-Variante, GEM State Model, SVID/ECID/CEID-Aushandlung, S2F23 trace, asynchroner Empfang von S5/S6-Events) folgt in einer späteren Phase.


Klassenstruktur

KlasseAufgabe
SECSGEMDriverTCP / Select-Handshake / Read-·Write-Dispatching / Linktest im Hintergrund
HsmsHeader14-Byte-Frame-Header (length BE 32 + sessionId 16 + W-Bit·stream + function + pType + sType + sysbytes BE 32)
HsmsMessageencode/decode + Helper select_req(1) / select_rsp(2) / linktest_req(5) / data(0)
SecsItemSECS-II-Item-Encoder/-Decoder — Format-Byte (6-Bit-Code + 2-Bit-Anzahl der Längenbytes) + length + value
SecsCommonStandard-Nachrichtenbuilder — S1F1, S1F2, S2F41, S5F1, S6F11
SecsAddressS<n>F<m>[W] Adressparser (W = reply expected)

Wire-Format

HSMS frame (총 length = 4 + 10 + payload):
byte 0..3 Length (BE 32) — 10 + payload
byte 4..5 Session ID (BE 16) — 컨트롤 메시지는 0xFFFF
byte 6 W-bit | Stream (7-bit)
byte 7 Function (8-bit)
byte 8 pType — 항상 0
byte 9 sType — 0=Data, 1=Select.req, 2=Select.rsp, 5=Linktest.req, 6=Linktest.rsp, ...
byte 10..13 System bytes (BE 32) — transaction id
byte 14.. SECS-II payload

SECS-II item:
Format byte (6-bit code + 2-bit length-bytes-count) + length(1..3) + value
code: L=0x00, B=0x08, Bool=0x09, A=0x10, F8=0x14, F4=0x15,
I8=0x18 I1=0x19 I2=0x1A I4=0x1B,
U8=0x1C U1=0x1D U2=0x1E U4=0x1F (모두 BE)

Handshake (connect()): Select.req(sysbytes) → Prüfung von sType=2 + status=0 der Select.rsp. Anschließend wird gemäß Option linktest-interval (Standard 30 Sekunden) zyklisch Linktest.req gesendet.


OPC-Registrierungsoptionen

FeldBedeutungStandard
opc_agent_ip / opc_agent_portAnlagen-IP / Portbei port 0 gilt 5000
options.connect-timeoutTCP-Connect-Timeout (ms)5000
options.read-timeoutRead-SO-Timeout (ms)10000
options.linktest-intervalLinktest-Intervall (ms, 0=off)30000

Tag-Format plc_address

NotationBedeutung
S1F1"Are You There" — leerer Body, reply expected
S1F2:0nulltes Kind der reply-List (z. B. MDLN)
S1F2:1erstes Kind (z. B. SOFTREV)
S1F13Establish Communications Request
S2F41Host Command Send (nur write)
S5F1 / S6F11Alarm Report / Event Report (Empfangsseite)

Das Suffix W (S1F1W) kennzeichnet explizit die Reply-Erwartung. Beim Read-Dispatching wird nur für S1F1 der Body automatisch aufgebaut, ansonsten wird mit leerem Body + W-Bit=true gesendet.

Bei write wird nur S2F41 unterstützt: address.value dient als HCS-Command-String, parameter ist eine leere List.


Nicht unterstützte Bereiche

  • Variante SECS-I (RS-232 binary) — nur HSMS over TCP.
  • GEM State Model — Automatisierung von Communications / Control / Processing / Spooling nicht implementiert.
  • VID/ECID/CEID-Aushandlung — keine Automatisierung der Event-Link-/Enable-Sequenzen S2F13 / S2F33 / S2F37.
  • S2F23 trace data, asynchroner Empfang von S6F11 event report — nur einzelner Receive, kein asynchroner Push-Handler.
  • sType Deselect / Reject / Separate.
  • Datennachricht → ConcurrentMap-Cache — derzeit startet read bei jedem Aufruf eine neue Transaktion.

Testabdeckung

test/java/plantpulse/driver/protocol/secsgem/

TestPrüfung
HsmsHeaderTest14-Byte-Header + sType-Verzweigung Round-Trip
HsmsMessageTestselect_req/rsp/linktest/data encode-decode
SecsItemTestL/A/B/Bool/I/U/F-Item-Codec bidirektional (1/2/3-Byte-Länge)
SecsCommonTestS1F1/S1F2/S2F41/S5F1/S6F11 Aufbau/Parsing
SecsAddressTestParser S<n>F<m>[W]
SECSGEMDriverTest / SecsGemSpecTestSelect- + Read-Sequenz mit Mock-Anlage

Referenzen

  • SEMI E5 — SECS-II Message Content.
  • SEMI E30 — Generic Equipment Model (GEM).
  • SEMI E37 — High-Speed SECS Message Services (HSMS).
  • Code: plantpulse-edge-driver/src/plantpulse/driver/protocol/secsgem/.
  • Betrieb: Die vollständige Fab-Tool-Integration folgt in einer späteren Phase — in der 1. Stufe empfehlen sich Anlagen-Connect, S1F1-Ping und die Erfassung der Alarmliste.