# 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

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.

### 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ů:

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.

## 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í:

- zjištění parametrů soustavy
- přepočet těchto koeficientů na koeficienty regulátoru

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

- průběžné sledování parametrů iterativní metodou nejmenších čtverců se selektivním potlačováním staré informace (lit: Kulhavý R., Bulletin Inorga, 1985, č.6, s. 289-292)
- číslicová odmocninová filtrace pomocí filtru Refil (vyvinuto v ČSAV, lit: Soukup J., Identifikace soustav, SNTL 1990, 1. vydání, s. 116-128)

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

- pohybuje-li se regulovaná veličina v pásmu hystereze, není na výstup nastavován žádný regulační zásah v případě krokového regulátoru, nebo ja na výstup nastaven poslední stav u dvoustavového regulátoru.
- překračuje-li měřená veličina mez hystereze (tzn. je-li větší), nastaví krokový regulátor přičítací výstup na hodnotu vypnuto a odečítací výstup na hodnotu sepnuto, dvoustavový regulátor nastaví svůj výstup na vypnuto.
- nedosahuje-li měřená veličina spodní meze hystereze aktivuje krokový regulátor přičítací výstup a odečítací výstup deaktivuje, dvoustavový regulátor nastaví svůj výstup na sepnuto.

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.

- Tv - perioda vzorkování regulátorů. Tato hodnota je v ideálním případě rovna časovému kroku regulátoru. Obecně však lze říci, že z důvodů práce více paralelních procesů v systému Control Web je tato perioda u malých časových kroků (cca <0.3 s) variabilní. U delších časových kroků je tato perioda izochronní.
- časový krok regulátoru by měl odpovídat charakteru regulované soustavy. V případě volby kroku relativně krátkého dojde k rozkmitání regulátoru, neboť z jeho hlediska (regulátoru) soustava na výstupní signály nereaguje. Tento fakt se může nepříznivě projevovat i u identifikace soustavy, která nakonec může usoudit, že soustava na regulačních zásahy nereaguje a chybně určí její parametry, což může vést ke ztrátě kontroly nad regulačním procesem. Obecně lze říci, že časový krok menší než 0.1 s může způsobit nekorektní funkci identifikace i regulace, protože dochází ke značným zkreslením časových intervalů.

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.

- všechna nasazení regulátoru a použitá nastavení jeho parametrů je nutné experimentálně ověřit i v mezních podmínkách, aby se předešlo "překvapením" v situacích, kdy se soustava do takového stavu dostane.
- identifikace v přístroji pid_regulator probíhá kontinuálně, nikoli však neustále. Pro větší bezpečnost regulace je do algoritmu implementován omezený počet kroků pro identifikaci. Od zahájení identifikace se tato provádí během 20 následujících časových kroků. Po jejich uplynutí se provede test na konvergenci parametrů a dopadne-li tento test úspěšně, identifikace se ukončí. Její případné opětovné zapnutí se provede buď v okamžiku, kdy se dva po sobě následující regulační zásahy liší o více než 0.05-násobek rozsahu regulačního zásahu, nebo v okamžiku, kdy se dvě po sobě následující hodnoty regulované veličiny liší o více než 0.1-násobek rozsahu regulované veličiny. Identifikaci lze explicitně zapnout voláním nativní procedury RunIdentification a explicitně vypnout pomocí procedury StopIdentification. Zavolání této procedury způsobí momentální vypnutí identifikace, metoda však nezajistí, aby se v následujícím časovém kroku pomocí výše popsaných mechanizmů opět automaticky nezapnula. (také viz další bod) Jestli se momentálně identifikuje je možné zjistit metodou IsIdentificationRunning.
- regulátor obsahuje další dvě nativní procedury pro řízení identifikace - GetAdaptive a SetAdaptive. Tyto procedury slouží ke zjištění a nastavení autoadaptivní identifikace. Je tak možné regulátor donutit (zavoláním SetAdaptive s parametrem false) přestat s identifikací a používat naposledy zjištěné parametry r0, Ti a Td. V takovém případě ztrácejí smysl procedury RunIdentification a StopIdentification a jejich zavolání způsobí chybu běhu aplikace. Samozřejmě je možné také opětovně autoadaptivitu procedurou SetAdaptive zapnout.
- kromě toho má regulátor k dispozici nativní procedury SetRegulatorType a GetRegulatorType, pomocí nichž lze za běhu měnit regulační mechanizmy.
- regulátory variable a ostatní se mezi sebou natolik liší, že zpřístupňují rozdílné nativní procedury. Provede-li se pokus zavolat momentálně neexistující nativní proceduru, nahlásí se chyba překladu aplikace a tu se tedy nepodaří ani spustit.
- z textu zatím jasně nevyplývá, že je možné použít celkem čtyři varianty PID regulátorů buď s fixními parametry nebo parametry určenými autoadaptivně. Celkem se tak zvětšil počet regulátorů z původních 3 na 9.
- v systému Control Panel do verse 2.18 existovaly varianty regulátorů, které nyní odpovídají následujícím kombinacím:

- quick (v.1) - adaptive classical, identifikace nejm. čtverce
- quick (v.2) - adaptive takahashi, identifikace nejm. čtverce
- unoscillate (v.1) - adaptive takahashi, identifikace nejm. čtverce
- quick3 (v.1) - adaptive takahashi, identifikace nejm. čtverce
- variable (v.1,2) - variable, identifikace nejm. čtverce
- classical (v.1,2) - classical

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í

- Control Web nabízí pro regulaci dvě třídy regulátorů — spojité (PID) a diskrétní (dvoustavý a krokový regulátor).
- PID regulátor dokáže pracovat několika způsoby, což umožňuje vybrat pro konkrétní použití nejlepší variantu.
- PID regulátor dokáže zjišťovat parametry regulovaných soustav — podporuje automatickou identifikaci. V hotové provozní aplikaci by se automatická identifikace neměla používat, neboť potenciálně hrozí výpočetní nestabilita identifikačního algoritmu, což by mohlo narušit regulační proces.