← 所有文章

FIELD NOTES / PLC 程式與控制

溫度補償參數更新如何避免混合資料

PLC 程式與控制作者:站長預估 7 分鐘閱讀

以自訂線性溫度補償公式與 P1/P2 參數版本示範候選驗證、批次凍結、邊界切換及失敗保留舊版。

本文目錄

一 先固定補償公式與資料批次

本例的溫度補償不能把新參數直接寫進正在使用的資料流。先在規格中明訂公式、單位與參數版本。本案例採線性補償 y=x+k×(T−Tref),x 是原始量測值,單位 mS/cm;T 是 °C;k=0.020 mS/(cm·°C);Tref=25 °C。若 x=10.00、T=35,則 y=10.00+0.020×10=10.20 mS/cm。

同一批測量固定 parameter_version、Tref、k 與 unit。批次開始時建立 ParameterSnapshot,後續每筆只讀快照,不直接讀可變的 current_parameter。候選參數通過離線驗證與範圍檢查後,才在批次邊界切換;不能一半資料使用 k=0.020,另一半突然使用 k=0.030 卻沒有標記。

補償狀態要可見:Active、Candidate、Validated、PendingSwitch、Rejected 或 FallbackOld。失敗時保留舊版參數並將狀態標為 FallbackOld,而不是把候選值寫入後再猜結果。操作員要能看到目前生效版本、候選版本、啟用時間與拒絕原因。

欄位 本案例值 單位/用途 規則
formula y=x+k×(T−Tref) 版本固定
x 10.00 mS/cm 原始量測
T 35 °C 補償溫度
k 0.020 mS/(cm·°C) 候選需驗證
Tref 25 °C 不可混用
parameter_version P1 識別 批次內固定

補償輸入也要固定品質與單位。T=35 若其品質為 Bad,不能因公式可算就輸出正常結果;應保留 x、T、parameter_version 並標 InputInvalid。T=35 °F 也不能直接代入 °C 公式,必須先依契約轉為約1.6667 °C並保留運算精度,或拒收。

公式是本案例自訂示範,不代表所有感測器都使用線性補償。真實設備可能要求多項式、查表、溫度範圍或廠商內建演算法;若手冊未支持線性假設,應把本文當作資料版本與切換流程教學,不把算式接到生產控制。 本例的加號與係數僅用來演練版本管理,不是電導率回推參考溫度的通用物理模型。

二 候選參數如何驗證

候選 k=0.030 不能只因畫面看起來平滑就啟用。建立固定測試集,例如 T=15、25、35 °C,保存參考值與允許誤差。對 x=10.00,P1(k=0.020) 在 T=35 得 10.20;候選 P2(k=0.030) 得 10.30。若參考值是 10.18 且允差 ±0.05,P1 通過、P2 超差,P2 應維持 Rejected。

驗證資料必須和線上輸入分開,並保存 candidate_version、測試批次、公式、輸入單位、輸出結果與決策時間。若候選只在 25 °C 測試,不能推稱 15–35 °C 全範圍有效;測試點與適用範圍要寫進版本契約。

候選驗證成功後先進入 PendingSwitch,等待批次邊界或明確切換事件。切換事件寫入 activation_id,之後新增批次使用 P2;進行中的批次仍用 P1。不要依賴多個 word 同時寫入天然 atomic,應採單一寫入者、候選區完整驗證後發布及讀取者確認的協定,或平台已驗證的原子機制;單一完成旗標本身不足以保證多word一致。

T(°C) x P1 k=.020 P2 k=.030 參考/判定
15 10.00 9.80 9.70 依參考值驗證
25 10.00 10.00 10.00 兩者相同,不能單點決定
35 10.00 10.20 10.30 P1較接近10.18
45 10.00 10.40 10.60 超出適用範圍需另驗

候選參數的測試資料不能與候選生成資料完全相同,否則只證明候選重現自己。可保留一組驗證點 T=20、30、40,並以參考儀表值比較。若 P2 在訓練點通過、在 40 °C 超過允差,應限制適用範圍或拒絕整版,不得只挑好看的點。

25 °C 是兩個候選的交會點,單測 25 °C 無法分辨 k。這是常見驗證陷阱:看似測試通過,實際上只驗證了補償項為零。至少要有參考溫度兩側的測點,並將邊界外資料標為未驗證。

三 批次凍結與切換一致性

以下另設一個驗證已通過的切換情境,不延用前節P2超差的拒絕結果。假設批次 B17 在 10:00 開始,ParameterSnapshot=P1。10:02 候選 P2 通過驗證,但 B17 已經收集部分資料;規格定義 P2 只能從下一批 B18 啟用。B17 的每筆紀錄帶 P1,B18 帶 P2,報表可比較兩批但不會把參數變更誤當製程變化。

