01狀態碼定義

CWMS 廢水連續自動監測 — 狀態碼一覽

代碼 定義
00廢水處理單元暫停運轉/讀取失敗
10正常排放紀錄值
11超限紀錄值
20校正測試紀錄值
30無效數據
31監測設施維修、保養
32廢水處理單元故障
40天災或不可抗力因素
90設施汰換已報備但無備用設施
91備用監測設施替代值
92主管機關採樣檢測替代值 · 未定義
93歷史平均測值替代值 StatusReplace
94其它替代值

02狀態碼議題

哪些碼要產生 93 替代值,以及 31/91 的處理爭議

確定

20、31 期間仍有真實讀數 → 不需 93 替代值; 30、40、90 無資料 → 需 93 替代值

議題:31 狀態碼的處理

場景 值查詢 狀態 替代值 對外輸出
平鎮 濾掉 → -999 → 取最後一筆真實值 31 前月平均(輸出層) 雙行:前月均+93 / 0.00+31
FCP(改前) 濾掉 → 0.00 31(另查回復) 前月平均(usecase) API 給雙行料,但 OT 端丟 93 → 單行 0.00 31

議題:91 狀態碼的處理

physical_quantity.status_code = "91"  ← 人工設定(操作員標「這台走備用設備」)
record 表.status = "91"  ← 每筆讀數都「繼承」91 寫進去
聚合輸出(calculate_table / WithStatus)= 10/11  ← 只有這層被告警檢查改掉

03代碼修改

作報告:維修保養(狀態碼 31)輸出邏輯調整

一、問題(調整前)

設備進入「維修保養」時系統標記為 31。但實務上,維修期間設備往往還在持續量測、有真實讀數。

舊系統把 31 當成「沒有有效數據」處理:在法規輸出檔(CWMS)裡把真實讀數丟掉、填成 0.00,再另補一行「上個月的平均值」當替代值(標記 93)。

二、我做的調整

把後端(FCP)對 31 的處理改成:

直接輸出該時段的真實量測值、標記 31、單行;不再填 0.00、不再拿上月平均來替代。

採集端(OT 端,原 GCC)不用改 —— 它只負責「後端給什麼就顯示什麼」;我另外順手清掉採集端一段重複、會跟後端打架的舊判斷邏輯。

三、效果對照

調整前 調整後
行數 2 行 1 行
內容 上月平均+93 / 0.00+31 596.8+31
真實量測值 被丟棄 完整保留

04結果預測

改之前
FCP 值查詢濾掉 31 → 0.00
FCP 回傳0.00, 31, _replacement=前月均, 93
calculate_table(前月均, 93)
OT 端輸出因 mismatch → 單行 0.00 31(93 那行被丟)
改之後
FCP 值查詢不濾鏡聚合 → 118.20
FCP 回傳118.20, 31 (無 _replacement)
calculate_table(118.20, 31)
OT 端輸出單行 118.20 31

輸出檔(改之後)

248D01 11502041655118.20 31 ← 20/31:實測聚合值 + 原碼,單行

30/40/90 不變:仍雙行 —— 第一行 前月平均 + 93、第二行 0.00 + 原碼

05附帶修好 + 狀態碼集合

00 10 11 32 91有效碼 · 進聚合 · 單行
20 31仍有讀數 · 單行實測聚合值 + 原碼
30 40 90無資料 · 雙行 · 前月均 + 93
93替代值標記(合成,不進聚合)