先把問題拆開 定義狀態 請求與完成條件
本篇把流程固定成LOAD、MEASURE、REPORT三步。Pause只暫停並保存現場脈絡,Resume回到保存的步驟後重新確認條件;Cancel是操作員放棄本次工作,Reset則是清除故障與初始化。四個命令不可共用一個清除線圈。
| 項目 | 應定義 | 不要混淆 |
|---|---|---|
| Pause | 可暫停檢查點 | 清除Step |
| Resume | PAUSED且前提成立 | 盲目接續 |
| Cancel | 允許取消 | 冒充完成 |
| Reset | FAULT/待機 | 任意狀態清除 |
教學先用虛擬狀態與監看欄位,不接實體輸出。每一步都寫前置、操作、預期結果與失敗先查位置;這樣你在工程軟體中才能逐項核對,而不是只看最後一盞燈。
建立流程 先做狀態表 再寫轉移
建立State、Step、SampleCount、RecipeVersion與Pause、Resume、Cancel、Reset旗標。MEASURE每完成一筆才讓SampleCount加一,目標樣本數是4,代表要收四筆資料,不代表一個掃描週期收四筆。Pause時保存目前Step與已收筆數,並關閉量測輸出。
建立 State、Step、SampleCount、RecipeVersion、Pause、Resume、Cancel、Reset。
MEASURE 安全點提出 Pause,確認資料快照保存。
改變 SensorReady 後 Resume,確認拒絕;恢復前提再測。
PAUSED 提出 Cancel,確認部分結果不冒充完成並回 IDLE。
完成後應看到:狀態、操作請求、資料欄位與虛擬輸出一致。若不同,先查是否有其他程式段改寫狀態、在錯誤分支清除記憶,或取樣時機不一致。
具體合成案例 逐掃描核對正常與邊界
以下以事件E1~E7表示可跨多個掃描的觀察:已收兩筆後E1暫停,E2維持PAUSED;E3收到Resume且前提通過才回MEASURE,E4完成第三筆、E5完成第四筆,E6進REPORT提交一次,E7確認提交後回IDLE。若Resume前提失敗,本例維持PAUSED並顯示原因;若取消,清理本次資料但不回Done。
| 掃描/條件 | 判斷 | 狀態 | 應看到的結果 |
|---|---|---|---|
| E1 | 第二筆後Pause | PAUSED | 保存筆數2與工作版本 |
| E2 | 沒有Resume | PAUSED | 不取樣 不清舊資料 |
| E3 | Resume且前提有效 | MEASURE | 從第三筆接續 |
| E4 | 第三筆完成事件 | MEASURE | 筆數3 |
| E5 | 第四筆完成事件 | MEASURE | 筆數4 不再取樣 |
| E6 | 完整四筆 | REPORT | 提交同一工作一次 |
| E7 | 結果已確認 | IDLE | 保留歷史 不重複提交 |
本例每次只採用一個狀態轉移,故障優先於一般操作;取消、停止與完成的細節依下列固定案例核對。不同設備改用其他政策時,文字、事件表與程式必須一起修改。
本例同時命令採故障、Cancel、Pause、Resume的順序;Reset只在FAULT且原因排除時處理,不能用Reset跳過正常量測。Pause期間本步有效量測計時凍結,總工作經過時間仍記錄;另設暫停最長期限。REPORT已開始提交時先完成握手,不在半筆報告中間暫停。
暫停保存的資料要能支持恢復
暫停不是把所有變數凍住就結束。先列出恢復所需的最小上下文:工作識別碼、目前步驟、已收樣本數、每筆資料的有效旗標及工作配方版本。計時器也要分清楚是有效量測時間還是整件工作經過時間,兩者在暫停時可以有不同處理。
本例在第二筆資料已完整寫入後才接受暫停,因此筆數為二時,前兩格都必須有效。若先增加筆數才寫資料,暫停或故障插在中間,就會出現畫面顯示兩筆而第二格仍空白。把寫入完成和筆數更新放在明確提交點,能避免這類半完成狀態。
恢復時先確認工作識別碼和配方版本仍符合原工作。操作員在暫停期間修改的是下一件配方,不能讓目前兩筆舊資料和下一筆新條件混在一起。若現場已換掉工件,即使感測器準備完成,也應拒絕原工作接續,要求取消後建立新工作。
取消要留下最後進度與原因,並使未完成資料不能被當成正式報告。你可以保留兩筆樣本作故障分析,但必須標示取消,不得因陣列中仍有數值就送進良品判定。下一件接受時使用新的工作識別碼,再初始化本次有效旗標,避免舊資料混入。
最後驗收報告只提交一次。第四筆完成後進報告狀態,結果需要確認時保持同一識別碼重送;通訊重試不能重新量測四筆,也不能重新增加完成數。這就是為什麼暫停、取消與報告握手要一起看,不能只檢查狀態是否回到待機。
失敗先查 適用限制與常見問題
監看Step、State、SampleCount、RecipeVersion與命令旗標。完成結果是四筆資料各有索引且REPORT只執行一次;失敗先查Pause時是否保存了步驟與筆數,再查Resume是否重新驗證條件,最後確認Cancel沒有誤保留舊資料。
三個常見問題
Pause 可以在任何一步嗎?不行,要標示不可中斷區段。Resume 只改狀態就好嗎?還要重新核對前提與版本。Cancel 後資料全刪嗎?部分結果可清除,但原因與時間應保留。
暫停與取消的差異要在資料上看得出來。Pause 保存可以恢復的上下文,例如目前步驟、樣本數、配方版本與必要的輸入快照;Cancel 則結束本次工作,清除不能沿用的部分結果,留下取消時間與原因;Reset 主要清理故障狀態,不應偷偷宣告工作完成。請在每個步驟提出四種操作,製作矩陣並測試同時命令。特別觀察計時器是否在 Pause 停止或累計、Resume 是否重新確認 SensorReady、Cancel 後是否還有舊 Done 脈衝。若專案要求斷電後恢復,還要另外確認保存範圍,不能把暫停資料自然當成斷電保持。
流程恢復還要處理外部條件已改變的情況。Pause 後工件可能被移走、配方可能被更新、感測器可能重置,因此 Resume 必須重新驗證識別碼、位置和版本;驗證失敗則維持PAUSED並顯示原因;明確故障另進FAULT。取消後下一件工作要使用新識別碼,不能沿用舊的部分結果。把這些規則放進操作員畫面與交接紀錄,維護時才不會只看到一個模糊的「暫停中」。
測試人員要把 Pause、Resume、Cancel、Reset 的按鈕事件和 PLC 狀態同時記錄。若畫面顯示已繼續但 State 仍 PAUSED,先查請求是否被取樣;若 State 已 MEASURE 但樣本數倒退,查恢復時是否重新初始化;若 Cancel 後下一件帶著舊 RecipeVersion,查快照清除。完成這些核對,流程才具有可交接的恢復行為。
操作驗收與適用限制
驗收結果是Pause保留Step與SampleCount,Resume只在SensorReady重新成立後繼續,Cancel清除本次資料回IDLE,Reset清除故障後才可再啟動。限制是資料筆數、配方欄位與保存方式需依實際設備決定,本文沒有指定Q系列固定寄存器。
測試第2筆暫停後繼續、第2筆取消、量測故障後Reset,再確認REPORT只產生一次。重新RUN前檢查RecipeVersion與SampleCount是否已初始化;若畫面顯示四筆但資料缺一筆,先以索引逐筆核對寫入完成旗標。
適用型號與限制:概念可套用具備位元與狀態資料的 PLC;實際指令、資料型別、計時單位、模式切換與復歸行為必須依目標 CPU、工程軟體和設備規格確認。