Rozciluje me kdyz vidim vyvetleni PID kontroleru ktere je dle meho nazoru zbytecne slozite se zbytecne komplikovanymi vzorecky. Dokonce mam podezreni, ze se takovato komplikace vysvetleni na CVUT specielne uci.
Moje vysvetleni: PID regulator funguje tak. Mame nejaky chybovy signal napr. odchylku aktualni rychlosti otaceni od pozadnovane rychlosti otaceni. Pak mame nejaky signal co ridime napr. napeti na motoru.
PID regulator funguje tak, ze vememe ten chybovy signal, jeho derivaci a integral. A tyto 3 signaly namichane nejakymi konstantami. Napr. 3x signal + 4x integral -2x derivaci. A to je ten ridici signal.
Ty cisla se nastavi tak, aby se to nerozkmitavalo, reagovalo rychle, neprekmitavalo proste aby to chodilo tak ze se nam to bude libit. Bud se to vyzkousi, nebo jsou na to na webu nejake systematicke algoritmy jak to vyladit.
No jo, jenže jak matematicky zapsat to, jak to popsal Clock, aby každý kdo to chce vědět a použít, nemusel z jeho textu vytvářet vzorec svůj vlastní ? ... No a to je ten vzorec ve článku.
Ano, člověk si musí zvyknout takové vzorce číst a nejančit, ale nakonec je tam jen pár konstant, znaky derivace a integrace a zavedení exponenciální složky.
Ona totiž každá ta složka (proporcionální, intergrační a derivační) mají i nějaké vlastnosti zajímavé pro regulaci, ne že se to zesílí, popř. zintegruje nebo zderivuje, ale např. integrační složka neustále zesiluje a tím přispívá k lepšímu dosažení požadované hodnoty ( narozdíl od proporcionální, která jen zesílí o KONSTANTA krát ), ale také zesiluje šumy, derivační složka zase pomáhá mimo jiné odstraňovat šumy, atd. No a to už tam pisateli Clockovi chybí, ale protože v Teorii automatického řízení je tento vzorec něco jako pro rybáře vědět co je udice, tak se běžně používá. Nakonec se tím opravdu jen proženou čísla.
Můžu kontrolní otázku? Máte veličinu čtenou s proměnlivou frekvencí a naměřil jste tyto hodnoty:
t=0.0s : 10
t=0.1s : 20
t=0.5s : 40
t=0.7s : 10
t=1.0s : 30
Můžete mi říct, jakou hodnotu bude mít integrál tohoto signálu v čase t=1s?
Děkuji, nyní se podíváme, kolik vám toho řeklo Clockovo vysvětlení.
To je pravda. Ale myslím,že když mu někdo řekne integruj a on to "hodí do programu", tak je to pro něj srozumitelnější než se podívat na papír a vidět integrál . . .
Popravdě, ikdyž jsme v matice intergály samozřejmě počítali, i dvojné a trojné, tak když jsem vzorce pro I a D složky viděl prvně, stejně jsem si nedokázal sám z hlavy hned představit průběhy a co to jako dělá ...
Přečetl jsem si pasáž o regulátoru 2x, pro jistotu. Co, prosím vás, říká autor složitě? Vaše jednoduché vysvětlení (cituji) "PID regulator funguje tak, ze vememe ten chybovy signal, jeho derivaci a integral. A tyto 3 signaly namichane nejakymi konstantami." je podle mne složitější, zatímco autorův vzoreček říká přesně totéž, ale jasněji - kdo ví co je integrál a co je derivace, ten vzoreček přečte a rozumí mu. Ostatním neřekne nic ani vzoreček, ani vaše vysvětlení.
Co osobně považuji za problém, že ani vy, ani autor neříkáte, jak ty konstanty nastavit. Pokud na to půjdete tak, jak jste naznačil (opět cituji) "Napr. 3x signal + 4x integral -2x derivaci", tak vám přeji, aby blízko nestálo nějaké dítě, jak o tom píše autor. Zcela jistě budete mít co dělat, abyste uhnul a možná přijdete k pěknému šrámu! Toto nastavení bude na 100% nestabilní a kvadrikoptéra "ustřelí" do boku. A proč? O tom je právě to ČVUT, kde se to učí!
Takže za mne - vysvětlení vzorcem je jasnější. A bez návodu, jak nastavit aspoň zhruba konstanty, je jakýkoli pokus s kvadrikoptérou těžší než pár desítek gramů nebezpečný!
Konstaty budou v dalším článku, já používám (Kp, Ki, Kd): x* 0.2, x* Kp*2, x* Kp/3
kde x nastavím na požadovanou "ostrost" reakcí.
https://en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
To nastavování podle Zieglera-Nicholse je určitě v pořádku ve verzi se zabezpečenou kvadrikoptérou. Vy jste si tím prošel, takže předpokládám, že jste splašeného koně už viděl :-) .
Pokud se týká vašeho kódu, já bych osobně rozhodně ošetřil omezení rozsahu regulace (0-100% buzení motoru) a zcela určitě i nějakou ochranu proti přeintegrování. Zlepší a zrychlí to regulaci v některých situacích a eliminuje řadu možných selhání regulace, zejména při případné akrobacii. Předpokládám ale, že jste něco takového udělal a kód je jen principiální ukázkou řešení. Je samozřejmé, že to bude zase o kus složitější, ale zde rozhodně pro dobrý účel.