先分草稿 已送出與結果不明
HMI輸入到一半遇到登入逾時,先讓操作員知道設定值是否送出。文字留在輸入框不代表PLC已收到,按過按鈕也不代表設備已完成。本文將狀態分為草稿未送出、等待回覆、已確認完成與結果不明,讓逾時處理有明確依據。
案例目前設定為50.0,使用者甲在輸入框改成55.0,但尚未按套用。此時登入逾時,畫面顯示「登入已逾時;55.0尚未送出,設備最後確認值為50.0」。停用套用按鈕並清楚區分草稿和設備值,不能直接把輸入框變成50.0卻不解釋。
這裡採用可保留同一使用者草稿的教學政策;現場也可選逾時即清除,但必須提示清除結果。保留政策要列期限、使用者、設備、欄位、原始版本與草稿值,不能讓下一位登入者不知情地接手並送出。
適用於有登入與設定送出功能的HMI或Web操作介面。不同產品未必支援自訂草稿與伺服器驗證,因此本文不提供猜測的巨集函式。登入逾時策略也不等於機台安全停止,機台狀態仍依獨立控制設計。
建立可以照著操作的逾時畫面
先在畫面上分開「設備目前值」和「編輯草稿」。開始編輯時保存設備識別、參數識別、基準值50.0及版本7,草稿才改成55.0。收到其他來源更新時,仍顯示最新設備值,但不應悄悄覆蓋正在編輯的草稿。
當登入到期,先使目前身分失效並阻止新的寫入,再顯示逾時訊息。若保留草稿,將它標成需重新登入及核對,不要只把登入視窗蓋在可操作按鈕上。鍵盤捷徑、返回上一頁與其他已開分頁也不能繞過限制。
倒數提示只是協助使用者,不是權限的依據。真正執行請求的一端仍需檢查有效工作階段與當前權限。用戶端可能休眠、掉線或計時器延後,畫面顯示尚有十秒也不能保證伺服器接受本次寫入。
正常流程可提示「重新登入後檢查草稿」與「捨棄草稿」。捨棄只刪除尚未送出的內容,不向設備寫回原值。若目前有等待回覆的請求,另列操作識別與狀態,不能把捨棄草稿說成取消已送出的設備動作。
閒置期限和絕對期限應各自定義。使用者持續操作可能延長閒置期限,卻不一定延長絕對期限;自動刷新畫面是否算活動也要明訂,避免背景輪詢讓應該到期的登入永久有效。
重新登入後重新核對而非自動送出
使用者甲重新登入後,先確認草稿仍屬甲、同一設備及同一參數,再重新讀取設備目前值與版本。若版本仍7、值仍50.0,而且權限、量程與單位未變,畫面可顯示草稿55.0供再次確認;重新登入本身不能觸發寫入。
若期間使用者乙已把值改成52.0、版本8,應提示「設備設定已變更:目前52.0,原編輯基準50.0,草稿55.0」。讓甲重新決定是否建立新修改,不能以舊版本7的草稿直接覆蓋版本8。真正提交時仍要做版本條件檢查。
如果登入者改為乙,不直接展示或套用甲的草稿。依產品政策隔離或清除甲的草稿,並提示目前沒有可繼承的修改。即使兩人同樣是工程師,也不能以角色相同就把另一人的操作意圖當成已授權。
若參數單位由攝氏改成華氏,或設備已切換配方,舊草稿不能只換標籤繼續用。保留原始編輯語境並要求重新核對;例如55.0°C與55.0°F不是同一設定,草稿中的單位與倍率也必須一起保存。
草稿到期或設備來源無法確認時,顯示已失效及原因,不提供套用。離線可保留供參考的內容,但要明確區分參考草稿與可提交修改;恢復連線後再取得目前值及權限,不在背景自動補送。
處理送出與逾時同時發生的情境
另一情境是甲已送出OP9,隨即登入逾時。若伺服器明確在執行前拒絕,記錄未執行及拒絕原因;若請求已被接受但回覆遺失,顯示「OP9結果待確認」,不能顯示「未送出」或自動再送一次。
重新登入後使用支援的結果查詢核對OP9。設備目前值恰好55.0,只能作部分證據,因為可能是其他使用者寫入;若有操作識別、設定版本或稽核記錄,應一起核對。無法確認時保留結果不明,交由既定處理流程。
伺服器應明訂接受命令與權限檢查的邊界。若登入到期前已合法接受,之後是否繼續執行由命令契約決定;登出通常不能撤回已送往PLC的動作。畫面須忠實呈現這個邊界,不能承諾逾時後所有操作都已取消。
驗收至少包含編輯未送出、按套用同時到期、送出後掉線、重新登入同一人、換人登入、設備版本改變及草稿到期。每項都核對設備寫入次數、畫面訊息與操作識別,確認沒有因登入恢復而多送一次。
失敗時先看草稿狀態與請求日誌,再查伺服器拒絕或接受時間,最後對照設備紀錄。不要只拿畫面上的綠色提示判斷已完成;提示本身也可能使用舊快取或在斷線後未更新。
完成後應看到的結果與常見問題
完成後,操作員應能回答三件事:目前設備最後確認值是多少、草稿是否已送出、下一步是重新核對還是查詢既有操作結果。驗收紀錄保留使用者、設備、草稿版本、請求識別及狀態轉移,避免留下只能猜測的輸入框。
問:逾時後把輸入框清空就夠了嗎?答:不夠,還要提示是否捨棄未送出內容;已送出的請求另行追蹤,不能一起清成沒有紀錄。
問:重新登入後可以自動套用草稿嗎?答:本例不允許。先核對身分、目前值、版本、單位與權限,再由使用者明確送出。
問:登出是否代表命令取消?答:不代表,已被接受或送出的命令要依設備契約確認;尚未送出的草稿才可直接捨棄。
問:設備值等於草稿就是我寫入成功嗎?答:不一定,可能是別人修改或原本相同。應對照操作識別、版本與結果紀錄。
本文流程與數值為教學設計。上線時需按產品支援的工作階段、草稿儲存與命令查詢功能調整,並驗證後端確實拒絕失效身分的新寫入。
參考:OWASP Session Management:工作階段期限及伺服器失效處理背景;草稿流程是本文設計。
參考:OWASP Authorization:逐次請求授權檢查原則,不是特定HMI巨集API。