====== Velocity PID varianta C (v1.0) ====== {{:cs:mervis-ide:35-help:lib.mervis.velocitypidc_v1.0.png}} ===== Popis ===== * Úplný název funkčního bloku: Lib.Mervis.v1_0.VelocityPidC * Potřebné reference projektu * Lib.Mervis 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. ===== Použití v ST ===== 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 ===== 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 | [[cs:mervis-ide:35-help:035-software_basic:060-libraries:060-lib-mervis:015-utilities:030-types:pidtrackingtype:v1_0|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 | [[cs:mervis-ide:35-help:035-software_basic:060-libraries:060-lib-mervis:015-utilities:030-types:pidparameterkindtype:v1_0|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 * (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. ==== 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 ===== Verze =====