Rozšířený PI regulátor
Celé jméno
Lib.Mervis.v1_0.AdvancedPiController
Potřebné reference projektu
- Lib.Mervis
Popis
Pomocný blok sloužící pro realizaci PI regulátoru s možností sledování akční veličiny.
Použití v ST
program test var pi: lib.mervis.v1_0.AdvancedPiController := (Xp := ..., Ti := ..., Min := ..., Max := ...); end_var pi(Input := ..., SetPoint := ..., Enable := ..., TrackingEnable := ..., TrackingValue := ..., Output => ...); end_program
Vstupy
Jméno | Datový typ | Povolený rozsah | Retain | Nutno připojit | Význam | |
Input | real | Ne | Ano | Skutečná hodnota | ||
SetPoint | real | Ne | Ano | Žádaná hodnota | ||
Enable | bool | Ne | Ne | Povolení funkce, pokud je false je na výstupu hodnota 0 | ||
TrackingEnable | bool | Ne | Ne | Povolení funkce sledování hodnoty TrackingValue | ||
TrackingValue | real | Ne | Ne | Sledovaná hodnota | ||
Min | real | ⇐ 0 | Ne | Ne | Omezení minimální hodnoty výstupu | |
Max | real | >= 0 | Ne | Ne | Omezení maximální hodnoty výstupu | |
Xp | real | > 0 | Ne | Ne | Šířka pásma | |
Ti | real | > 0 | Ne | Ne | Integrační konstanta | |
TrackingDontIncludePPart | bool | Ne | Ne | Určuje způsob výpočtu nového akčního zásahu v režimu sledování - popis viz níže | ||
TrackingThreshold | real | Ne | Ne | Hodnota pro přepočtení vstupní veličiny na velikost akčního zásahu (např. tedy kolik procent výstupu odpovídá jednomu stupni celsia) |
Výstupy
Jméno | Datový typ | Význam | |
Output | real | Výstup | |
TrackingCalculatedThreshold | real | Hodnota pro přepočtení vstupní veličiny na velikost akčního zásahu (např. tedy kolik procent výstupu odpovídá jednomu stupni celsia) | |
InvalidParameters | bool | Indikace neplatného nastavení regulátoru (Xp, Ti, Min nebo Max mimo povolený rozsah) |
Metody bloku
Jméno | Význam | |
Adjust | Slouží pro úpravu integrační složky tak, aby byla na výstupu maximální hodnota | |
AdjustToValue | Slouží pro úpravu integrační složky tak, aby byla na výstupu požadovaná hodnota | |
Restart | Slouží pro vynulování interních hodnot a restartu výpočtu |
Podrobný popis funkce
Funkční blok realizuje PI regulátor s možností režimu sledování akční veličiny získané např. jiným regulátorem. Pro výpočet výstupu jsou použité následující vzorce:
- Regulační odchylka
e = SetPoint - Input
- Proporcionální složka
PPart = (Max - Min) / Xp * e
- Integrační složka (každý scan cyklus)
IPart = IPart + (Max - Min) / (Xp * Ti) * e * ΔT
- Výstup
Output = PPart + IPart
Regulátor obsahuje algoritmy pro omezení velikosti integrační složky v případě dosažení saturace - Anti-windup
Režim sledování
Pokud je vstup TrackingEnable nastaven na hodnotu true, dochází ke změně chování regulátoru. V každém výpočetním cyklu se použije hodnota TrackingValue jako výchozí pro výpočet nového akčního zásahu. Způsob použití se liší podle nastavení parametru TrackingDontIncludePPart, pokud má hodnotu
- true. Regulátor vypočte svoji I-složku tak, aby přesně odpovídala TrackingValue - tedy pro výpočet se uvažuje e = 0.
- false. Regulátor vypočte svoji I-složku tak, aby výstup regulátoru přesně odpovídal TrackingValue - do výpočtu se zahrnou i aktuální hodnoty vstupů SetPoint a Input
Následně dojde k výpočtu nového akčního zásahu (tedy započtení aktuální P-složky), který se nastaví na výstup Output. Pro snažší použití s blokem TrackingPiSelector slouží vstup TrackingThreshold a výstup TrackingCalculatedThreshold, pomocí kterých se určují hystereze pro výběr regulátoru, jehož výstup se použije.
Poznámky k použití
- Pro použití při řízení ohřevu se regulátor zapojuje následovně
- SetPoint = Žádaná hodnota
- Input = Měřená hodnota
- Pro použití při řízení chlazení se regulátor zapojuje následovně
- SetPoint = Měřená hodnota
- Input = Žádaná hodnota
- ! Regulátor na základě své definice a implementaci anti-windup neumožňuje pracovat v režimu „bez nuly“, tzn. kdy v rozsahu Min..Max není obsažena nulová hodnota - toto je také indikováno pomocí výstupu InvalidParameters