先分資料性質
配方設定通常希望斷電後保留;正在運轉的動作狀態則不宜無條件沿用。暫存資料、保持裝置、參數區與非揮發性保存是不同機制。本文以虛擬配方 RecipeTemp=80 和累計 GrandTotal=120 為例,示範重啟後的預期矩陣,不代表任何通用 PLC 的預設值。
| 資料 | 用途 | 重啟策略 | 驗證 |
|---|---|---|---|
| RecipeTemp | 操作設定 | 保留但驗證範圍 | 80°C 是否有效 |
| GrandTotal | 歷史統計 | 保留並檢查完整性 | 120 是否可信 |
| RunRequest | 動作請求 | 通常清除 | 不可自動動作 |
| StepState | 流程位置 | 清除或進安全初始化 | 回到初始步驟 |
| FaultLog | 診斷 | 保留/另存 | 重啟原因可查 |
Q06UDVCPU 的保持範圍不能靠記憶猜測。依 Mitsubishi QnUCPU 官方手冊 SH-080807ENG-AF 所述,M 裝置不屬於斷電保持,L 裝置可作為鎖存用途;實際範圍、參數和清除方式仍需依手冊與專案設定確認。
建立重啟預期矩陣
| 情境 | RecipeTemp | GrandTotal | RunRequest | StepState | 預期 |
|---|---|---|---|---|---|
| 正常斷電再上電 | 80 | 120 | 0 | INIT | 設定/累計保留,動作不自動恢復 |
| 下載含清除 | 預設值 | 依下載策略 | 0 | INIT | 保存區可能被清除 |
| 人工清除保持區 | 預設值 | 0或預設 | 0 | INIT | 需記錄操作者 |
| 資料無效 | 999 | 未知 | 0 | INIT | 拒絕使用並報錯 |
| 電池或保存異常 | 未知 | 未知 | 0 | INIT | 進入資料恢復流程 |
完成後應看到的是『設定可用、累計可追溯、動作不自動啟動』,不是所有數值都原封不動。若 RecipeTemp 超界,應載入明確預設或停在待確認狀態;若 GrandTotal 不可信,不要用上一筆猜回。
初始化與清除流程
列出每個資料的保存需求、來源、範圍和失效策略。
確認 CPU 型號、保持參數、電池或非揮發性記憶體狀態。
啟動時先驗證版本、範圍、校驗或有效旗標,再允許流程使用。
將動作請求和步驟狀態導入安全初始化,不把舊動作直接恢復。
分開測試正常重啟、下載清除、人工清除和資料失效。
教學偽碼(需依目標 PLC 語法調整):
若 FirstScan:
ConfigValid := FALSE;RunRequest := FALSE;StepState := INIT
保留原始 RecipeTemp 供診斷
若 RecipeTemp 超出0~200:
RawInvalid := TRUE;ConfigInvalid := TRUE
PendingDefault := 80(待確認候選,不自動採用)
否則:仍須通過版本、單位及完整性檢查,才允許ConfigValid成立。
初始化與允許動作必須使用這個有效性結果。
| 失敗現象 | 先查哪裡 | 完成判定 |
|---|---|---|
| 設定變預設 | 保持範圍、下載選項、清除操作 | 知道是哪一情境清除 |
| 重啟自動運轉 | RunRequest、StepState 初始化 | 輸出保持關閉 |
| 累計跳回零 | 資料區、電池、保存錯誤 | 恢復或報資料無效 |
| 設定超界仍使用 | 啟動驗證未執行 | 拒絕並顯示原因 |
適用限制與常見問題
適用型號與限制:本文以 Q06UDVCPU/QnUCPU 手冊作保持概念的具體查核例,QJ71C24N 是通訊模組,不是保存記憶體。M、L、寄存器、參數區及電池行為不可跨型號泛化;下載與清除操作也要依 GX Works 版本核對。
| 問題 | 回答 |
|---|---|
| 保持資料越多越好嗎? | 不是,動作狀態可能造成重啟後誤動作。 |
| 斷電保持等於非揮發性嗎? | 不一定;保持範圍、電池與保存媒介要分開確認。 |
| 啟動後數值存在就能用嗎? | 還要驗證範圍、版本和有效旗標。 |
| 清除保持區會影響程式嗎? | 依操作範圍可能影響裝置資料;先保存並核對文件。 |
重啟前後逐項核對
進一步操作時,先備份保持資料與下載設定,逐一測試正常斷電、程式下載清除、人工清除和保存異常。每次上電先記錄原始值,再記錄驗證後是否可用。配方版本不符時應拒絕使用或轉入人工確認;累計資料不完整時,保留未知狀態而不是補零。流程位置即使保存,也必須重新確認輸入、模式、互鎖和輸出條件。這些檢查完成後才可讓自動流程接受新的啟動命令。
教學驗收時還要將保持資料和動作恢復完全分開。配方可保留但必須驗證版本、範圍和單位;累計可保留但必須確認完整性;流程位置和運轉命令則應進入初始化。每次清除或下載都先保存快照並記錄操作者。若資料無法證明可信,畫面應顯示未知或待確認,不可用預設數字冒充原值。初始化完成後再開放啟動命令,避免上電瞬間輸出。
保存資料每次使用前都要先驗證來源、版本、範圍和有效旗標;設定值可保留,動作狀態需重新初始化。下載或清除前先備份,完成後依矩陣逐項讀回。若保持失敗,畫面應顯示待確認並停止自動流程,不要猜回原值。
做斷電保持測試時,先列出預期值,再執行一個情境,最後逐項讀回。正常重啟要確認配方值仍在有效範圍、總累計可追溯、RunRequest 已清除、流程回到 INIT。邊界情境包括下載時勾選清除、人工清除保持區、資料校驗失敗、電池或保存媒介異常。若設定無效,應停在待確認狀態或載入文件指定的預設值,並留下原因;不要沿用超界數字。動作輸出必須重新通過現場條件,不可因 StepState 被保存就直接恢復。
| 情境 | 完成後應看到 | 先查 |
|---|---|---|
| 正常上電 | 設定保留、動作不自動啟動 | 保存範圍與初始化 |
| 清除保持區 | 預設值或無效旗標 | 清除操作記錄 |
| 資料超界 | 拒絕使用並報警 | 範圍檢查 |
| 重啟後誤動作 | RunRequest或輸出未清 | 啟動順序與輸出閘門 |
復原時先保存原始記錄,確認輸入、狀態、診斷旗標和輸出,再依規格清除或重試。這些是教學案例,不是 PLC 模擬或實機結果。
從保存值到可用設定還有一道驗證
先建立資料字典,每一列寫名稱、型別、單位、有效範圍、來源版本、保存位置與清除條件。配方溫度八十只是一個數字,若新版程式把單位從攝氏改成十分之一攝氏,直接讀回八十就會變成八度。版本和倍率的檢查因此與數值範圍同樣重要。
正常重啟練習先保存配方八十、累計一百二十,再記錄下載設定與裝置位置。重新啟動後先讀原始保存值,接著記錄驗證結果,最後才看流程是否接受新啟動。若只在初始化之後監看,你可能看到程式填入的預設八十,而不知道原先保存資料其實已遺失。
現在把配方改為九百九十九模擬無效資料。本例應保留九百九十九供診斷,將設定有效旗標清除,並提供八十作為待確認預設候選;它不是自動生效的安全溫度。操作員確認正確配方前,初始化不能直接允許使用這個候選值執行動作。
對總累計則採另一種處理。若校驗失敗,不能把未知值改成零再聲稱今天尚未生產。應保存錯誤原因,暫停依賴此累計的正式報表,使用外部紀錄完成對帳。恢復時記錄採用的資料來源與調整量,讓後續人員能追溯數字為何改變。
最後把資料保持和設備恢復分開驗收。流程步驟即使成功保存,工件可能已被移走,氣壓或驅動器狀態也可能改變。重新接受工作之前仍要核對現場前提。本文只要求重啟後不沿用舊運轉請求,沒有把資料保存成功等同於設備可以無條件續跑。
附錄記錄 CPU 型號、專案版本、保持參數、資料字典、初始值、重啟情境、實際觀察和清除操作者。Q06UDVCPU 的 M/L 差異已依 SH-080807ENG-AF 記錄,但完整範圍與現場設定仍待核對。
參考:三菱 QnUCPU 使用手冊 SH080807ENG AF 第4章裝置