Velocity PID varianta A (v1.0)
Popis
- Úplný název funkčního bloku: Lib.Mervis.v1_0.VelocityPidA
- Potřebné reference projektu
- Lib.Mervis
Blok realizuje PID regulátor v tzv. „velocity“ tvaru. Jedná se o základní variantu této formy.
Použití v ST
program test var pid: lib.mervis.v1_0.VelocityPidA; end_var pid(Setpoint := ..., Input := ..., Param_Xp_Kp := 30, Param_Ti_Ki := 120, Param_Kind := Dependent); hw.AO1 := pid.Output; end_program
Vstupy
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 |
Výstupy
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 |
Bloky
Jméno | Datový typ | Význam |
---|---|---|
Funkční blok neobsahuje žádné interní bloky k použití |
Podrobný popis funkce
Kontrola parametrů
Pro správnou funkci je nutné splnit následující podmínky, jejich nesplnění indikuje výstup InvalidParameters
- Param_Kind = Dependent
- Limits_Max > Limits_Min
- Param_Xp_KP > 0
- Param_Ti_KI > 0
- Tracking_TimeConstant > t#0s
- Param_Kind = Independent
- Limits_Max > Limits_Min
- Tracking_TimeConstant > t#0s
Výpočet akčního zásahu
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 * (e(k) - e(k-1)) + KI * e(k) * Δt - KD * (e(k) - 2 * e(k-1) - e(k-2)) / Δt
Toto je již výsledná rovnice pro výpočet akčního zásahu PID regulátoru.
Reverse / Direct acting
Hodnota vstupu Param_DirectActing určuje reakci akčního zásahu na regulační odchylku.
- Pokud je false (tedy PID je typu „reverse acting“)
- Regulační odchylka rostoucí do kladných hodnot (tedy skutečná hodnota klesá pod žádanou hodnotu) způsobí rostoucí akční zásah
- Vhodné využití je např. pro regulaci ohřevu
- Pokud je true (tedy PID je typu „direct acting“)
- Regulační odchylka rostoucí do záporných hodnot (tedy skutečná hodnota roste nad žádanou hodnotu) způsobí rostoucí akční zásah
- Vhodné využití je např. pro regulaci chlazení
Dependent / Independent forma parametrů
Hodnota vstupu Param_Kind určuje význam ladících parametrů PID regulátorů.
- Dependent (závislá)
- Forma častější pro TZB, parametry regulátoru jsou definovány parametry Xp, Ti a Td
- Xp = šířka pásma
- Ti = integrační časová konstanta. Jedná se o čas, za jaký I-složka dosáhne stejné hodnoty jako P-složka pro konstatní žádanou a skutečnou hodnotu.
- Td = derivační časová konstanta
- Tuto formu lze převést na nezávislou
- KP = Xp
- KI = Xp / Ti
- KD = Td * Xp
- Zde je vidět proč se formě říká závislá, vlivnost I-složky a D-složky totiž závisí na nastavené vlivnosti P-složky
- Independent
- Forma umožňující přesné naladění vlivnosti P, I a D-složky na akční zásah. Umožňuje tím realizaci regulátorů, které v závislé formě nelze parametrovat např.
- I regulátor (Xp nemůže být nulové)
- D regulátor (Xp nemůže být nulové)
- PD regulátor (Ti nemůže být nulové)
- Tuto formu nelze vždy převést na závislou
Funkce sledování hodnoty
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
- Disabled ⇒ PID regulátor přímo vypočítává hodnotu akčního zásahu, žádnáfunkce sledování se neprovádí
- Leader ⇒ akitvní režim sledování, PID regulátor vypočítává hodnotu akčního zásahu
- Following ⇒ aktivní režim sledování, PID regulátor sleduje hodnotu vstupu Tracking_Value