Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Regulační algoritmu prakticky

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Regulační algoritmu prakticky

Autor: Maaartin

23:41:03 10.12.2010

> [ital] ale kdyz uz mam dostatecne dobry model toho procesu, tak z te vety vypliva, ze by bylo lepsi pouzit neco jineho nez PID. Cimz jste si vyvratil svoji vlatsni argumentaci.[/ital]

Mozna "vypliva" ale urco nevyplyva. Ta veta znamena ze v pripade ze neni model procesu, tak ze je PID nejlepsi. Neznamena ze v pripade ze model procesu mam, tak ze PID neni nejlepsi. Tolik k tematu samovyvraceni. Tohle je taky na wiki:
http://en.wikipedia.org/wiki/Affirming_the_consequent

Dalsi vec je ze regulace je dost slozita zalezistost a ze autor vlakna se v ni viditelne neorientuje. Proto je dulezity, aby to cely nebylo prilis slozity. Takovy PID se vsim vsudy slozity je ale zaklady jsou trivialni, naprogramovat jde trivialne a nastavit jde casto od oka.

Nevim jak slozity je Kalmanuv filter ale za 4 semestry regulace jsme ho nebrali - to by pro zacatecnika mohla byt dostatecna informace.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Kojot

22:21:30 10.12.2010

Ja tu wiki nevytahl, na tu dal odkaz Farao, tak jsem z ni cerpal. Nikde netvrdim, ze se konstatny pro PID nastavuji od oka a ze znalost procesu se nehodi, ale kdyz uz mam dostatecne dobry model toho procesu, tak z te vety vypliva, ze by bylo lepsi pouzit neco jineho nez PID. Cimz jste si vyvratil svoji vlatsni argumentaci.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: StandaM

17:07:00 10.12.2010

Boha jeho s tou wikipedii porad ...

To co citujete jste krapet spatne pochopil. Veta: "PID control is the best controller with no model of the process" neznamena, ze se ten regulator nastavuje jen tak od oka be znalosti procesu (jeho modelu), ale ze ve strukture regulatoru (mysleno cele te regulacni smycky) nikde neni model toho systemu. Tot vse. Existuji totiz i takovy struktury, kde model je.

PID bo jeho diskretni ekvivalent PSD (teda skoro ekvivalent) sice lze nastavit/doladit od oka treba podle tvaru odezvy na rizeni/poruchu (nekdy to staci), ale pokud je alespon trochu mozny identifikovat proces, tak se pouzivaji metody navrhu, kde konstanty PID jednoznacne plynou prave ze znalosti modelu toho procesu.

Tot asi tak vse, at to bytecne nerozpitvavam ...

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Kojot

10:06:40 09.12.2010

Tak si precti ten clanek na wiki. Zadny model se tam nepouziva, pouze vystupni chyba systemu.

V odstavci "Limitations of PID control" je jasne napsano:

"The fundamental difficulty with PID control is that it is a feedback system, with constant parameters, and no direct knowledge of the process, and thus overall performance is reactive and a compromise – while PID control is the best controller with no model of the process,[2] better performance can be obtained by incorporating a model of the process."

Ladeni probiha nastavenim tech konstant bez ohledu na nejaky model procesu, ktery to reguluje.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Maaartin

16:33:07 06.12.2010

> [ital]2Farao: Taky nevím o řídících algoritmech nic, ale zhlédl jsem ten článek na wiki a troufám si tvrdit, že ten PID kontroler je skutečne vhodný pouze pro systémy bez znalosti jejich modelů.[/ital]

No to urcite neeee. PID kontroler je presne to co je vetsinou potreba pro (priblizne) linearni system. A naopak, aby se dal spocitat optimalne tak je potreba ten system znat. Pokud ho neznas, tak by byl nejaky adaptivni regulator lepsi, ale od oka navrzeny PID muze klidne stacit.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Kojot

15:07:07 06.12.2010

2Farao: Taky nevím o řídících algoritmech nic, ale zhlédl jsem ten článek na wiki a troufám si tvrdit, že ten PID kontroler je skutečne vhodný pouze pro systémy bez znalosti jejich modelů. Různé pravděpodobnostní (Bayesovy) filtry, včetně Kalmana, se běžně používají v robotice.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Farao

20:25:30 29.11.2010

Tak kalmanův filtr bych se tazateli poradit neodvážil. Podle dotazu neví o regulaci prakticky nic a navíc kalmanův filtr slouží jako filtr a ne jako řídicí algoritmus.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Kojot

