Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

PID regulace
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: čt říjen 10 2013, 14:24    Předmět: PID regulace Citovat

Ahoj,
navrhuji PID regulátor teploty vody. Buď přidá teplou nebo chladnou a tak nastaví správnou hodnotu na výstupu s čidlem. Program pro řízení je takovýto:

kód:

Ek = zadana - skutecna;               //výpočet chyby
sum = sum + Ek;
Pk = Kp * Ek;                              //např 8 * chyba
Ik = (Ki) * (sum);                        //vypocet integracni slozky
Dk = Kd * ((Ek) - (Ekp));             //vypocet derivacni slozky
Uk = (Pk + Ik + Dk);  //vysledna regulace

Ekp = Ek;                                    //ulozeni
Ek = 0;


pohon pro regulaci má konstatntní rychlost přetáčení. Zatím si to zkouším s potenciometrem místo senzoru. K konstanty se snažím nějak vhodně nastavit, ale steně výsledná hodnota (Uk) regulace má určité překmity. Když se totiž hodnota skutečná blíží reálné, při změně i o pouhý stupeň okamžitě na chvilku vyskočí složka derivační a změní smysl otáčení. Hned potom se zase hodnota vrátí k původní a otáčí správně. Jde mi o to, jestli je to normální chování, či něco nastavuji špatně. Do oscilace se to podle mě nedostane. Regulátor zasahuje po 1sec. Jde mi o to, jestli ty překmity mám řešit v konstanách PID, anebo dalším kódem. Je takové zvláštní, že by to chtělo otáčet jako že přidávat studenou a pak na vteřinu zase přidalo teplou a hned zase přidávalo studenou atd. do požadované teploty.

Je mi jasné, že v zapojení s vodou se konstanty změní, jde mi spíš o ty překmity.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zmije



Založen: Jun 30, 2005
Příspěvky: 1576
Bydliště: Pardubický kraj

PříspěvekZaslal: pá říjen 11 2013, 9:26    Předmět: Citovat

Neměla by se ta derivace filtrovat?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: pá říjen 11 2013, 10:09    Předmět: Citovat

filtrovat jak? ale pomohlo by to, to ano.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cust



Založen: Jan 17, 2007
Příspěvky: 6632
Bydliště: Milotice u Kyjova

PříspěvekZaslal: pá říjen 11 2013, 10:19    Předmět: Citovat

No, ono by to chtělo udělat model toho co chceš regulovat a pak spočítat konstanty regulátoru.
Každopádně sniž Kd klidně na nulu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: pá říjen 11 2013, 10:40    Předmět: Citovat

V tom případě už je to jen P kontroler Smile I složka je mi zde k ničemu, protože rychlost otáčení neovlivním. Derivační jsem tam chtěl mít z toho důvodu, protože při otáčení ventil přestřelí teplotu, je zde určité dopravní zpoždění.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cust



Založen: Jan 17, 2007
Příspěvky: 6632
Bydliště: Milotice u Kyjova

PříspěvekZaslal: pá říjen 11 2013, 11:02    Předmět: Citovat

I složku potřebuješ, ta ti dělá nenulovou reg. odchylku!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Cust



Založen: Jan 17, 2007
Příspěvky: 6632
Bydliště: Milotice u Kyjova

PříspěvekZaslal: pá říjen 11 2013, 12:43    Předmět: Citovat

Tak jsem si to pořádně přečetl ještě jednou. Rychlost otvírání a zavírání teplé/studené vody nemůžeš změnit. Zavírání a otvírání provádíš jednou za vteřinu. Je to tak? Pokud ano, nechápu, proč tam navrhuješ PID. Každopádně bych udělal třístavový regulátor, který bude dávat signál otáčení doleva, do prava, nebo off. Nic lepšího v takovém uspořádání stejně nezmůžeš.

Ani nechápu jak to, že ti mění derivační složka směr při změně žádané hodnoty. To není vlastnost regulátoru. Je to tím, že tam máš něco špatně a není to v kódu, který jsi zveřejnil.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: pá říjen 11 2013, 13:09    Předmět: Citovat

Derivační složku tam chci použít pro to, že chci, aby to kousek před žádanou hodnotou už zastavovalo. protože jakmile to bude řídit absolutně, tak zase ta teplá voda ohřeje víc tu studenou a je to naprd teplota stoupne a zase to bude regulovat. tak že se to neustálí. jinak propočet je po jedné sekundě, řízení funguje v závislosti na odchylce. možná, kdyby byl krok třeba 2 sekundy a pak čekal, co se stane a přidal, a zase a zase, ale tím se ta regulace dost zpomalí.

