Regulátory a regulace

Cílem této kapitoly je podat pokud možno přehledný a srozumitelný výklad principů a algoritmů, které jsou v systému Control Web použity v regulátorech. Nebudou zde jako v referenční příručce popisovány všechny parametry regulátorů, předmětem zájmu budou pouze ty, které mohou ovlivnit vlastní regulační proces. Regulátory poskytují pro modifikace svých parametrů nativní procedury, a ty také budou v následujícím textu v souvislosti s patřičným parametrem regulátoru zmíněny.

PID regulátor

Mechanizmy regulace - klasická řada mimo modifikaci variable

V oblasti regulace různých fyzikálních, chemických i biologických systémů či procesů se situace vyvinula téměř jednoznačně ve prospěch použití spojitých PID regulátorů, které bylo nutné pro použití výpočetní techniky patřičně upravit. V systému Control Web jsou v přístroji pid_regulator použity diskrétní PID regulátory 2. řádu, vycházející z klasické "učebnicové" rovnice spojitého PID regulátoru:

Rovnice 1

Rovnice 1

Po vytknutí r0 dostaneme následující tvar rovnice:

Rovnice 3

Rovnice 3

Tuto spojitou rovnici (3) regulátoru, jejíž Laplaceův přenos je:

Přenos PID regulátoru

Přenos PID regulátoru

je nutné, jak bylo výše uvedeno, pro počítač diskretizovat. Toho se dosáhne nahrazením spojitých operací integrálu a derivace následovně:

Rovnice 4

Rovnice 4

Rovnice 5

Rovnice 5

Diskretizovaný tvar rovnice regulátoru je tedy po dosazení následující:

Rovnice 7

Rovnice 7

Tento vztah je již snadno použitelný, má však jednu podstatnou nevýhodu, pro výpočet regulačního zásahu je nutné znát všechny předchozí hodnoty e(k). Tato nevýhodná vlastnost se dá snadno eliminovat použitím přírůstkového modelu regulátoru, kdy regulační zásah dostane tvar:

Rovnice 8

Rovnice 8

a po dosazení rozdílu u(k+1) - u(k) podle (7) místo

poté tvar:

Rovnice 9

Rovnice 9

Zde je nutné uchovávat v paměti pouze dvě poslední hodnoty e(k) a předchozí hodnotu u(k). Tento vztah pro výpočet regulačního zásahu je použit v přístroji pid_regulator jako typ regulátoru classical.

Při regulaci reálných soustav je běžné, že měřená hodnota regulované veličiny y(t) je zatížena šumem s frekvencí relativně vysokou v porovnání s vlastními kmity soustavy. Při aproximaci derivace první jednoduchou diferencí (5) může nastat situace, kdy jsou regulační zásahy neadekvátně velké. Ukazuje se proto účelným buď použít přesnější aproximace derivace, nebo implementovat do regulátoru filtraci derivačního členu, který by "zákmity" způsobené nepřesnostmi diference eliminoval. Filtrace může mít navíc pozitivní efekt i u soustav, kde je chyba v diferenci nulová, neboť se jejím použitím méně zesilují vyšší frekvenční složky změn sledované veličiny, což může mít kladný vliv na kvalitu regulace. Rovnice takového regulátoru potom je:

Rovnice 10

a jeho Laplaceův přenos je:

Přenos filtrovaného PID regulátoru

V přístroji pid_regulator je tedy pod názvem classicalDelay použita modifikace regulátoru (9) odpovídající (10):

Rovnice 11

Je zřejmé, že je zde poměrnou částí

Rovnice 12

brán regulační zásah o krok zpět a s váhou

Rovnice 13

regulační zásah aktuální. Hodnota filtračního času Tf je počítána z hodnoty Td:

Rovnice 14

kde k je proměnná zjistitelná a nastavitelná nativními procedurami přístroje GetDerivationDelay a SetDerivationDelay. Její počáteční hodnota je 0.2 a z hlediska kvality regulace se doporučuje ji nastavovat v mezích 0.1-0.3.