15:45:13 29.11.2010

Z popisu neni jasne o co se jedna, ale podle me by sel pouzit i jednoduchy Kalman.
http://en.wikipedia.org/wiki/Kalman_filter

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: guest-reg

11:53:15 28.11.2010

velmi děkuji všem za užitečné informace,

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: peta1

10:51:38 24.11.2010

Rozkmitani se resi utlumem.
Na pocitani rovnice krivky jsou vzorce fourierrovy transformace.
Na spocitani prolozeni krivky body jsou ruzne statisticke metody, bezierovy krivky? Pouziva to excel.
Na regulaci jsou rovnice, my na to meli predmet automatizace na skole. Zkus google. Vzpominam si na oznaceni PID regulator (integracne-derivacni), viz prispevek Farao.

Nebo pocital prumer nekolika poslednich hodnot ze vstupu a rozdil proti aktualni nastavene hodnote. Kmitani bych resil sledovanim zmen regulace, asi tez prumer. Pokud se vejde do intervalu -10 +10, tak bych dal regulaci 0

vstup_hod
vystup_hod
zmena = 10;
---
if (vstup_hod>vystup_hod)
{regulace = +zmena;}
else
{regulace = -zmena;}
prumer = prumer_regulace()
if (abs(vstup_hod-vystup_hod)<=zmena && prumer>=-zmena && prumer<=+zmena)
{regulace = 0;}
vystup_hod = vystup_hod + regulace;
Cili pokud je absolutni hodnota zmeny velka, tak reguluj, ale pokud neni velka a prumer tech hodnot se jevi jako kmitani, tak prestan regulovat.

//regulace má určité rozmezí
if regulace<0 Then regulace=0;
if regulace>100 Then regulace=100;
Tohle nechapu.

Lepsi bude ale pouzit vzorec pro regulatory, PID.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Farao

10:07:51 23.11.2010

Být tebou tak jako úplně první věc zkusím obyčejný PID regulátor:

http://en.wikipedia.org/wiki/PID_controller

Na konci je diskrétní implementace včetně pseudokódu. Bohužel ve tvaru oblíbeném pro výuku, který ale není moc vhodný pro implementaci. Radši ti tu napíšu verzi používanou pro implementaci a pro kterou je psaný popis metody Ziegler-Nichols viz. odkaz níže.

Výpočet potřebného zásahu je dán následovně (diskrétní verze):

x[k] = xp[k] - xm[k]
u[k] = Kp*x[k] + Ki*suma(x[i],i=1..k)*T + Kd*(x[k]-x[k-1])/T

kde xp je požadovaná hodnota řízené veličiny, xm je měřená hodnota řízené veličiny, T je čas mezi jednotlivými měřeními, k je pořadové číslo měření a Kp, Ki, Kd jsou parametry regulátoru (proporcionální, integrační a derivační zesílení regulátoru).


Pro nastavení parametrů bych použil metodu Ziegler-Nichols:

http://en.wikipedia.org/wiki/Ziegler–Nichols_method

Pokud znáš matematický model toho co řídíš, tak potom můžeš použít složitější metody řízení, ale k tomu je třeba už znát aspoň základy teorie řízení.

Doporučuju půjčit si v knihovně učebnici automatizace. Tam se tyhle základy dozvíš.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Maaartin

15:43:09 22.11.2010

Napsal jsem toho hafo, to nejlepsi na konec, takze muj navrh najdes dole, to predtim neni tak dulezity.

> [ital]Je to funkční, ale nevýhodou je rozkmitání regulace, protože sledovanou veličinu v daném případě nelze měřit častěji než jednou za minutu a veličina se mění rychle.[/ital]

Nepouzival bych nelinearni regulator, ten udela z toho vseho nelinearni system a paxe uz nelze divit nicemu.

Tohle
> [ital]if hodnota>hranice then regulace=-10 else regulace=+10;[/ital]
je nelinearni, je to tak trochu regulace stylem brzda-plyn, zatimco tohle
regulace -= coef * (hodnota-hranice)
je linearni. Ale jaxem psal je to I-regulator, zacal bych P-regulatorem
regulace = 50 - coef * (hodnota-hranice)

Tech 50 je tam aby to melo naky smysl, normalne se reguluje hodnotama okolo 0, pricemz 0 znamena nijak na system nepusobit.

Aby to bylo stabilni nesmi byt coef prilis velky - to plati obecne, cim silneji regulujes, tim hur pro stabilitu. Tohle nedotahne odchylku presne do nuly, ale pro rozumny hodnoty coef to bude hezky stabilni.