若來源以多欄或多 word 傳遞 k、Tref、version,讀取時要先形成一致快照。讀到 k 新值、version 舊值的混合狀態應標 ParameterSnapshotUncertain,停止套用並保留上一個有效快照。不能假設連續掃描的多個寫入會同時完成。

切換後需檢查版本回讀與生效時間。若寫入 P2 後回讀仍是 P1,狀態不能顯示 Active P2;若版本號更新但 k 寫入失敗,也要以內容校驗或參數雜湊拒絕切換。切換的「宣布」和「內容」都要被驗證。

時間 批次/狀態 生效參數 預期
10:00 B17開始 P1 全批凍結P1
10:02 P2驗證通過 P1仍Active P2 PendingSwitch
10:05 B17結束 P1 封存version P1
10:06 B18開始 P2 新批啟用P2
10:07 回讀失敗 P2狀態待查 暫停採用新結果/告警

批次快照需包含參數內容雜湊,不只版本字串。若 P1 版本號被錯誤重用但 k 已變,內容雜湊會不一致,系統應拒絕快照。參數切換記錄要有 old_version、new_version、activation_id、operator 與 reason,才能追查哪一批開始使用新值。

如果製程要求立即切換,仍應先定義切換點:例如下一個完整樣本、下一個掃描邊界或下一批。切換規則寫清楚後,才可在離線測試中驗證每筆輸出使用哪個版本;不能以「更新完成後自然生效」作為時序定義。

x與T也必須屬同一量測組;保留各自時間、樣本識別及最大允許時間差。參數快照一致,不能補救舊溫度配新量測。超過時間差或品質不合格時標輸入不匹配,不將最後一次溫度無限期沿用。

四 失敗保留舊版與排查

候選失敗的處理順序是:保留目前 Active 參數;把候選標 Rejected;寫入 reason、測試資料與操作者;讓資料流繼續以舊版計算或依製程規格停用。不能把候選 k 寫進工作區後,再用顯示值判斷是否合理,因為部分資料可能已被錯誤參數處理。

若輸出在切換時突然跳變,先查同一 batch 是否出現兩個 parameter_version,再查 T 的單位與公式符號。對 T=35、x=10,P1 應是 10.20;若顯示 10.30,可能是 P2 已提前套用;若顯示 9.80,可能使用了 Tref−T 的反向符號。

若資料在 25 °C 正常、35 °C 異常,查 k 的單位與驗證點;若所有溫度都偏移,查 Tref 或 offset;若只有切換瞬間異常,查快照一致性與 activation_id。排查報告要列 raw x、T、公式、參數版本、輸出與狀態,不只列最後一個補償值。

症狀 優先檢查 可能原因 應有狀態
切換中跳值 batch/version 混用P1/P2 SnapshotUncertain
35°C偏高 k單位/版本 P2提前套用 P1/P2可追溯
25°C正常 驗證點 零補償掩蓋錯誤 擴充溫度測試
回讀不同 內容校驗 多欄寫入不一致 FallbackOld
候選失敗 reason/測試集 允差或範圍不符 Rejected

回復舊版也要有邊界。若 B18 使用 P2 後發現品質偏差,下一個明確切換點可回到 P1;B18 已產生的結果仍保留 P2 標記,不可回復後批量改寫成 P1。報表比較時要把參數變更與製程變更分開呈現。

本篇公式與數值是自訂案例。對安全或品質關鍵製程,補償切換還需評估限值、互鎖、人工核准與回復程序;不能因版本狀態完整就推論製程一定安全。

五 驗收 FAQ 與來源

本題基準公式為 y=x+0.020×(T−25),x=10.00、T=35 得 10.20。候選 P2=0.030 在同條件得 10.30;P2 必須以多溫度參考資料驗證,通過後待下一批切換。批次內參數版本固定,失敗時保留 P1 並讓狀態可見。

FAQ1:參數寫入多個 word 後讀到新版本,是否代表整組已原子切換?答:不代表。要用一致快照、版本校驗或平台支援的原子機制;混合內容應標 SnapshotUncertain。

FAQ2:為何 25 °C 單點測試不足?答:T−Tref=0,任何 k 都得到同一結果。至少要測參考溫度兩側,並確認適用範圍。

FAQ3:候選驗證失敗時可以清零參數嗎?答:應保留舊版或依規格停用,不能把零當成安全替代。候選要標 Rejected 並保存原因。

FAQ4:線性公式能套所有溫度感測器嗎?答:不能。公式、係數、單位與範圍必須由目標設備或工程規格支持;未核對時只能作離線示例。

參考:NIST SI units 官方資料:溫度與單位表述、量值一致性參考,非 PLC 補償公式。

參考:NIST ITS-90 溫度尺度資料:溫度量測與校準背景參考,非特定設備參數。

延伸閱讀