四個數字先分開
本批完成數、總累計、良品數、不良品數的清零時機不同,不能共用一個 Reset。本文以十個虛擬產品為例,其中兩個不良;產品完成事件每件只進入一次。批次切換只清本批數,總累計保留;人工清零總累計則要有權限和紀錄。
| 數值 | 用途 | 批次切換 | 重新啟動 |
|---|---|---|---|
| BatchTotal | 本批完成 | 清零 | 依規格保留或重置 |
| GrandTotal | 歷史累計 | 保留 | 通常保留,須查保持設定 |
| GoodCount | 本批良品 | 清零 | 依批次策略 |
| RejectCount | 本批不良 | 清零 | 依批次策略 |
計數入口應是完成事件的上升緣或一次鎖存事件。若一件產品在完成狀態停留十個掃描,直接用狀態位元加一就會算十次。
十件產品的守恆表
| 產品 | 完成事件 | 結果 | BatchTotal | Good | Reject |
|---|---|---|---|---|---|
| 1 | 1 | 良 | 1 | 1 | 0 |
| 2 | 1 | 良 | 2 | 2 | 0 |
| 3 | 1 | 不良 | 3 | 2 | 1 |
| 4 | 1 | 良 | 4 | 3 | 1 |
| 5 | 1 | 良 | 5 | 4 | 1 |
| 6 | 1 | 不良 | 6 | 4 | 2 |
| 7 | 1 | 良 | 7 | 5 | 2 |
| 8 | 1 | 良 | 8 | 6 | 2 |
| 9 | 1 | 良 | 9 | 7 | 2 |
| 10 | 1 | 良 | 10 | 8 | 2 |
完成後應看到 BatchTotal=10、Good=8、Reject=2,並且 BatchTotal=Good+Reject。GrandTotal 若原先為 120,批次結束後應為 130。這些是虛擬案例手算結果。若守恆不成立,先查完成事件是否重複、結果判定是否在事件之後改變、或某個計數器被清零。
批次切換與重複事件
把產品完成定義成單一事件,保存產品序號或完成鎖存。
在事件入口增加 BatchTotal,並依品質結果只增加 Good 或 Reject 其中一個。
批次切換只清 BatchTotal、Good、Reject;GrandTotal 另行處理。
測試完成狀態維持多掃描,確認計數只增加一次。
測試重新啟動、人工清零、產品重測和事件遺失,保存原因碼。
完成事件必須由低電平到高電平形成邊沿;相鄰產品之間先回到低電平,下一件才允許再次計數。品質判定先有效才進入統計;IsGood 與 IsReject 同時成立或都不成立時,拒絕該筆並留下品質衝突,不可任意歸入良品或不良品。BatchReset 與 Complete 同掃描時,本例採先完成計數、再執行批次切換清零,並保存前一批快照;若設備需求不同,必須改寫成明確固定政策。
教學偽碼(需依目標 PLC 語法調整):
Edge := Complete AND NOT CompletePrev
若 Edge:
若品質有效且 IsGood XOR IsReject,且全部計數仍可增加:
BatchTotal與GrandTotal各加一
依品質只增加Good或Reject其中之一
否則保存該產品的QUALITY_OR_RANGE錯誤,不改任何計數
CompletePrev := Complete
若BatchReset且本次沒有資料錯誤:先完成舊批快照交易,再清本批三欄;GrandTotal保留。
相鄰產品需先讓Complete回零;長按不重算。
| 案例 | 預期 | 先查 |
|---|---|---|
| 完成位元維持 5 掃描 | 只加 1 | 事件入口和前次值 |
| 重測同一產品 | 依規格是否新事件;不可默默重算 | 產品 ID 與統計規則 |
| 批次切換 | 批次數清零,總累計保留 | Reset 範圍 |
| 手動清零 | 有權限、有紀錄 | 操作來源與保持資料 |
完成 失敗與限制
失敗時先查完成事件的逐掃描記錄,再查四個數值的寫入點與清零條件,最後查保持記憶。適用型號與限制:本文適用有計數資料的 PLC,包括 Q06UDVCPU、FX、S7 等;計數器指令、保持範圍、溢位和復歸規則必須依目標平台確認。QCPU 的保持不可由本文推定。
| 問題 | 回答 |
|---|---|
| 為什麼不用產品狀態直接計數? | 狀態會維持多掃描,必須轉成一次事件。 |
| 批次清零會清總累計嗎? | 不應自動清,兩者作用範圍要分開。 |
| 重測成功算良品嗎? | 依品質規格定義,保留測試次數,避免把同一產品當兩件。 |
| 計數到上限怎麼辦? | 先查型別範圍與溢位行為,設診斷和安全策略。 |
批次切換與錯誤復原實作
進一步操作時,將完成訊號保持數個掃描,確認一次事件入口只增加一次。再讓同一產品進入重測,分別驗證測試次數、最後品質與產量統計。批次切換前保存快照,切換後確認本批數為零而總累計增加量仍正確。若人工清零和完成事件同時發生,先按規格決定先計數或先清零,並留下操作紀錄。遇到計數器接近上限,停止增加並報警,不能讓回捲後的數字被當成正常產量。
教學驗收時還要檢查數量守恆和事件唯一性。每件產品只能有一個完成事件;重測保留產品識別與測試次數;批次切換保存快照後才清除本批資料。若完成事件遺失,應增加待處理或缺失計數,而不是用下一件產品補回。報表要列批次編號、開始結束時間和清零原因,讓維護人員知道數字的範圍。這些欄位能把單純的顯示值變成可追溯的統計結果。
批次資料每次變更都要記錄來源、時間、操作者和原因。正常完成時核對本批完成數、良品數、不良品數與總累計的關係;若任何數字不符,先回看事件入口和清零順序,再回看計數器型別與溢位。重啟後以保存快照比對,避免把恢復資料當成新產品。
批次結束時先保存批次快照,再執行清零。快照至少包含批次編號、完成數、良品、不良品、最後事件序號與清零時間。正常案例是十件產品完成後得到十、八、二;邊界案例是完成事件維持多個掃描、重測同一產品、批次切換與人工清零同時發生。若清零途中斷電,重新啟動後要能判斷快照已完成或尚未完成,不能把一半清零的結果當成新批次。計數溢位時應停止增加並報告,不要默默回零。
| 演練 | 應看到 | 復原重點 |
|---|---|---|
| 完成事件保持 | 只計一件 | 上升緣或鎖存 |
| 重測同一產品 | 測試次數增加,產量依規格 | 產品 ID |
| 批次切換 | 批次數清零、總累計保留 | 清零順序 |
| 接近上限 | 飽和或報警 | 型別範圍與溢位 |
復原時先保存原始記錄,確認輸入、狀態、診斷旗標和輸出,再依規格清除或重試。這些是教學案例,不是 PLC 模擬或實機結果。
把批次邊界當成一筆完整交易
假設目前本批九件、良品七件、不良兩件,總累計一百二十九。第十件良品完成的同一掃描收到批次切換請求,本篇先計入第十件,得到十、八、二與一百三十;再保存舊批次快照,最後清除本批三個數字。新批次從零開始,總累計仍為一百三十。
如果先清零再計數,第十件會跑到下一批,舊批報表只剩九件。這不一定是所有工廠都禁止的政策,但與本篇定義不同,所以必須先固定歸屬規則。畫面最好顯示批次編號與最後處理的產品識別碼,讓操作者能看懂這一件歸在哪一批,而不是只看到數字突然變零。
計數入口收到無效品質時,本篇不更新任何產量欄位,記錄該產品待確認。修正品質不能在完成位元仍維持高電平時偷偷補算;應經明確的事件重送或人工對帳流程,核對產品識別碼與是否已計數。只有布林邊沿的簡化範例,無法代替具有去重紀錄的完整產品追蹤。
同樣地,事件遺失不能只看總數猜出來。必須有投入序號、產品表或上游紀錄,才能知道哪一件尚未完成。已投入十件但完成只有九件時,先找待處理的識別碼;沒有足夠證據就標示差異待查,不要直接把總數加一讓報表看起來守恆。
清零交易也可能被斷電中斷。保存快照、確認保存完成、建立新批次三個階段應有可辨認狀態,啟動後才知道該續完成交易還是等待對帳。保持區只保留資料,不會自動保證多個欄位同時更新。這項復原設計要與保存媒介、寫入完成訊號及事件紀錄一起驗證。
附錄驗收表請記錄批次 ID、完成事件序號、產品 ID、品質判定、四個計數器、清零操作者與時間。每批結束核對 BatchTotal=Good+Reject,總累計則核對批次前後差值。案例資料為虛構推導。
本篇未選定計數器平台,未虛構特定指令、保持區或溢位規則;平台差異列為待確認。