Vlastní použitý diferenční mechanizmus získaný opět odečtením regulačních zásahů u(k+1) a u(k) je:

Rovnice 15

Rovnice 15

Akční veličina může dosahovat značných amplitud, zejména má-li regulovaná soustava tendenci k náhlým změnám stavů. Jedno z možných omezení výstupu regulátoru bylo nastíněno výše - filtrace derivační složky regulátoru. Další možná úprava základního schématu regulátoru navržená Takahashim spočívá v nahrazení regulačních odchylek pouze hodnotou regulované veličiny mimo integrační člen. Tato modifikace regulátoru je již uvedena bez odvození, ostatně náhrada regulačních odchylek rozdílem hodnot regulované veličiny v porovnání s (9) je více než zřejmá:

Rovnice 16

Tento druh regulačního algoritmu je v přístroji pid_regulator uveden pod typem takahashi.

I u této varianty je dále přítomna obměna s filtrací derivační složky regulátoru, pro transformaci se tedy použijí vztahy (12,13) a postup je shodný s transformací (9) na (11). Výsledný tvar pojmenovaný takahashiDelay je potom následující (porovnejte s (15) a (16)):

Rovnice 17

Podobně jako u varianty classicalDelay je Tf počítáno podle (14) a lze jej nastavovat a zjišťovat pomocí nativních procedur GetDerivationDelay a SetDerivationDelay.

U všech čtyř zmíněných regulátorů je možné pro nastavování a zjišťování parametrů r0, Ti a Td použít nativní procedury SetParameters a GetParameters se třemi parametry.

Pro nastavení hodnoty u(k) je možné použít taktéž u všech uvedených typů regulátorů nativní proceduru SetLastOutputValue.

Regulátor variable

Modifikace regulátoru variable se liší od všech předchozích. Její přenos v z-transformaci je jiný než u předchozích regulátorů:

Rovnice 18

Proto nemají význam klasické parametry r0, Ti, Td, ale parametry q0, q1, q2 a k. Jeho syntéza probíhá kontinuálně podle identifikací získaných parametrů diferenční rovnice regulovaného systému metodou přiřazení pólů. Parametry regulátoru by bylo možné zadávat explicitně, avšak vzhledem k jejich nezřetelnému fyzikálnímu významu by tato vlastnost byla neužitečná. Zpravidla také, pokud je regulovaná soustava známa, je znám její přenos v Laplaceově transformaci, a pro získání parametrů q0, q1, q2 a k by byl nutný převod do z-transformace, což nepatří k běžným znalostem. Z těchto příčin je regulátor přítomen pouze v podobě autoadaptivní.

Jeho vlastnosti (přímo vlastnosti regulátoru, nikoli vlastnosti regulované soustavy) lze ovlivňovat pomocí dvou hodnot - vlastní kruhové frekvence o a koeficientu poměrného tlumení pt. Vlastní kruhová frekvence je parametr ovlivňující strmost odezvy regulátoru na změnu regulované veličiny, jeho hodnota by měla být taková, aby platila nerovnost:

Rovnice 21 (viz oddíl Poznámky k implementaci a použití regulátorů).

Poměrné tlumení posléze ovlivňuje periodičnost chování regulačního pochodu. Nabývá-li hodnoty >=1, bude pochod periodický, s hodnotou <1 bude pochod aperiodický.

Obě hodnoty opt by měly být větší než 0, jinak bude systém regulátoru nestabilní. Z hlediska kvality regulace by součin těchto veličin měl být v rozmezí 0.85-0.95. Pro nastavování a zjišťování parametrů o a pt jsou určeny nativní procedury SetParameters a GetParameters se dvěma parametry.

Automatická identifikace

Účelem identifikace je zjištění parametrů diferenční rovnice regulované soustavy, z nich posléze vypočítat konstanty regulátoru, a ty použít k vlastní regulaci. Identifikace se tak stává mnohdy jediným způsobem, jak zjistit parametry regulované soustavy a jak soustavu účinně regulovat.

