把初始化完成當成可驗證狀態
設備上電後畫面已連線,不代表控制資料準備完成。配方可能尚未讀回、模組尚未確認、外部設備仍在啟動;若只用一個保留的初始化完成位元,就可能過早允許自動動作。本篇教你把準備條件和啟動請求分開,設計可逐項驗收的啟動限制。
以Q06UDVCPU專案作情境,實際初始執行程式、裝置保持與RUN切換行為依QnUCPU手冊核對。本文採應用層狀態概念,不指定通用SM位址或可直接貼用的梯形圖。一般流程限制也不能取代設備所需的安全控制與外部保護。
先定義什麼叫準備完成:例如本次啟動世代的配方驗證通過、必要模組已確認、資料來源有效且外部設備回報就緒。每項都要有來源與失敗結果,不能用上電後延時三秒這一項就代替所有條件,因為各設備啟動時間可能不同。
把本次初始化識別和舊保持資料分開。重啟前保留下來的配方可以是候選資料,但上次的驗證完成旗標不能自動代表本次仍有效。初始化開始時應按設計建立新的驗證世代,確認版本、批次與資料一致性,再產生本次完成證據。
設定自動模式只表示操作意圖,並不等於已允許開始。畫面應能分別顯示自動模式、初始化中、缺少哪項條件及是否可接受新啟動。這樣操作員按了自動卻未動作時,能知道下一步需確認什麼。
建立三段狀態與缺項清單
設計上先分初始化中、準備完成、執行中三段;遇到缺資料或錯誤時另有未就緒原因。狀態名稱是本例自訂,不是CPU原生狀態。初始化中只能進行設計允許的準備動作,實際輸出狀態依設備安全設計,不通用規定所有輸出都關閉。
配方驗證至少核對身份、版本、欄位數、範圍與必要一致性。若只看到收到回覆而未檢查內容,壞資料也可能讓完成旗標成立。例子中目標壓力允許零至十bar,收到十二bar應產生範圍不符,不能因通訊成功就認定初始化完成。
模組與外部設備就緒要按實際來源確認。網路連上和應用資料有效是不同條件,對方也可能只回報它的通訊服務已啟動。對每個Ready欄位寫明由誰產生、代表哪些檢查,以及失效或超時時如何撤銷,避免多個同名旗標互相誤解。
建立缺項清單比只顯示InitFailed有用。假設配方已通過但外部秤重資料未更新,顯示等待秤重資料及最後有效時刻;若資料到達但型別錯誤,顯示格式不符。兩種狀況需要不同處理,不能都請操作員反覆按啟動。
準備完成也不是永久資格。配方版本切換、必要模組重啟或資料失效時,按設計使相關就緒證據失效並重新確認。若已在執行中,採取的停止或保持反應必須由設備設計規定,不能由本篇隨意指定直接斷能。
啟動請求只在正確時機接受
本例的接受條件是本次初始化完成、自動模式有效、設備啟動許可成立,以及收到一個新的啟動請求。四項各自有證據;單獨按住啟動、切成自動或某個Ready變真,都不應被當成完整的新啟動要求。這是示例規格,實作前需納入整機控制設計。
特別測試按鈕已被按住時初始化才完成。若只檢查啟動位元為1,條件一到齊就可能突然啟動。較明確的本例策略是初始化未完成期間不排隊保存啟動,要求操作員先釋放,再於就緒後發出新請求;畫面說明此原因而非靜默等待。
操作序列如下:時間零上電、啟動按鈕已為1,初始化尚未完成;第五秒條件到齊但按鈕仍為1,預期不接受;第六秒按鈕回0,建立可接受新按壓狀態;第七秒新按下且其他條件維持有效,才接受一次。這些秒數只是測試時間軸,不是原廠啟動期限。
若第七秒收到請求同時配方版本已變,先依固定的判定順序重新檢查本次就緒證據,再決定接受或拒絕。不能先開始動作,下一掃描才發現初始化資格過期。具體掃描與資料一致性由主控制流程設計並驗證。
對HMI或網路請求,不應假定一個布林位元就能表示所有按壓。訊息重送或斷線恢復可能帶來舊請求,需依現有通訊契約辨識身份、有效期間與回覆。沒有這些條件時,先設計契約,不把收到1直接等同新的人工意圖。
用失敗情境驗證阻擋條件
第一組測試是配方有效、外部設備未就緒、啟動被按下。預期顯示外部條件缺失、拒絕本次請求;外部設備稍後就緒也不補執行舊請求。第二組是條件全部到齊但自動模式關閉,預期仍不接受自動啟動。
第三組是通訊連線成功但資料仍是上次啟動的快照。預期本次資料驗證不成立,不能沿用舊完成旗標。第四組是操作員按住啟動跨越就緒時刻,依本例策略必須釋放後重按;測試表需同時記輸入歷史,不能只看最後一筆1。
第五組是執行期間必要資料失效。驗收目標不是直接套用全部停機,而是確認系統進入該設備設計要求的反應,顯示原因並保留證據。條件恢復也不一定立即自動再啟動,需查既有復機要求。
失敗時先查誰寫初始化完成、哪些條件沒有納入,以及是否有其他程式路徑繞過接受條件。只在主畫面按鈕加限制,可能擋不住外部命令或其他模式入口。應把接受判斷放在所有入口共同遵守的控制邊界,再依平台確認一致性。
完成後應交付條件表、狀態轉移、拒絕原因、請求處理策略及上述測試的實際結果欄。紙上算例先確認規格清楚,之後才在指定平台編譯、模擬及受控現場驗證。
常見問題
問:上電延時三秒能代替初始化完成嗎?答:不能通用,延時只描述經過時間,還要驗證配方、模組及外部資料真正就緒。
問:上次保持的完成位元可以沿用嗎?答:先核對本次啟動、版本與資料資格,舊結果不能直接證明本次有效。
問:初始化完成時啟動按鈕已按住怎麼辦?答:本例要求先釋放再發新請求,不在未就緒期間暗中排隊;實際策略需明訂並驗證。
問:一般PLC限制能代替安全回路嗎?答:不能。設備安全功能依其專門架構與驗證程序,本文處理的是應用流程與啟動意圖。
參考:三菱QnUCPU手冊 第2章程式執行型態及第3章CPU功能