zadana = 40 skutecna = 41 Ekp (předchozí teplota 42) = -1
derivační složka mění směr, když je Kp = 1 a rozdíl -1 st. tak Pk = -1 ale v případě Kd = 20 * ((-1)-(-1)) = 20 výsledné Uk = 19. jakmile teplota zůstane na těch 41 st. výsledek bude -1. Takže v mé případě se přepíná směr otáčení.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cust



Založen: Jan 17, 2007
Příspěvky: 6632
Bydliště: Milotice u Kyjova

PříspěvekZaslal: pá říjen 11 2013, 14:58    Předmět: Citovat

Derivační složka ti zrychluje odezvu a ne zpomaluje. To co chceš ti dělá integrační složka. Zmenši zesílení derivační složka na minimum. Nejlépe na nulu. Máš tam dopravní zpoždění jako blázen a derivační složku to samé -> cesta do pekel. Kd dej rovno nule a zkus funkci.
Nejlépe ale uděláš, když si nejdříve sestavíš model a pak navrhneš optimální regulátor - pak si s ním už laboruj.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3698
Bydliště: Praha

PříspěvekZaslal: pá říjen 11 2013, 15:54    Předmět: Citovat

Ještě si uvědomte, že integrační i derivační složka je závislá na periodě, s jakou se to vzorkuje. Integrační konstanta se zvyšováním vzorkovacího kmitočtu zvyšuje a derivační snižuje. Pokud se akce opakuje 1x/s, tak je derivační složka značná, protože za 1 s se stane velká změna, kterou pak vynásobíte ještě Kd.

Jinak souhlas s Cust, derivační složka obvykle přináší do systému víc neklidu než užitku. Abyste derivační složku slušně uplatnil musíte vzorkovat řádově rychleji, než jsou časové konstanty. Nulovou odchylku vám zajistí astatismus - integrační složka, protože pořád sčítá (sebemenší) odchylku a použije ji na doregulování.

Pokud trváte na dané periodě vzorkování, tak nedělejte PID, ale skutečný číslicový regulační algoritmus. Viz například klasická publikace:

Vavřín, Zelina: Automatické řízení počítačem. SNTL, 1982
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: po říjen 14 2013, 7:15    Předmět: Citovat

děkuji za odpovědi, přemýšlel jsem o tom, zkusím tedy použít proporcionální jen složku a prodloužit vzorkovací frekvenci. pohraji si s tím a pak napíšu, jak jsem dopadl.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cust



Založen: Jan 17, 2007
Příspěvky: 6632
Bydliště: Milotice u Kyjova

PříspěvekZaslal: út říjen 15 2013, 8:35    Předmět: Citovat

Nejsem si zcela jist co to je prodloužit frekvenci, ale obecně se dá říct, že čím vyšší vzorkovací frekvence vzorkování, tím líp. Taktéž dynamika regulátoru by měla být výš než dynamika řízeného systému. Nikdy ne vyšší než vzorkovací frekvence!!!
Pokud tam máš dopravní zpoždění, musíš s tím počítat!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: út říjen 15 2013, 9:18    Předmět: Citovat

zkoušel jsem regulátor a zjistil, že dopravní zpoždění je kolem 7 sekund. Regulátor se je rozkmitaný jak s D složkou tak bez. Tak mě napadlo. Vzorkovací frekvenci nechám na 1 sec. Bude tam asi regulační zásah 5 sec (otáčení ventilem), potom čekání 10 sec na ustálení, pak další. Když bude hodnota blízko požadované cca +- 3 stupně. Bude regulační zásah asi 1 sec a zase 10 sec čekání na ustálení. Nic lepšího mě k tomu nenapadá.

Hledal jsem nějakou literaturu ohledně číslicové regulace. Princip jsem pochopil, ale s realizací by to bylo težké, protože mi derivace a integrace moc nejdou. Navíc mám pocit, že to musí jít jednodušeji.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cust



Založen: Jan 17, 2007
Příspěvky: 6632
Bydliště: Milotice u Kyjova

PříspěvekZaslal: út říjen 15 2013, 9:21    Předmět: Citovat

S dopravním zpožděním to jednoduše povětšinou nejde. Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
silas15



Založen: Feb 09, 2013
Příspěvky: 90

PříspěvekZaslal: út říjen 15 2013, 9:47    Předmět: Citovat

Vždycky jde počkat. Tady to bude zhruba 10 sec. I když bych rád, nic lepšího nevymyslím. Na to bych potřeboval znát polohu ventilu a možná i teplotu teplé a studené vody. S tím že, znám jen teplotu na výstupu, teplo buď přidám anebo uberu a to konstantní rychlostí, tak si nedovedu představit něco lepšího než čekat na to zpoždění. Kdyby tam bylo servo, dovedl bych si představit, že by se při velké odchylce pořádně otočilo a relativně rychle vracelo a tím teplotu dostavilo mnohem rychleji. Ale pořád si to představuji jako hurvínek válku, protože o regulacích nic moc nevím.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.27 sekund