Algoritmus identifikace sestává se dvou částí:

Pro zjišťování parametrů soustavy jsou v systému Control Web k dispozici dvě metody:

Tyto identifikační algoritmy lze volit i v průběhu regulace nativní procedurou SetIdentificationType.

Obecně lze říci z experimentálně získaných výsledků, že u soustav, kterým regulátor vyhovuje svou periodou vzorkování se jeví účinnější filtr Refil, zatímco u více disproporčních případů (které by ovšem neměly nastávat) dosahuje větší stability metoda nejmenších čtverců.

Způsob přepočetu koeficientů získaných identifikací na koeficienty regulátoru je definován vybraným typem regulátoru. Regulátor variable má svůj specifický algoritmus přiřazení pólů (viz Regulátor variable, v případě ostatních typů regulátorů je pro přepočet koeficientů zvolena metoda založená na modifikovaném Ziegler-Nicholsově kritériu. Podstatou této metody je výpočetní uvedení regulačního obvodu na mez stability a zjištění kritického zesílení a kritické periody kmitů soustavy. Z těchto dvou hodnot se posléze definitivně odvodí požadované parametry r0, Ti a Td.

Dvoustavový a krokový regulátor

Tyto dva regulátory jsou v principu shodné, soustavu regulují na principu sledování mezí a při jejich překročení aktivují patřičný výstup.

Regulátory mají definováno pásmo necitlivosti - hystereze, ve kterém regulátor nereguluje, a jeho rozsah je určen parametry divergence_plus a divergence_minus. Oba parametry jsou stavitelné a zjistitelné prostřednictvím nativních procedur přístroje GetDivergenceMinus, SetDivergenceMinus pro spodní mez a GetDivergencePlus, SetDivergencePlus pro horní mez. Princip činnosti regulátoru je potom následující:

Dvoustavový regulátor mění svůj výstup jen při přechodu přes vzdálenější z mezí hystereze, nedojde-li tedy v aktuálním časovém kroku k takovému přechodu, regulátor svůj výstup nezmění. Pokud tedy například byla měřená veličina pod spodní mezí, regulátor sepnul, hodnota veličiny začala vzrůstat, překročila spodní mez hystereze, výstup regulátoru zůstal nezměněn, hodnota dále vzrůstala a teprve při překročení horní meze hystereze došlo ke změně stavu výstupu regulátoru na vypnuto.

Krokový regulátor reaguje podobně, přičítací, nebo odečítací vstup je však vždy aktivován jen na dobu do následujícího časového kroku regulátoru. Regulátor tedy vytváří pulsy se šířkou svého časového kroku. V systému Control Web lze efektivně na výstupy regulátoru, bez rizik ztráty pulsu nebo násobného vzetí pulsu v úvahu, reagovat například zařazením regulátoru a objektu (většinou přístroj program) zpracovávajícího jeho výstup za sebe do některého z časovačů. Tím se zajistí, že pouze v identickém časovém kroku bude výstup regulátoru adekvátně zpracován.

Krokový regulátor navíc obsahuje parametr inactive_hit. Parametr určuje počet časových kroků regulátoru, po které nebude žádný z jeho výstupů aktivován. Jinými slovy, od posledního regulačního zásahu po dobu inactive_hit časových kroků bude regulátor v nečinnosti. Parametr je možné modifikovat pomocí nativních procedur GetInactiveHit a SetInactiveHit.

Poznámky k implementaci a použití regulátorů

Tato kapitola je jakýmsi souhrnem zkušeností, doporučení a poznámek pro použití knihovny regulátorů v systému Control Web.

Stávající implementace regulátorů tedy umožňuje například zjištení parametrů regulátoru pro jeho definovaný časový krok a definovanou soustavu. Je třeba použít některou z modifikací v kombinaci se zapnutou identifikací a takto získané parametry je možné přečíst z regulátoru nativní procedurou GetParameters.

Shrnutí