Blok realizuje PID regulátor v tzv. „velocity“ tvaru. Na žádanou hodnotu je aplikována filtrace, takže její skokové změny nezpůsobují skoky v akčním zásahu.
program test var pid: lib.mervis.v1_0.VelocityPidC; end_var pid(Setpoint := ..., Input := ..., Param_Xp_Kp := 30, Param_Ti_Ki := 120, Param_Kind := Dependent); hw.AO1 := pid.Output; end_program
Jméno | Datový typ | Povolený rozsah | Jednotka | Retain | Nutno připojit | Význam |
---|---|---|---|---|---|---|
Input | real | Ne | Ano | Měřená hodnota | ||
Setpoint | real | Ne | Ano | Žádaná hodnota | ||
Enable | bool | Ne | Ne | Povolení funkce | ||
Tracking | Lib.Mervis.v1_0.PidTrackingType | Ne | Ne | Určuje režim sledování | ||
Tracking_Value | real | Ne | Ne | Hodnota, kterou má výstup regulátoru sledovat | ||
Tracking_Threshold | real | Ne | Ne | Hodnota pro přepočet vstupní veličiny na velikost akčního zásahu (např. kolik procent na výstupu odpovídá změne vstupní hodnoty o 1 °C) | ||
Tracking_TimeConstant | time | Ne | Ne | Časová konstanta sledování (doporučená výchozí hodnota je Ti / 10) | ||
Param_DisabledOutputValue | real | Ne | Ne | Hodnota na výstupu pokud je vstup Enable roven false | ||
Param_Kind | Lib.Mervis.v1_0.PidParameterKindType | Ne | Ne | Určuje význam parametrů Xp_KP, Ti_KI a Td_KD | ||
Param_Xp_KP | real | Ne | Ne | Param_Kind = Dependent ⇒ Šířka pásma regulátoru Xp Param_Kind = Independent ⇒ Vlivnost P-složky |
||
Param_Ti_KI | real | Ne | Ne | Param_Kind = Dependent ⇒ Integrační konstanta Ti Param_Kind = Independent ⇒ Vlivnost I-složky |
||
Param_Td_KD | real | Ne | Ne | Param_Kind = Dependent ⇒ Derivační konstanta Td Param_Kind = Independent ⇒ Vlivnost D-složky |
||
Param_DirectActing | bool | Ne | Ne | Určuje směr působení akčního zásahu na základě regulační odchylky (viz podrobný popis funkce) | ||
Limits_Min | real | Ne | Ne | Minimální hodnota výstupu | ||
Limits_Max | real | Ne | Ne | Maximální hodnota výstupu | ||
Time_Sample | time | Ne | Ne | Vzorkovací frekvence výpočtu, určuje jak často dochází k výpočtu akčního zásahu | ||
Time_Travel | time | Ne | Ne | Definuje dobu, za jak dlouho se akční člen přestaví z hodnoty Limits_Min na Limits_Max |
Jméno | Datový typ | Jednotka | Význam |
---|---|---|---|
Output | real | Akční zásah | |
RelativeRateOfChange | real | ||
LowerBoundary | bool | Indikace dosažení spodního limitu akčního zásahu | |
UpperBoundary | bool | Indikace dosažení horního limitu akčního zásahu | |
InvalidParameters | bool | Indikace neplatného nastavení regulátoru | |
Tracking_CalculatedThreshold | real | Přepočtená velikost akčního zásahu pro Tracking_Threshold |
Jméno | Datový typ | Význam |
---|---|---|
Funkční blok neobsahuje žádné interní bloky k použití |
Pro správnou funkci je nutné splnit následující podmínky, jejich nesplnění indikuje výstup InvalidParameters
PID regulátor slouží k řízení lineární soustavy na základě rozdílu žádané hodnoty a skutečné hodnoty, tzv. regulační odchylky (značíme e), výsledkem je akční zásah, který značíme u (v diskrétní podobě je tvar shodný, jen t nahradíme za k).
e(t) = Setpoint - Input
Obecně je diskrétní PID implementován ve formě
u(k) = KP * e + KI * ∑ ei * Δt + KD * (Input(k) - Input(k-1)) / Δt
Tato forma se nazývá „positional form“ a pro použití v PLC je vhodnější ji převést do přírustkového tvaru tedy tzv. „velocity form“, která ve spojité podobě vypadá následovně
du(t) / dt = KP * de(t) / dt + KI * e(t) + KD * d2e(t) / dt2
Pro použití v PLC je nutné ji převést do diskrétní podoby
u(k) = u(k-1) - KP * (Input(k) - Input(k-1)) + KI * e(k) * Δt - KD * (Input(k) - 2 * Input(k-1) - Input(k-2)) / Δt
Toto je již výsledná rovnice pro výpočet akčního zásahu PID regulátoru, v této formě se v P-složce a D-složce nenachází žádaná hodnota, tím je dosaženo potlačení skokových změn akčního zásahu při změnách žádané hodnoty.
Hodnota vstupu Param_DirectActing určuje reakci akčního zásahu na regulační odchylku.
Hodnota vstupu Param_Kind určuje význam ladících parametrů PID regulátorů.
Tento PID regulátor umožňuje provoz v režimu, kdy svým výstupem sleduje hodnotu vstupu Tracking_Value. Chování regulátoru určuje vstup Tracking_Mode