← 所有文章

遲滯判斷怎麼寫 讓門檻附近的狀態不要反覆切換

· 站長

用啟用 80、解除 75 的雙門檻和逐筆表,說明遲滯如何避免門檻附近反覆切換,並分辨延時與訊號平滑。

遲滯是在記住目前狀態

單一門檻常寫成 Value>80 就 ON、否則 OFF;當數值在 80 附近跳動,輸出便會跟著每次取樣反覆切換。遲滯把門檻拆成兩個:高於 80 才啟用,低於 75 才解除,介於 75 到 80 時保持上一個狀態。這個保持不是延遲,也不是把數值平均,而是讓狀態轉換需要跨過不同邊界。

目前狀態 輸入條件 下一狀態 說明
OFF Value>80 ON 跨過啟用門檻
OFF Value≤80 OFF 尚未啟用
ON Value<75 OFF 跨過解除門檻
ON Value≥75 ON 包含 75 的邊界,保持
任一 75≤Value≤80 保持 遲滯區,不重新判斷另一側

題目案例採『高於 80 啟用、低於 75 解除』,因此 Value=80 不啟用、Value=75 不解除。若設備規格要用大於等於或小於等於,必須在表格和程式中一起改,不能只改註解。75 和 80 是教學參數,不是任何設備的保護設定。

用逐筆輸入驗證邊界

筆次 Value 前狀態 啟用條件 解除條件 後狀態 原因
1 74 OFF OFF 低於 75
2 76 OFF OFF 遲滯區
3 80 OFF OFF 80 不含等於
4 81 OFF ON 高於 80
5 79 ON ON 遲滯區保持
6 75 ON ON 75 不解除
7 74 ON OFF 低於 75
8 82 OFF ON 再次啟用

逐筆測試的關鍵是同時列前狀態和後狀態。只列 Value 與輸出,很容易漏掉『76 為什麼仍是 OFF』或『79 為什麼仍是 ON』。完成後應看到輸出只在第 4、8 筆啟用,並在第 7 筆解除;若每筆都依 Value>80 重新計算,就會在遲滯區得到錯誤結果。

遲滯 延時 濾波不是同一件事

方法 處理對象 何時適合 不會解決什麼
遲滯 上下轉換門檻 門檻附近反覆切換 不能消除真正的大幅雜訊
延時確認 條件持續時間 需穩定一段時間才允許轉換 不能改變門檻值
訊號平滑 數值波動 想降低高頻雜訊 會引入延遲與相位差
輸入濾波 硬體/取樣雜訊 輸入模組提供濾波設定 不能取代流程狀態規格
通用偽碼(僅示意):
IF State=OFF AND Value>80 THEN State:=ON; END_IF;
IF State=ON AND Value<75 THEN State:=OFF; END_IF;
Output:=State;
不能把兩個 IF 改成 IF Value>80 THEN ON ELSE OFF,因為那會消失遲滯記憶。此偽碼沒有指定 PLC 語言、資料型別或掃描執行順序,不能宣稱可直接編譯。

參考:Schneider Electric Machine Expert V2.2 ControlLoopLibrary 官方文件〈BangBangControllerWithValueHysteresis〉說明兩點控制器的輸出區域取決於上一個輸出值與遲滯值;此文件用來支持『遲滯需要前一狀態』的概念,案例門檻仍是本文合成參數。

完成後應看到什麼 失敗先查哪裡

  1. 確認啟用門檻、解除門檻、等號規則和單位已寫進規格。

  2. 輸入從 74、76、80、81、79、75、74 逐筆變化,依表預測狀態。

  3. 監看 Value、前狀態、後狀態和輸出,不只看最後一個燈號。

  4. 比較遲滯版本與單門檻版本的切換次數,案例應顯示遲滯版本少掉門檻附近反覆切換。

  5. 把門檻極性顛倒、上下門檻相等、輸入超範圍列為失敗案例。

失敗現象 先查哪裡 不要先做什麼
75~80 間輸出一直翻轉 是否真的使用前狀態保持 不要只加更多延時
Value=80 就啟用 比較運算子是否寫成 >= 不要修改案例表來配合程式
輸出一直 OFF 門檻單位、縮放和 State 初始化 不要直接把上限降很低
輸入跳很快仍切換 雜訊幅度是否跨過兩個門檻 不要把遲滯當成濾波
改門檻後狀態異常 更新時是否保留狀態、門檻順序是否合理 不要在運轉中無規則改參數

調整門檻時要保留版本和單位。若原始值先經工程縮放,遲滯門檻應在工程單位比較;若直接用模組原始值,則要記錄量程、倍率和正負號。不要一邊用原始值、一邊用工程值寫上下門檻。對浮點資料還要決定比較容差,避免數值因表示誤差在邊界附近反覆落入不同側。適用型號與限制:本文適用有比較指令與狀態記憶的 PLC 邏輯;Q06UDVCPU、FX、S7 等可採相同設計概念,但比較指令、資料型別、浮點精度和狀態保持方式要依目標平台確認。遲滯不是安全限位、過壓保護或急停功能,工程上必須另設獨立安全鏈。

常見問題與附錄

問題 回答
兩個門檻一定要差很多嗎? 不一定,但差距小於輸入雜訊時仍可能切換;差距需依量測解析度和需求設定。
遲滯會讓輸出反應變慢嗎? 跨越另一個門檻才改變,可能延後解除或啟用;這是設計效果,不是程式錯誤。
可以用平均值取代遲滯嗎? 平均是平滑數值,遲滯是分離轉換門檻,兩者作用不同,必要時可分別使用。
上限小於下限怎麼辦? 先視為參數錯誤,產生診斷旗標或拒絕啟用,不要讓狀態規則變得不明。

遲滯參數也要有變更規則。運轉中若有人把啟用門檻改到解除門檻以下,程式可能同時滿足兩個條件;建議先驗證上限與下限的關係,再以版本化設定套用。若輸入失聯、品質位元無效或超出量程,不要只把異常值送入遲滯判斷,應先決定輸出保持、關閉或進故障的策略,並留下診斷原因。

遲滯區的寬度應由輸入噪聲、允許波動和設備反應決定。太窄時,雜訊仍會跨過兩個門檻;太寬時,狀態可能在實際需要解除後仍保持。設定時先收集正常波動範圍,再把啟用與解除條件寫成可驗證的規格。若是壓力、溫度或液位,還要確認工程值的單位、量程和取樣週期,不要只把畫面上看到的數字直接當成 PLC 比較值。

完成遲滯邏輯後,請把狀態變化和原始輸入一起記錄一段時間。若狀態仍反覆切換,檢查是否有另一段程式直接寫輸出、是否在不同任務使用不同門檻,以及是否每次掃描都重新初始化狀態。若輸入品質無效,應先進入明確的故障處理,不要用遲滯保持假裝輸入正常。

遲滯判斷完成後,最重要的是保留門檻定義和邊界結果。換設備、換量程或換資料型別時,重新核對單位與比較子,避免沿用看似相同的 75 和 80。每次改參數都應重新跑等於門檻、剛跨過門檻和回到遲滯區的測試。測試表也要記錄輸入品質,避免把失聯資料誤當成正常遲滯。

請把每次門檻調整的原因、操作者與日期留下,並保留調整前後的逐筆表,方便判斷切換變少是遲滯有效,還是輸入被錯誤裁切。

參考:本文引用的官方來源為 Schneider Electric Machine Expert V2.2 ControlLoopLibrary;官方資料的控制器介面與門檻方向仍須按該函式庫版本閱讀。

延伸閱讀


使用 PLC 工具箱 →