SECS/GEM (HSMS) — Semiconductor / Display Fab
SECS/GEM is the standard communication between tools and the host (MES / EAP) in semiconductor and display fabs. Messages are defined in SECS-II and, over Ethernet, transported by HSMS (High-Speed SECS Message Services) on TCP/IP.
The gateway's SECS/GEM driver provides read (S<n>F<m>) and write (S2F41 host command, with HCACK verification) on top of an HSMS Select handshake + background Linktest + asynchronous reply matching + SECS-II item codec (L / A / B / U1–U8 / I1–I8 / F4 / F8).
If you additionally need tool-specific GEM sequences — S1F13/F14 establish, S6 event reports, S5 alarms, control state model, spool — please contact the development team.
Registration Form Entries
| Field | What to enter | Example |
|---|---|---|
| IP address | HSMS IP of the tool | 192.168.0.140 |
| Port | HSMS port | 5000 (commonly used) |
| Device ID | SECS device ID | 0 (commonly used) |
| Mode | passive / active | active (gateway is the connecting side) |
| T3 / T5 / T6 / T7 / T8 | HSMS timeouts (ms) | Defaults recommended |
The SECS/GEM standard recommends that the host (MES / gateway) listen in passive mode while the tool connects, but in practice many field installations have the gateway connect in active mode. Match the tool-side setting.
PLC Address Notation for Tags
In the gateway, SECS-II messages are entered in the S<n>F<m> format, where n=stream and m=function.
| Notation | Meaning |
|---|---|
S1F1 | Are You There — ping to check whether communication is alive |
S1F3 | Selected Equipment Status Request |
S1F11 | Status Variable Namelist Request |
S2F13 | Equipment Constant Request |
S2F41 | Host Command Send (write — start/stop, etc.) |
S5F1 | Alarm Report |
S6F11 | Event Report Send |
For read messages (S1F3, S1F11, etc.), the response itself becomes the value.
Picking a Specific Value out of a Response
If the response is a SECS-II list, you can extract elements by index, as in S1F4[0] or S1F4[2].[1].
| Notation | Meaning |
|---|---|
S1F4[0] | Element 0 of the S1F4 response list |
S6F12[1].[3] | Element [1][3] of the S6F12 nested list |
Data Format Matching
These map to SECS-II item codes.
| SECS-II type | Meaning | Data format | Format modifier |
|---|---|---|---|
| L | List (recursive) | (expand by index) | — |
| A | ASCII | String | (leave empty) |
| B | Binary | String | (leave empty) |
| BOOLEAN | Boolean | Boolean | (leave empty) |
| U1/U2/U4 | Unsigned 1/2/4 byte | Integer | UI/UDW |
| U8 | Unsigned 8 byte | Long | (leave empty) |
| I1/I2/I4 | Signed 1/2/4 byte | Integer | (leave empty)/DW |
| F4 | Float 32-bit | Float | REAL |
| F8 | Float 64-bit | Double | LREAL |
Write Support
You can issue commands to the tool with S2F41 (Host Command Send).
| Notation | Meaning |
|---|---|
S2F41 | Host Command Send (RCMD = "START" / "STOP" / "PP-SELECT", etc.) |
S2F49 | Enhanced Remote Command |
Values are sent as a command name (RCMD) + parameter list. For the exact format, refer to the SEMI standard specification in the tool manual.
START / STOP in S2F41 trigger actual tool behavior. In a production fab, always coordinate with the EAP / MES team before using them.
Common Problems and Solutions
| Symptom | Possible cause | Solution |
|---|---|---|
| "Select.rsp not received" | active/passive mismatch | Check the tool-side GEM settings |
| "Linktest timeout" | Firewall | If increasing T6 (linktest) does not help, inspect the network |
| "Communication not established (S1F13)" | Some tools require the S1F13/F14 establish sequence first | Enable the auto-establish option in the tool-side GEM settings, or use raw communication such as S1F1 / S1F3 |
| Response decoding failure | Wrong nested list depth | Receive the response as raw and parse it separately with a SECS-II decoder |
Common SECS Messages in Detail
S1F1 / S1F2 — Are You There (ping)
| Message | Direction | Meaning |
|---|---|---|
| S1F1 | host → tool | "Are you alive?" — empty message |
| S1F2 | tool → host | "MDLN, SOFTREV" response (tool model name + firmware) |
S1F3 / S1F4 — Selected Equipment Status Request (reading SVIDs)
The body of S1F3 is an SVID list. The S1F4 response is a value list in the same order.
| Notation | Meaning |
|---|---|
S1F3 (body=L,1.<U4 100>) | Read SVID 100 (e.g., CassetteCount) |
S1F4[0] | Element 0 of the response list (= value of SVID 100) |
S2F41 — Host Command Send (write — tool operation)
| RCMD | Meaning |
|---|---|
START | Start processing |
STOP | Stop processing |
ABORT | Immediate abort |
PP-SELECT | Select Process Program (CPNAME=PPID, CPVAL=program name) |
PAUSE / RESUME | Pause / resume |
S6F11 / S6F12 — Event Report Send (per CEID)
The tool pushes to the host on its own when an event occurs. Reports arrive grouped by CEID (Collection Event ID).
| Field | Meaning |
|---|---|
| DATAID | Event serial number |
| CEID | Collection Event ID (e.g., 21=ProcessStarted) |
| RPTID list | Nested data per report ID |
PlantPulse receives the raw response as-is, so extract by index — for example S6F11[0] or S6F11[1] — and post-process with a formula.
S5F1 / S5F2 — Alarm Report
| Field | Meaning |
|---|---|
| ALCD | Alarm Code (1 byte: bit7=set/clear, bit0–6=category) |
| ALID | Alarm ID |
| ALTX | Alarm text (human-readable message) |
Common Operating Patterns
Pattern 1. Fab Tool Health Monitoring (ping + status)
| Tag name | Address | Format | Notes |
|---|---|---|---|
| Ping | S1F1 | (response present or not) | timecycle 30s |
| Model name | S1F4[0] | String | (S1F3 SVID=MDLN) |
| Processing state | S1F4[1] | Integer | (S1F3 SVID=ControlState) |
Pattern 2. Result Data Collection (S6F11)
Enable "EventReport on PROCESSEND" in the tool-side GEM settings → the tool pushes S6F11. PlantPulse connects in active mode and collects the raw response → parse it with a SECS-II decoder (e.g., secsgem-py) in the post-processing pipeline.
Pattern 3. Pset / Recipe Switching (S2F41)
S2F41 RCMD="PP-SELECT" CPNAME="PPID" CPVAL="RECIPE_AB100"
In a real fab, S2F41 triggers tool operation. Always coordinate with the EAP / MES team and use it only while the tool is actually idle.
Next Steps
- Refer to the SEMI E5 (SECS-II) / E37 (HSMS) / E30 (GEM) standard documents.
- If you need full GEM integration (event reporting, control state, recipe), contact the development team.
- See the SECS/GEM examples in Advanced — REST API.