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.
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
kde: je regulační
odchylka;
požadovaná
hodnota a
je skutečná
hodnota měřené veličiny
Po vytknutí r0 dostaneme následující tvar rovnice:
Rovnice 3
kde:
em(r0) je zesílení,
Ti integrační a
Td
derivační časová konstanta regulátoru.
Tuto spojitou rovnici (3) regulátoru, jejíž Laplaceův přenos je:
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 5
kde: Tv je perioda vzorkování, pro niž platí
Diskretizovaný tvar rovnice regulátoru je tedy po dosazení následující:
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
a po dosazení rozdílu u(k+1) - u(k) podle (7) místo
poté tvar:
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:
a jeho Laplaceův přenos je:
V přístroji pid_regulator je tedy pod názvem classicalDelay použita modifikace regulátoru (9) odpovídající (10):
Je zřejmé, že je zde poměrnou částí
brán regulační zásah o krok zpět a s váhou
regulační zásah aktuální. Hodnota filtračního času Tf je počítána z hodnoty Td:
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
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á:
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)):
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.
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ů:
kde:
a
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:
(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 o i pt 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.
Úč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.
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.
Tato kapitola je jakýmsi souhrnem zkušeností, doporučení a poznámek pro použití knihovny regulátorů v systému Control Web.
Celý problém se dá vyjádřit také jinak, veškeré mechanizmy a algoritmy regulací jsou odvozeny pro stav blízký rovnovážnému stavu, neboť jiné stavy zpravidla nepřipouštějí numericky stabilní řešení. Proces regulace a identifikace tedy musí být pro správnou funkci konvergentní. Toleranční pásmo konvergence algoritmů je poměrně široké, není však možné, aby ve všech případech (zvláště jsou-li požadavky či parametry kontroverzní) vedly ke správnému výsledku. Nelze například zajistit, aby se dařilo identifikovat a regulovat soustavu s jednotkovým zesílením na hodnotu 1, je-li výstup regulátoru definován v rozmezí -100 až 100.
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.