← 所有文章

FIELD NOTES / HMI 畫面與操作

SCADA標籤品質與最後更新時間如何同時呈現

HMI 畫面與操作作者:站長預估 5 分鐘閱讀

用目前值、最後良好值、品質原碼與不同時間來源,建立可驗收的SCADA資料時效顯示。

本文目錄

數字沒有變 不代表資料仍然新鮮

畫面一直顯示25.3°C,可能是溫度穩定,也可能是連線中斷後停在最後一筆。你要讓操作員分辨這兩種情況,就不能只放一個數字。先為每個標籤保存值、品質、來源時間、接收時間與最後成功確認時間,再決定主數字顯示哪一筆。

本文用一般SCADA資料模型,並對照OPC UA品質概念。若你使用Modbus,協定不會自動提供相同的Good、Uncertain、Bad資料品質與來源時間;必須由驅動程式依實際通訊和設備資訊建立自己的品質規則,清楚標示它是平台判定。

先把「來源值曾改變」與「最近確認來源仍有效」分開。溫度不變時,來源變更時間可能很久以前;採集器仍可每秒確認連線與值。反過來,伺服器每秒轉送快取,只能證明你最近收到伺服器訊息,不能證明PLC最近被成功讀取。

畫面可顯示主值25.3°C、品質良好、最後確認距今一秒;詳情另列來源時間與接收時間。若只能取得接收時間,就明說「本機收到於」,不要把欄位名稱寫成「設備更新於」。時間語意比畫面看起來有秒數更重要。

建立主值與最後良好值的顯示規則

準備兩個不同欄位:目前資料值與最後良好值。當目前品質變差,主值可以改成破折號或品質提示,旁邊以次要樣式保留最後良好值及其時間。不能把保留值放在正常主數字位置,又讓操作員以為它仍代表當前狀態。

OPC UA的StatusCode包含嚴重度及更細的代碼,不能只保留三個顏色就丟掉原始狀態。Bad資料值不可作為有效測量使用;Uncertain需要依應用與具體代碼決定用途。本文採顯示提示並禁止用不確定值自動推導新的操作建議。

例如十點整成功取得25.3,十點零三秒採集失敗。畫面顯示「目前資料無效」,並附「最後良好25.3°C,十點整」。不要把失敗時的預設零寫成0.0°C,否則趨勢、平均值與操作判斷都會被假資料影響。

品質與時效要分成兩個維度。歷史上那筆值原來是Good,但現在已超過時效門檻,可以顯示「來源品質Good;本地時效已過期」。如果直接改寫原始StatusCode,日後就分不清是設備回報錯誤,還是畫面自己判定太舊。

相同標籤在總覽、趨勢與報表採一致規則。總覽顯示無效而報表仍無條件計入最後良好值,會造成同一時間出現互相矛盾的結論。若報表確實採補值或插值,另標示衍生資料及其方法。

用兩種時間計算不同的年齡

接收年齡可以由本機單調時鐘計算,避免系統校時使倒數突然變負。來源年齡則依設備來源時間與可信目前時間比較,前提是來源時鐘可比較。來源時間晚於目前時間時顯示時鐘疑義,不把負年齡硬改成零。

教學案例設定預期確認週期一秒、逾時門檻五秒。這是本例顯示政策,並非OPC UA或所有製程的固定要求。若最後成功採集在十點整,到十點零六秒仍未再次確認,就標示過期;收到只有心跳的訊息不能延長採集成功時間。

如果設備在值改變時才更新來源時間,十點整的25.3保持十分鐘仍可能有效。此時使用獨立的採集成功或品質確認時間判斷新鮮度,保留舊的來源變更時間。沒有這種證據時,只能描述已知資訊,不能用持續收到快取推論現場正常。

重連後先保留過期標記,直到收到目前連線世代下、符合資料型別與品質要求的新確認。舊連線晚到的回呼不能解除過期;同世代也要核對查詢序號或資料版本,避免較舊快照覆蓋較新畫面。

顯示時間可依操作員時區轉換,但儲存時保留帶時區的時間及來源。來源時間、伺服器處理時間與本機接收時間不是三個可任意互換的欄位。跨機器相減前,先記錄時鐘同步品質與已知偏移。

按時間線驗收正常 失效與恢復

第一步建立測試資料:t=0取得Good、25.3;t=2仍成功確認相同值;t=3通訊失敗;t=8收到伺服器快取;t=10取得新的Good、25.4。把每一步的來源時間、接收時間與採集成功證據分欄列出。

預期t=2主值不變但確認年齡刷新;t=3出現品質失效,最後良好值仍25.3;t=8快取不能讓來源恢復正常;t=10驗證新資料後恢復主值25.4。這些是待執行的驗收案例,並不是本文已連上現場取得的測量。

再加入來源時鐘快兩分鐘、Bad附帶數字零、Uncertain、來源時間缺失、重連晚回與畫面睡眠喚醒。每個案例都要能解釋畫面文字,不依賴操作員記得紅黃綠各代表什麼。品質圖示搭配文字,觸控詳情能查看完整代碼。

失敗時先查原始回覆品質與時間,再看驅動程式如何轉換,最後檢查畫面快取。若採集已失敗但年齡一直回到零,通常要追是不是把伺服器送出時間誤當採集成功時間,或刷新畫面時重設了計時器。

驗收記錄保存標籤識別、單位、品質原碼、本地時效、各時間來源及顯示結果。設定門檻時與使用情境一起審查:趨勢觀察、報表與操作前確認可能需要不同時效,不能只挑一個讓畫面少出警告的數字。

完成後的畫面與常見問題

完成後應同時看見值的意義、品質及時間可信度。操作員能回答「這是目前值還是最後良好值」「多久沒有成功確認」「錯誤來自來源還是本地逾時」。不支援來源時間的設備也能使用這種方法,但必須保留未知限制。

練習把本例門檻由五秒改成三秒,保持t=2為最後成功確認。到t=6時年齡四秒,應過期;若t=5有快取轉送而沒有新採集證據,答案仍不變。先列時間證據再判定,別只看最新收到的一包。

FAQ1:數字未變是否就是斷線?不是,還要看成功確認、品質與時間語意。

FAQ2:Bad仍帶著數字能當測量嗎?不能當有效資料;最後良好值必須另行標示。

FAQ3:每秒心跳能證明PLC資料每秒更新嗎?只能證明心跳來源按契約回應,不能擴大成另一段採集鏈的證據。

FAQ4:沒有來源時間就無法顯示嗎?仍可顯示接收時間及已知品質,但不要宣稱設備取樣時間已知。

參考:OPC Foundation:DataValue的StatusCode與資料可用性。

參考:Python官方文件:monotonic計時不受系統時鐘校正影響。

延伸閱讀