Velocity PID varianta C (v1.0)

  • Ú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.

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

  • 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

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.

  • 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í

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

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
  • © Energocentrum Plus, s.r.o. 2017 - 2025