Tragedie! Ze tomu autor nerozumi, by se dalo snest za predpokladu, ze by se aspon poucil z komentaru k predchozimu dilu, kde mu dokonce dva ctenari radili aspon tu nejzakladnejsi vec z SW implementace PIDu a sice antiwindup. Radit lidem stavet si vrtulnicky s regulatorem bez antiwindupu je fakt prasarna.
Typická vlastnost čecháčků - být chytrý a naprázdno mudrovat. Opakuji - napiš lepší seriál, nebo napiš lepší popis toho, co bylo v článku sem do diskuse. Máš na to? Napiš! Nemáš na to? Tak drž pysk!
Btw. regulace, jakožto část oboru automatizace v průmyslu, je na VŠ v teoretickém základu na 1 semestr (s tím, že se předpokládá doplňková znalost z matiky). Autor zde popisuje něco, co není až tak úplně triviální, všem. Od géniům až po lopaty. Snaží se o to, aby to pochopil opravdu každý. Rozumný génius promine autorovi určitou laickost, za to, že je to i pro lopaty. Jen debil může napsat to, co je v kořenu tohoto vlákna...
Trochu taktu k autorovi článku, co? Tlučhubové.
Co povazuju za nejhrubejsi chybu, napsali uz dva komentatori pod minulym clankem a ja jsem na to, vcetne klicoveho slova, ktere samo o sobe k dohledani behem par minut staci, odkazal.
Autor popisuje skutecne neco, co neni az tak uplne trivialni. Zda to vic vysvetluje, nebo zamlzuje, o tom si myslim svoje, ale to jsem, jak sis asi nevsiml, vubec nekomentoval.
Takze, az budete delat jakejkoli regulator s integracni slozkou, dejte si tam antiwindup.
Nemusis pisat clanok - stacilo by, keby si napisal, co presne v clanku chyba. Nie iba jedno klucove slovo (aj ked to si moze kazdy najst).
O tom, ze je treba antiwindup a aky ma vyznam, to je vsetko "niekde na internete". Je na to par desiatok paperov, ako presne to robit a kazdy ma svoje vyhody a aj nevyhody. Ako by si to teda robil ty?
Uznavam, antiwindupu je cela rada. Uplne nejjednodussi pro pripad s I, PI ci PID regulatorem je:
a) implementovat D, P, I slozky jako D^2 (druha diference), D, P a do serie dat integrator, jehoz hodnota bude ifelsem omezena tak, aby nikdy nepresahla omezeni akcniho zasahu (tj. mam-li vystup -0.3...+1.0, tak hodnota tohoto integratoru v kaskade s (D^2,D,P) nesmi pretect z techto mezi);
b) ignorovat prispevky D a P slozky a implementovat omezeni integratoru samotneho ifelsem jako v bode (a).
Oba se chovaji nepatrne odlisne, ale pro danou aplikaci jsou rozdily zanedbatelne. Jsou i vymakanejsi antiwindupy, za jednoduchej a pomerne solidni povazuju ten, kde je regulator rozdelen na pozorovatele (vc. pozorovatele integralni chyby na vstupu) a regulator a ten pozorovatel je krmen skutecnym stavem limitujiciho akcniho clenu. (To jsem posledne pouzil v termostatu, kterej taha jen do plusu [spodni mez = 0, chladit neumi], fungovalo to hezky.)
Ale jo, byl. V oblasti mimo saturaci je to uplne shodny system. Nicmene v oblasti se saturaci se chovani obou reseni uz lisi. (a) jsem rikal "opatrnej antiwindup", (b) jsem rikal "vidlackej antiwindup". Opatrnej ma nevyhodu, ze je citlivejsi na sum mereni. Vidlackej ma nevyhodu, ze si nekdy trochu nawindupuje do zasoby. Zase hodne zalezi na pomeru koeficientu P,I,D. Vidlackej je primou obdobou nekterejch analogovejch reseni, takze vetsinou nejak fungovat bude.
V soucasnosti mi nejspravnejsi a zaroven (relativne) jednoduchej pripada ten pozorovatel, do nehoz vstupuje uz saturaci omezena akce. Nicmene jo, je i spousta jinejch pristupu, napr. Aastroem&Wittenmark zminuji krome pozorovatele systemu mit jeste zvlast pozorovatele saturace s vlastni dynamikou. (Jestli je to k necemu dobry, si dodnes nejsem uplne jist; kazdopadne je to slozitejsi.)
1.) Za článek, ve kterém bude úplně všechno a ještě vám k tomu udělám i pěkné obrázky a video, mi pošlete cca 1200,- na můj účet a já si s tím na pár hodin vyhraju. Pokud ne, spokojte se s tím, že to tady bude prostě rozdělené do více článků.
2.) Anti-wind up není tajná templářská funkcionalita, kterou jsem nezmínil, ale nutnost vyplývající už z průběhu testování. V momentě, kdy ve stojanu na 10% výkon motorů naroste výkon jednoho motoru na 100% a druhý se úplně zastaví, musí každého, kdo se rozhodne si psát algoritmus pro kvadrokoptéru, napadnout, že si tam musí dát limity pro nárust integrační složky.
Pro uplnost: mne vubec nevadi, ze je clanek rozdelen do vice dilu, at jich je klidne sto. Pan Tisnovsky ma taky mnohadilne serialy a jsou bezva. Vychazim z prohlaseni "V minulém díle jsem začal PID regulátor a v tomto díle jej dokončím.". Proti dokoncenosti tohoto PIDu jsem se ohradil. Ze se da regulator nebo treba metoda jeho nastaveni rozpracovat z embrya v skutecne dilo, o tom vubec mluvit nechci, slo mi o naprosto zasadni NEFUNKCNOST toho pahylu, ktery sem byl hozen zajemcum.
Kolik inkasujete za clanek je asi jedno, predpokladam, ze jakakoli myslitelna sazba zde je nepatrny zlomek motivace, takze to asi delate z radosti nebo zajmu o vec.
Podivejte, ja naprosto chapu a v jednom kuse zazivam ten slastny pocit, kdyz clovek stoji na prahu pro nej noveho oboru, sklidi prvni dilci uspechy s radosti z objevovani a se stestim zacatecnika. A pak je teprv treba 20x znovuobjevit kolo, 50x si rozbit hubu a dostudovat dost materialu, nez zacnou mit vysledky nejakou uroven. Nemyslete si, sam jsem v presne teto situaci v nekolika oborech, takze se dokazu vcitit.
V ruznych ustavech se pohybuji, z jednoho jsem pred lety utekl dokonce oknem, jestli vas to potesi (EGU Bechovice).
Kdo rika? No pripada mi, ze vas kod. K pododpovedi nize: testovani samotne nemusi plnou tragiku windupu odhalit hned, hodne taky zalezi na pocatecnim nastaveni I. Muze to dlouho zdanlive dobre fungovat.
Tak se tady prosimvas nehadejte.
Uz v minule diskuzi autor potvrdil, ze vi, co je antiwindup a ze ve skutecnem SW to nejspis ma.
Kdyz na to prijde, tak na nasi skole teorie okolo PID regulace zabrala i vice semestru, takze popsat to srozumitelne v jednom clanku je temer nadlidsky pedagogicky ukol.
Stejne v praxi po stovkach (nekecam) serizenych jednoduchych (lepsi zakazky jsem nemel) PIDech dojdete k nasledujicimu:
* P slozku zhruba nastrelite od oka podle toho, jak velke regulacni odchylce "e" ma prisluset jak velky regulacni zasah "u". Radsi vzit jen polovinu.
* I slozku strelite od oka podle toho, o jak rychly dej se jedna. Vetsina PIDu totiz pouziva torchu jiny vzorec nez "u = P*e + I*sum(e) + D*diff(e)" a umoznuje zadavat I slozku jako cas v sekundach. Radsi nastavit trochu pomalejsi.
* Na D slozku se vykaslete, protoze s vypoctem derivace jsou jenom starosti a jeste pred tim musite mereny signal vhodne filtrovat. Spocital bych na prstech jedne ruky, kolikrat jsem ji pouzil.
* No a pak to trochu poladite podle toho, jak to je pomale nebo naopak, jak to kmita. Zde to vyzaduje trochu citu, jestli spis upravit P slozku nebo spis I slozku. Ale to uz je holt tech nekolik semestru, semestralek, nakoukanych prubehu, regulatoru serizenych v praxi...
* Ale stejne nejvetsi luxus je, kdyz si muzete dovolit zmerit odezvu systemu na skok akcni veliciny. Hned mate lepsi predstavu o tom, jaky system se vlastne snazite regulovat.
K samotnemu Ziegleru a Nicholsovi zajimavost ze skoly: Jejich puvodni vzorec pry slouzil k nastaveni konstant regulatoru u kulometu (na vrtulniku?), tim padem byla dulezitejsi rychlost reakce nez pripadne prekmity. Anglicke slovo "overshoot" v tomto pripade dostava dalsi zajimavy vyznam. :)
Z praktickeho pohledu pro velkou cast systemu velmi vystizne. K D slozce: jasne, pokud se nezenu za optimalitou a pokud system sam nema velke fazove zpozdeni, pak je PI velka pohoda. Ale jsou situace, kdy to PI nemuze zvladnout. (Jsou situace, kdy to ani PID nemuze zvladnout.) K identifikaci odezvou na skok: lidi, kteri jsou ze skoku schopni system identifikovat, je opravdu malinko. Nehovorime-li o specialnim pripadu systemu, kde se da pouzit treba Strejcova metoda. Uz min lidi (potazmo algoritmu) zkazi identifikaci pseudonahodnou binarni posloupnosti. Nebo rozmitanym sinem, ale ten je oproti bin. sumu dost nepraktickej.
Bez te derivačná složky se regulace náklonu v kvadrokoptéře neobejde, s ní to reaguje ostře jako žiletka, bez ní je to moc pomalé, překmitává to atd., ani ty oscilace nejsou tak strašné, když se to s ní nepřežene.
Horší už to pak je u stabilizaci výšky, barometr měří s dost velkou odchylkou, takže tam i velmi malá Kd způsobí že se kvadrokoptéra roztřese a spadne. Jenže bez ní to taky nejde, i když se Ki nastaví na malou hodnotu, kvadrokoptéra která je pod cílenou letovou hladinou nejprve nedělá nic, pak začne pomalu stoupat, pak enormně zrychlí, přeletí výškovou hladinu a začne zase padat. Chtělo by to výstup z barometru řádně filtrovat aby se dala použít i D-složka, ale to jsem už netestoval.
Hmmm, taky mě zarazilo to prohlášení výše, že regulace PID je otázkou tak semestru. Na střední možná. Na VŠ, míval jsem občas pocit, že by se na otázce teorie regulace P, PI, PID a PIDi dala udělat i celoživotní kariéra. A imoloementace, to je další otázka.
Každopádně se robotron velmi nevybíravě, a podle mne zbytečně, navalil do autora článku, jen kvůli antiwindupu. Jestli ho tam nakonec dá, nebo ne, nevím, ale tak snad na nadávky to není ani v jednom případě. Tak jak se vyjádřil, se něčí práce rozhodně nepřipomínkuje.