收集事件
1. 概述
收集事件 (CE) 是設備在發生重要事件時傳送給主機的通知。每個事件可以有關聯的報告,包含相關的資料變數。收集事件構成 GEM 資料收集功能的基礎,實現即時監控和工廠自動化。
1.1 關鍵概念
| 術語 |
說明 |
| CEID |
收集事件 ID - 每個事件的唯一識別碼 |
| RPTID |
報告 ID - 定義收集哪些變數 |
| VID |
變數 ID - 個別資料變數(SV、EC 或 DV) |
| DATAID |
資料 ID - S6F11 訊息的交易識別碼 |
1.2 事件報告架構
flowchart LR
subgraph Equipment
CE[收集事件] --> RPT[報告]
RPT --> VID1[變數 1]
RPT --> VID2[變數 2]
RPT --> VID3[變數 3]
end
CE -->|S6F11| Host
2. 收集事件定義
2.1 系統事件 (CEID 1-99)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 1 |
EquipmentOffline |
設備轉換至 OFFLINE |
控制狀態 = OFFLINE |
| 2 |
EquipmentOnlineLocal |
設備轉換至 ONLINE-LOCAL |
控制狀態 = ONLINE-LOCAL |
| 3 |
EquipmentOnlineRemote |
設備轉換至 ONLINE-REMOTE |
控制狀態 = ONLINE-REMOTE |
| 4 |
ControlStateChange |
控制狀態變更 |
任何控制狀態轉換 |
| 5 |
CommunicationEstablished |
SECS-II 通訊已建立 |
S1F13/S1F14 已接受 |
| 6 |
CommunicationLost |
主機通訊中斷 |
HSMS 斷線或 T3 逾時 |
| 7 |
SpoolingActivated |
Spooling 開始 |
通訊中斷且 spool 啟用 |
| 8 |
SpoolingDeactivated |
Spooling 停止 |
通訊恢復且 spool 已傳送 |
| 9 |
SpoolingFull |
Spool 緩衝區已滿 |
Spool 容量已超出 |
| 10 |
HeartbeatFail |
偵測到心跳失敗 |
S1F1 無回應 |
2.2 操作員事件 (CEID 20-49)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 20 |
OperatorLogin |
操作員登入 |
驗證成功 |
| 21 |
OperatorLogout |
操作員登出 |
登出或工作階段逾時 |
| 22 |
OperatorCommandIssued |
操作員發出命令 |
手動命令輸入 |
| 23 |
OperatorRecipeSelect |
操作員選擇配方 |
透過 HMI 選擇配方 |
| 24 |
OperatorModeChange |
操作員變更設備模式 |
模式切換(AUTO/MANUAL) |
| 25 |
OperatorAlarmAck |
操作員確認警報 |
警報確認 |
| 26 |
OperatorParameterChange |
操作員變更參數 |
透過 HMI 修改 EC |
| 27 |
OperatorMaintenanceStart |
進入維護模式 |
維護鑰匙開啟 |
| 28 |
OperatorMaintenanceEnd |
退出維護模式 |
維護鑰匙關閉 |
2.3 加工事件 (CEID 100-199)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 100 |
ProcessStateChange |
加工狀態變更 |
任何加工狀態轉換 |
| 101 |
ProcessStarted |
加工執行開始 |
加工開始 |
| 102 |
ProcessCompleted |
加工成功完成 |
加工正常結束 |
| 103 |
ProcessAborted |
加工中止 |
加工異常終止 |
| 104 |
ProcessPaused |
加工暫停 |
加工保持條件 |
| 105 |
ProcessResumed |
加工恢復 |
加工重新啟動 |
| 106 |
ProcessStepChange |
加工步驟變更 |
配方步驟轉換 |
| 107 |
ProcessStepCompleted |
加工步驟完成 |
配方步驟結束 |
| 108 |
WaitingForOperator |
等待操作員輸入 |
需要操作員介入 |
| 109 |
WaitingForMaterial |
等待物料 |
物料不存在 |
| 110 |
ProcessIdleEntered |
進入 IDLE 狀態 |
加工就緒,無作業 |
| 111 |
ProcessSetupEntered |
進入 SETUP 狀態 |
準備加工 |
| 112 |
ProcessExecutingEntered |
進入 EXECUTING 狀態 |
正在加工 |
| 115 |
ProcessCycleStart |
加工週期開始 |
週期開始 |
| 116 |
ProcessCycleEnd |
加工週期完成 |
週期結束 |
| 117 |
RecipeStepStart |
配方步驟開始 |
步驟執行開始 |
| 118 |
RecipeStepEnd |
配方步驟結束 |
步驟執行結束 |
2.4 物料/載具事件 (CEID 200-299)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 200 |
MaterialReceived |
物料到達設備 |
在 Load Port 偵測到物料 |
| 201 |
MaterialRemoved |
物料從設備移除 |
物料從 Load Port 移除 |
| 202 |
SlotMapRead |
槽位映射讀取完成 |
映射序列完成 |
| 203 |
SlotMapReadFailed |
槽位映射讀取失敗 |
映射錯誤 |
| 204 |
CarrierClamped |
載具已夾持 |
夾持感測器開啟 |
| 205 |
CarrierUnclamped |
載具已鬆開 |
夾持感測器關閉 |
| 206 |
CarrierDocked |
載具已對接 |
對接感測器開啟 |
| 207 |
CarrierUndocked |
載具已脫離 |
對接感測器關閉 |
| 208 |
CarrierIDRead |
載具 ID 已讀取 |
條碼/RFID 讀取成功 |
| 209 |
CarrierIDReadFailed |
載具 ID 讀取失敗 |
條碼/RFID 讀取錯誤 |
| 210 |
CarrierAccessModeChange |
存取模式變更 |
手動/自動切換 |
| 220 |
SubstrateLocationChange |
基板位置變更 |
基板已移動 |
| 221 |
SubstrateProcessStart |
基板加工開始 |
個別基板開始 |
| 222 |
SubstrateProcessEnd |
基板加工結束 |
個別基板結束 |
| 223 |
SubstrateIDRead |
基板 ID 已讀取 |
基板 ID 驗證 |
| 224 |
SubstrateIDMismatch |
基板 ID 不符 |
ID 驗證失敗 |
2.5 警報事件 (CEID 300-399)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 300 |
AlarmSet |
偵測到警報條件 |
任何警報啟動 |
| 301 |
AlarmCleared |
警報條件已清除 |
任何警報解除 |
| 302 |
AlarmAcknowledged |
警報已確認 |
操作員/主機確認 |
| 303 |
PersonalSafetyAlarm |
人員安全警報設定 |
類別 1 警報 |
| 304 |
EquipmentSafetyAlarm |
設備安全警報設定 |
類別 2 警報 |
| 305 |
IrrecoverableError |
不可復原錯誤 |
類別 5 警報 |
| 306 |
WarningAlarm |
警告條件 |
類別 6 警報 |
2.6 配方事件 (CEID 400-499)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 400 |
RecipeSelected |
已選擇配方進行加工 |
配方啟用 |
| 401 |
RecipeStarted |
配方執行開始 |
配方開始 |
| 402 |
RecipeCompleted |
配方執行完成 |
配方正常結束 |
| 403 |
RecipeAborted |
配方執行中止 |
配方終止 |
| 404 |
RecipeUploaded |
配方已上傳至主機 |
S7F26 完成 |
| 405 |
RecipeDownloaded |
配方已從主機下載 |
S7F3 完成 |
| 406 |
RecipeDeleted |
配方已刪除 |
S7F17 完成 |
| 407 |
RecipeCreated |
已建立新配方 |
配方已儲存 |
| 408 |
RecipeModified |
配方已修改 |
配方已編輯 |
| 409 |
RecipeVerified |
配方驗證完成 |
校驗和已驗證 |
| 410 |
RecipeVerificationFailed |
配方驗證失敗 |
校驗和不符 |
2.7 作業事件 (CEID 500-599)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 500 |
ProcessJobCreated |
製程作業已建立 |
PRJob 已接收 |
| 501 |
ProcessJobQueued |
製程作業已排隊 |
PRJob 已接受 |
| 502 |
ProcessJobStarted |
製程作業已開始 |
PRJob 執行開始 |
| 503 |
ProcessJobCompleted |
製程作業已完成 |
PRJob 正常結束 |
| 504 |
ProcessJobAborted |
製程作業已中止 |
PRJob 終止 |
| 505 |
ProcessJobPaused |
製程作業已暫停 |
PRJob 保持 |
| 506 |
ProcessJobResumed |
製程作業已恢復 |
PRJob 重新啟動 |
| 507 |
ProcessJobStateChange |
製程作業狀態變更 |
任何狀態轉換 |
| 510 |
ControlJobCreated |
控制作業已建立 |
CJob 已接收 |
| 511 |
ControlJobQueued |
控制作業已排隊 |
CJob 已接受 |
| 512 |
ControlJobStarted |
控制作業已開始 |
CJob 執行開始 |
| 513 |
ControlJobCompleted |
控制作業已完成 |
CJob 正常結束 |
| 514 |
ControlJobAborted |
控制作業已中止 |
CJob 終止 |
| 515 |
ControlJobStateChange |
控制作業狀態變更 |
任何狀態轉換 |
2.8 設備狀態事件 (CEID 600-699)
| CEID |
事件名稱 |
說明 |
觸發條件 |
| 600 |
EquipmentConstantChange |
設備常數已變更 |
EC 值已修改 |
| 601 |
ClockSync |
時鐘已同步 |
時間更新完成 |
| 602 |
SoftwareVersionChange |
軟體版本已變更 |
軟體更新 |
| 603 |
ConfigurationChange |
組態已變更 |
組態檔已修改 |
| 604 |
InitializationComplete |
設備初始化完成 |
開機序列完成 |
| 605 |
ShutdownInitiated |
設備關機已啟動 |
關機命令 |
| 610 |
LoadPortStateChange |
Load Port 狀態變更 |
LP 狀態變更 |
| 611 |
RobotStatusChange |
機器人狀態變更 |
機器人狀態變更 |
| 612 |
ChamberStatusChange |
腔體狀態變更 |
腔體狀態變更 |
| 613 |
TemperatureChange |
已達到溫度限制 |
溫度閾值 |
| 614 |
PressureChange |
已達到壓力限制 |
壓力閾值 |
| 615 |
UtilityStatusChange |
公用設施狀態變更 |
公用設施警報 |
3. 報告定義
3.1 系統報告 (RPTID 1-9)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 1 |
RPT_SystemState |
Clock, ControlState, ProcessState, PreviousControlState |
| 2 |
RPT_ControlState |
Clock, ControlState, PreviousControlState |
| 3 |
RPT_CommState |
Clock, CommunicationState, ConnectedTime |
| 4 |
RPT_SpoolState |
Clock, SpoolState, SpoolCount, SpoolFullFlag |
| 5 |
RPT_EquipmentStatus |
Clock, ControlState, ProcessState, AlarmCount |
3.2 操作員報告 (RPTID 10-19)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 10 |
RPT_Operator |
Clock, OperatorID, OperatorLevel |
| 11 |
RPT_OperatorCmd |
Clock, OperatorID, CommandID, CommandParam |
| 12 |
RPT_OperatorRecipe |
Clock, OperatorID, RecipeID, RecipeVersion |
| 13 |
RPT_OperatorMaint |
Clock, OperatorID, MaintenanceCode |
3.3 加工報告 (RPTID 20-39)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 20 |
RPT_ProcessState |
Clock, ProcessState, PreviousProcessState |
| 21 |
RPT_ProcessStart |
Clock, ProcessJobID, RecipeID, LotID, StartSubstrateCount |
| 22 |
RPT_ProcessEnd |
Clock, ProcessJobID, RecipeID, LotID, ProcessTime, ProcessResult, ProcessedCount, GoodCount, BadCount |
| 23 |
RPT_ProcessStep |
Clock, ProcessJobID, StepNumber, StepName, StepTime |
| 24 |
RPT_ProcessCycle |
Clock, CycleNumber, CycleTime, CycleResult |
| 25 |
RPT_ProcessParam |
Clock, ProcessTemp, ProcessPressure, ProcessPower, ProcessTime |
3.4 物料報告 (RPTID 40-59)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 40 |
RPT_Material |
Clock, CarrierID, LotID, PortID, MaterialStatus |
| 41 |
RPT_SlotMap |
Clock, CarrierID, PortID, SlotMap, SlotCount, SubstrateCount |
| 42 |
RPT_Carrier |
Clock, CarrierID, CarrierType, CarrierState, ContentMap |
| 43 |
RPT_Substrate |
Clock, SubstrateID, SubstrateType, SlotNumber, SubstrateState |
| 44 |
RPT_SubstrateLoc |
Clock, SubstrateID, PreviousLocation, CurrentLocation |
| 45 |
RPT_SubstrateProc |
Clock, SubstrateID, ProcessResult, ProcessData |
3.5 警報報告 (RPTID 60-69)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 60 |
RPT_Alarm |
Clock, ALID, ALCD, ALTX, AlarmState |
| 61 |
RPT_AlarmDetail |
Clock, ALID, ALCD, ALTX, AlarmSetTime, AlarmSource, AlarmAction |
| 62 |
RPT_AlarmSummary |
Clock, ActiveAlarmCount, AlarmList |
3.6 配方報告 (RPTID 70-79)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 70 |
RPT_Recipe |
Clock, RecipeID, RecipeVersion, RecipeStatus |
| 71 |
RPT_RecipeTransfer |
Clock, RecipeID, TransferDirection, TransferResult |
| 72 |
RPT_RecipeVerify |
Clock, RecipeID, VerifyResult, Checksum |
3.7 作業報告 (RPTID 80-99)
| RPTID |
報告名稱 |
變數 (VIDs) |
| 80 |
RPT_ProcessJob |
Clock, ProcessJobID, ProcessJobState, RecipeID, MtrlOrder |
| 81 |
RPT_ControlJob |
Clock, ControlJobID, ControlJobState, ProcessingCtrlSpec |
| 82 |
RPT_JobComplete |
Clock, JobID, JobType, JobResult, JobTime, ProcessedCount |
4. 事件-報告連結(預設設定)
4.1 系統事件連結
| CEID |
事件名稱 |
連結的 RPTIDs |
| 1 |
EquipmentOffline |
1, 2 |
| 2 |
EquipmentOnlineLocal |
1, 2 |
| 3 |
EquipmentOnlineRemote |
1, 2 |
| 4 |
ControlStateChange |
2 |
| 5 |
CommunicationEstablished |
3 |
| 6 |
CommunicationLost |
3 |
| 7 |
SpoolingActivated |
4 |
| 8 |
SpoolingDeactivated |
4 |
4.2 加工事件連結
| CEID |
事件名稱 |
連結的 RPTIDs |
| 100 |
ProcessStateChange |
20 |
| 101 |
ProcessStarted |
20, 21 |
| 102 |
ProcessCompleted |
20, 22 |
| 103 |
ProcessAborted |
20, 22 |
| 106 |
ProcessStepChange |
23 |
4.3 物料事件連結
| CEID |
事件名稱 |
連結的 RPTIDs |
| 200 |
MaterialReceived |
40 |
| 201 |
MaterialRemoved |
40 |
| 202 |
SlotMapRead |
41 |
| 208 |
CarrierIDRead |
42 |
| 220 |
SubstrateLocationChange |
44 |
5. 事件設定訊息
5.1 S2F33 - 定義報告
定義報告中包含哪些變數。
S2F33 W
<L[n] // 要定義的 n 個報告
<L[2]
<RPTID> // 報告 ID
<L[m] // 報告中的 m 個變數
<VID> // 變數 ID
...
>
>
...
>
.
範例 - 定義自訂加工報告:
S2F33 W
<L[1]
<L[2]
<U4 100> // RPTID = 100(自訂)
<L[6]
<U4 1> // Clock
<U4 201> // RecipeID
<U4 301> // ProcessTemp
<U4 302> // ProcessPressure
<U4 303> // ProcessTime
<U4 210> // ProcessResult
>
>
>
.
5.2 S2F34 - 定義報告確認
S2F34
<DRACK> // 定義報告確認碼
.
| DRACK |
說明 |
| 0x00 |
OK,已接受 |
| 0x01 |
空間不足 |
| 0x02 |
格式無效 |
| 0x03 |
RPTID 已定義 |
| 0x04 |
VID 不存在 |
5.3 S2F35 - 連結事件報告
將報告連結到收集事件。
S2F35 W
<L[n] // 要設定的 n 個事件
<L[2]
<CEID> // 收集事件 ID
<L[m] // 要連結的 m 個報告
<RPTID>
...
>
>
...
>
.
範例 - 將報告連結到加工完成:
S2F35 W
<L[1]
<L[2]
<U4 102> // CEID = ProcessCompleted
<L[2]
<U4 20> // RPT_ProcessState
<U4 100> // 自訂加工報告
>
>
>
.
5.4 S2F36 - 連結事件報告確認
S2F36
<LRACK> // 連結報告確認碼
.
| LRACK |
說明 |
| 0x00 |
OK,已接受 |
| 0x01 |
空間不足 |
| 0x02 |
格式無效 |
| 0x03 |
CEID 不存在 |
| 0x04 |
RPTID 不存在 |
5.5 S2F37 - 啟用/停用事件報告
S2F37 W
<L[2]
<CEED> // 0=停用,1=啟用
<L[n] // n 個事件(空=全部)
<CEID>
...
>
>
.
範例 - 啟用特定事件:
S2F37 W
<L[2]
<Boolean 1> // 啟用
<L[5]
<U4 101> // ProcessStarted
<U4 102> // ProcessCompleted
<U4 200> // MaterialReceived
<U4 201> // MaterialRemoved
<U4 300> // AlarmSet
>
>
.
範例 - 啟用所有事件:
S2F37 W
<L[2]
<Boolean 1> // 啟用
<L[0]> // 空 = 所有事件
>
.
5.6 S2F38 - 啟用/停用事件報告確認
S2F38
<ERACK> // 事件報告確認碼
.
| ERACK |
說明 |
| 0x00 |
OK,已接受 |
| 0x01 |
CEID 不存在 |
6. 事件通知 (S6F11/S6F12)
6.1 S6F11 - 事件報告傳送
S6F11 W
<L[3]
<DATAID> // 資料 ID(交易 ID)
<CEID> // 收集事件 ID
<L[n] // n 個連結的報告
<L[2]
<RPTID> // 報告 ID
<L[m] // m 個變數
<V> // 變數值
...
>
>
...
>
>
.
6.2 S6F11 範例
範例 1 - 加工完成事件:
S6F11 W
<L[3]
<U4 12345> // DATAID
<U4 102> // CEID = ProcessCompleted
<L[2]
<L[2]
<U4 20> // RPTID = RPT_ProcessState
<L[2]
<A[14] "20250101143022"> // Clock
<U1 1> // ProcessState = IDLE
>
>
<L[2]
<U4 22> // RPTID = RPT_ProcessEnd
<L[9]
<A[14] "20250101143022"> // Clock
<A[20] "PJOB_20250101_001"> // ProcessJobID
<A[20] "RECIPE_PROD_A"> // RecipeID
<A[20] "LOT_2025_0001"> // LotID
<U4 3600> // ProcessTime(秒)
<U1 0> // ProcessResult(0=OK)
<U4 25> // ProcessedCount
<U4 24> // GoodCount
<U4 1> // BadCount
>
>
>
>
.
範例 2 - 物料接收事件:
S6F11 W
<L[3]
<U4 12346> // DATAID
<U4 200> // CEID = MaterialReceived
<L[1]
<L[2]
<U4 40> // RPTID = RPT_Material
<L[5]
<A[14] "20250101090000"> // Clock
<A[20] "CARRIER_001"> // CarrierID
<A[20] "LOT_2025_0002"> // LotID
<U1 1> // PortID
<U1 1> // MaterialStatus(1=存在)
>
>
>
>
.
範例 3 - 警報設定事件:
S6F11 W
<L[3]
<U4 12347> // DATAID
<U4 300> // CEID = AlarmSet
<L[1]
<L[2]
<U4 60> // RPTID = RPT_Alarm
<L[5]
<A[14] "20250101102530"> // Clock
<U4 3001> // ALID
<B[1] 0x86> // ALCD(設定 + 類別 6)
<A[30] "Temperature High Warning"> // ALTX
<U1 1> // AlarmState(1=啟用)
>
>
>
>
.
6.3 S6F12 - 事件報告確認
| ACKC6 |
說明 |
| 0x00 |
已接受 |
| 0x01-0x3F |
錯誤(請參閱附錄 B) |
7. 事件查詢訊息
7.1 S6F15 - 事件報告請求
請求事件連結變數的目前值。
S6F15 W
<CEID> // 收集事件 ID
.
7.2 S6F16 - 事件報告資料
S6F16
<L[3]
<DATAID>
<CEID>
<L[n] // 報告資料(與 S6F11 相同)
<L[2]
<RPTID>
<L[m]
<V>
...
>
>
...
>
>
.
8. 事件流程序列
8.1 初始事件設定
sequenceDiagram
participant H as Host
participant E as Equipment
Note over H,E: 通訊建立後
H->>E: S2F33 W(定義報告)
E-->>H: S2F34(DRACK=0)
H->>E: S2F35 W(連結事件到報告)
E-->>H: S2F36(LRACK=0)
H->>E: S2F37 W(啟用事件)
E-->>H: S2F38(ERACK=0)
Note over H,E: 事件現在已啟用
8.2 加工完成事件流程
sequenceDiagram
participant H as Host
participant E as Equipment
Note over E: 加工完成
E->>H: S6F11 W(CEID=102,ProcessCompleted)
Note right of E: 包含:<br/>- ProcessJobID<br/>- RecipeID<br/>- ProcessResult<br/>- ProcessTime
H-->>E: S6F12(ACKC6=0)
Note over H: 主機記錄結果<br/>並更新 MES
8.3 載具到達事件流程
sequenceDiagram
participant H as Host
participant E as Equipment
Note over E: 載具放置於 Port
E->>H: S6F11 W(CEID=200,MaterialReceived)
H-->>E: S6F12(ACKC6=0)
E->>H: S6F11 W(CEID=208,CarrierIDRead)
Note right of E: 包含 CarrierID
H-->>E: S6F12(ACKC6=0)
E->>H: S6F11 W(CEID=202,SlotMapRead)
Note right of E: 包含 SlotMap
H-->>E: S6F12(ACKC6=0)
9. 實作指南
9.1 事件啟用狀態
| 預設狀態 |
事件 |
| 永遠啟用 |
ControlStateChange, AlarmSet, AlarmCleared |
| 啟用 |
ProcessStarted, ProcessCompleted, MaterialReceived |
| 停用 |
ProcessStepChange, SubstrateLocationChange |
9.2 事件佇列管理
| 參數 |
典型值 |
說明 |
| MaxQueueSize |
1000 |
最大排隊事件數 |
| QueueOverflowAction |
DropOldest |
佇列滿時的處理方式 |
| EventTimeout |
45 秒 |
S6F12 的 T3 逾時 |
9.3 多報告事件
單一事件可以觸發多個報告。這適用於:
- 結合狀態資料與加工資料
- 包含摘要和詳細資訊
- 支援不同的主機需求
9.4 追蹤資料替代方案
對於高頻資料收集(>1 Hz),使用追蹤資料(S2F23/S6F1)而非收集事件,以避免訊息氾濫。
10. 實作檢查清單
| 功能 |
必要 |
備註 |
| S6F11/F12 事件傳送 |
是 |
核心事件報告 |
| S2F33/F34 定義報告 |
是 |
報告設定 |
| S2F35/F36 連結事件 |
是 |
事件-報告連結 |
| S2F37/F38 啟用事件 |
是 |
事件啟用/停用 |
| S6F15/F16 事件查詢 |
選用 |
隨選查詢 |
| 事件佇列 |
是 |
主機延遲時的緩衝 |
| Spool 支援 |
是 |
通訊中斷時的事件 |
| 預設事件集 |
是 |
工廠預設設定 |