Zkusil bych tohle

diff = hodnota-hranice;
sumdiff += diff;
regulace = 50 - (a * diff + b * sumdiff);

pro maly a, b > 0. V tomhle a urcuje jak to reaguje na okamzitou chybu a b urcuje reakci na dlouhodobou chybu. Samozrejme vse zalezi na tom jaky hodnoty nabyva merena velicina, poud jsou to miliony, tak musi byt koeficienty odpovidajicne maly. Zacal bych takovyma aby regulace skakala jen o jednotky.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: tcesky

15:02:34 22.11.2010

[ital]Je to funkční, ale nevýhodou je rozkmitání regulace, protože sledovanou veličinu v daném případě nelze měřit častěji než jednou za minutu a veličina se mění rychle. [/ital]
Kazdou minutu spocitat prumer za minulou hodinu (tyden, kvartal, desetileti) a regulaci ridit odchylkou prumeru od cilove hodnoty. Snazivec muze jeste ten prumer vazit starim vzorku.

Zdravim
TC

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: reg-guest

14:44:41 22.11.2010

děkuji, zkusím nastínit moji regulovanou soustavu. Sledovaná veličina se měří jednou za minutu a zároveň se počítá regulace, velmi jednoduše takto:

if hodnota>hranice then regulace=-10 else regulace=+10;
//regulace má určité rozmezí
if regulace<0 Then regulace=0;
if regulace>100 Then regulace=100;

Je to funkční, ale nevýhodou je rozkmitání regulace, protože sledovanou veličinu v daném případě nelze měřit častěji než jednou za minutu a veličina se mění rychle.

V grafu, kde mám záznam regulace jsou v případě aktivní regulace "zuby" - velké skoky v regulaci, Chtěl bych to regulovat nějak plynule (prediktivně, fuzzy?).

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: Maaartin

11:45:57 17.11.2010

No, regulovat to bude ale urco ne moc hezky. Nejen ze ti to vytizi procak na 100% ale rychlost regulace a tim i stabilita systemu bude dana rychlosti tvyho compu. Navic regulator je nelinearni coz je dost velka komplikace. Samozrejme, topeni tim uridis (to zvlada dokonce i fuzzy regulator), ale neco slozitejsiho bych s tim radsi nedelal.

double trg = 0;
double coef = 0.1;
for(;;) {
waitUntilNextPeriodStarts();
double val = GetData();
trg += val * coef;
}

Tohle je zhruba integracni regulator, nic moc pro rychlost a stabilitu, zato dokaze odchylku za predpokladu neexistence casove zaviskych vnejsich vlivu dohnat do nuly. Spis bych zkusil

trg = val * coef;

coz je proportionalni regulator. My jsme se ucili mj. PID, coz spojuje tyhle dva a navic ma diferentialni clen ktery zpusobuje rychlou reakci.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: guest-reg

8:43:39 17.11.2010

děkuji, to vypadá jednoduše. Pokusím se to aplikovat na můj případ a potom se ještě asi budu ptát dále.

Citovat příspěvek

 

Re: Regulační algoritmu prakticky

Autor: tcesky

15:12:09 16.11.2010

[code]
double trg=0;
double step=0.1;
for(;;)
{ double val=GetData();
if(val > trg)trg+=step;
else if(val < trg)trg-=step;
}
[/code]
[size=10px]Designed for "uvadeni kodu bez jakehokoliv vysvetleni, ktere mozna pomuze v dany okamzik, ale nic nevyresi do budoucna a takovy clovek se stejne nestane vyvojarem a na slozitejsi otazky uz nedojde"[/size]
Zdravím

[color=#808080]
Nejezte žlutý sníh
________________________________________________
Dobře se pobavíte a od srdce zasmějete na stránkách
http://www.4itdevelopers.net/faq_at_builder.aspx

[/color]

Citovat příspěvek

 

Regulační algoritmu prakticky

Autor: guest-reg

15:06:07 16.11.2010

Zdravím vás,
hledám regulační algoritmus pro plynulou regulaci veličiny v závislosti na měřené vstupní hodnotě a zadaných mezních hodnot.
Pomocí google jsem našel řadu vývojových diagramů a matematických rovnic, v tom se bohužel neorientuji. Nemáte prosím někdo odkaz na informační zdroje s nějakým vzorem zdrojového kódu ve vyšším programovacím jazyku (pascal, basic, c)?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: