Fórum témák

» Több friss téma
Fórum » PIC PID library
 
Témaindító: kyrk, idő: Aug 6, 2008
Lapozás: OK   3 / 6
(#) kyrk hozzászólása Márc 6, 2012 /
 
Több féle megoldás létezik a PID szabályozó kimenetének illesztésére a fizikai szakaszhoz:
Egyszerűség gyanánt tételezzünk fel egy hőtechnikai szakaszt.

- A kimenő jel arányos a leadott teljesítménnyel. Pl. egy triakos fázishasításos kapcsolással, vagy triakkal fázishasítás nélkül teljes hullámáteresztéssel. Ennek előnye, hogy valóban a PID kimenetével arányos lesz a leadott teljesítmény. Hátránya, hogy a triakos kapcsolás drágább illetve szoftverből is meg kell támogatni.
- Picivel egyszerűbb ha a kimenet egy sima relé nagyon lassú PWM jellel kapcsolva. Pl. 1 perces időállandójú. Itt is a leadott teljesítmény arányos a PID kimenetével egészen addig amíg a PWM periódusideje nagyságrenddel kisebb a szakasznál. Pl 50L-es tartály melegítése fél perces periódussal. Ilyenkor a relé kapcsolásai fel sem tűnnek, kiátlagolódnak. Előnye, hogy olcsóbb, hátránya hogy igazán gyors szakaszoknál nem jó, mert a relé túl gyorsan tönkremegy a sok kapcsolástól. Picit hullámosabb lesz a szabályozás a kapcsolások miatt.
- Legegyszerűbb megoldás, ha a PID kimenetét komparálod nullához és ez alapján kapcsolsz egy relét. Ennek előnye, hogy nagyon egyszerű, hátránya, hogy a kimenet nem arányos a PID jelével emiatt nem lesz olyan szép a szabályozás. De az a hatása a PIDnek hogy időben lekapcsolja a fűtést az megmaradhat. Hiszterézissel megspékelve a nulla körüli prellegés megszüntethető.

Picit más a helyzet ha mondjuk ha szelepet állítasz. Itt valószínűleg a PID kimenetével arányosan akarod a szelepet elfordulást állítani. Illetve ha ez nem lehetséges akkor akár kapcsolgathatod is a szelepet ki/be a komparalos megoldassal. Nagyjábol ami fent igaz az itt is igaz lesz. Tehát a kapcsolgatás rondább eredményt ad mint a fokozatos állítás.

Sokban függ az eredmény a szakasztól és a követelményektől is. Lehet a vevő nem háklis a túllendülésre és hullámosságra, lehet hogy igen. Lehet a szakasz gyors vagy lassú. Ettől függ majd melyik megoldás lesz a legcélszerűbb.

A PID-nel én azt szoktam általában követni, hogy a PID kimenetét 0 és 100 közé állítom be. (A kimenete alapjában véve majd az Ap erősítéstől függ). Ezt százaléknak veszem és ennek megfelelően skálázom tovább. Szeretem ha a programban jól érthető mennyiségek vannak amit debuggolás közben is ért az ember. Ez picit több programidőbe kerül. Van aki nem igy csinálja hanem megpróbál idomulni a PID kimenetével rögtön a 10bites PWM hez. Itt nehezebb lehet értelmezni debuggolás közben hogy mit is akar a PID.
(#) jym válasza kyrk hozzászólására (») Márc 11, 2012 /
 
Üdv!

Ha lesz kipróbálható verzió, akkor vállalom a tesztelést PLC-n. Gondolom C-ben írod, azt én átírom ST-re (struktúrált text), és helyiségek fűtésére ki tudom próbálni.

Imi.
(#) kyrk válasza jym hozzászólására (») Márc 13, 2012 /
 
Helló!

Igen C-ben irom. Ha elkészül felrakom ide úgyis és akkor ki tudod próbálni.

Még nem vagyok elégedett a működésével. Jelenleg szakaszidentifikáció után kiszámolja a PID paramétereket és azzal szabályoz. Elképzelhető, hogy átírom olyanra, hogy a szakaszhoz folyamatosan illesszen egy modellt és annak a paraméterei alapján szabályozzon. Így sokkal megbízhatóbb lenne, mert nem egy mérés alapján gondolná ki a PID paramétereket, hanem folyamatosan.

Az PID paraméter ajánlásokkal sem vagyok kibékülve. Lehet, hogy majd lecserélem valami optimalizációs megoldásra. De attól tartok ez még csak a jövő zenéje, mert ehhez gyorsabb PIC kellhet.
(#) jym válasza kyrk hozzászólására (») Márc 13, 2012 /
 
Üdv!

Csatoltam mellékletben ami nekem van info róla, hátha segít. Van még más is, de ezek a fontosabbak.

A "Dissertacao_Caon.pdf"-ban van autotuning példa kód is.

A "pid_controller_calculus_v320.pdf" is nagyon jó.

Imi.
(#) kyrk válasza jym hozzászólására (») Márc 13, 2012 /
 
Hello!

Köszönöm. A Janssen-Offereins szabály az új nekem.

Ennek a HAGA önhangolónak megnézném szívesen a kódját. Lehet, hogy én bonyolítom túl a dolgokat, mert olyat szeretnék ami HPT1 és HIT1-es szakaszt is be tud hangolni. Lehet, hogy alább adok a dolgokból és csak HPT1-es szakaszt csakis Oppelt módszerrel működőt csinálnék.

A tapasztalatom szerint a legtöbb szakasz általában HPT1 vagy PT1.

A módszereknél néha a bőség zavara áll elő. Nehéz eldöntenem, hogy ha több módszer van melyiket használjam. Esetleg a program mi alapján döntsön egyik vagy másik mellet.
Hasonló a helyzet a szabályozó strukturájával. Itt is már 2 ajánlást találtam. Megintcsak nehéz eldönteni a programból a dolgot.
(#) pjg válasza kyrk hozzászólására (») Márc 13, 2012 /
 
Sajnos már nem elérhető az oldal.
(#) pjg válasza pjg hozzászólására (») Márc 13, 2012 /
 
De végig olvasva a topicot rátaláltam. Köszönöm.
(#) kyrk válasza pjg hozzászólására (») Márc 13, 2012 /
 
Valóban. Véletlenül törölhettem. Javítottam.

Majd kirakok egy újabbat is ami picivel egyszerűbb az előzőnél. Újabban azt szoktam használni. De előbb még át kell néznem meg valami projektbe kell foglalnom, hogy legalább kipróbálható legyen.
(#) kyrk hozzászólása Máj 28, 2012 /
 
Kezdeti sikereket érek el az önhangolós PID szabályozóval. Kénytelen voltam átírni PC-re mivel azon sokkal kényelmesebben és gyorsabban tudok fejleszteni. A PIC jelenleg a PID szabályozást csinálja, illetve a PC-nek felküldi a mért hőmérsékletet. A PC pedig megjelenít illetve az önhangolást végzi.

Az önhangolás egységugrással történik. Az erre adott válaszból a PC kiszámolja a szakasz paramétereit és felkínál PID paramétereket különböző ajánlás alapján. Szerencsémre Apukám segített lederiválni azt a függvényt aminek az értékét minimalizálni kell, hogy megadja a szakasz paramétereit.

Egyenlőre csak szimulált szakaszon próbálkoztam, a PICbe implementáltam szimulációt.

Ha lesz időm kipróbálom egy minisütőn illetve egy vízforralón. Ha ezeken jól működik akkor visszaírom az egészet PIC-re.

Sajnos a PID szabályozó ajánlásokkal picit hadilábon állok. Nem mindig egyértelmű, hogy mikor kell időállandót és mikor kell felfutási időt behelyettesíteni. Itt még majd utánanézek a neten, hogy pontosan mit kell behelyettesíteni.
(#) mgy válasza Mate78 hozzászólására (») Jún 11, 2012 /
 
Sziasztok !
Nekem is szükségem lett volna egy PID-es szabályozóra, de a nagy matematikához már kevés vagyok.
Adva volt egy 24 Voltos fűtőfej ( 8 Ohm) és beépítve egy hőelem.
A mellékelt rajz szerint csináltam meg a vezérlést, igaz 16f690-nel teszteltem a pidpic.pbp programmal.
Gyakorlatilag az előírt hőmérséklet 80%-áig felfűtöttem a fejet, és az előírt hő és mért hő differenciájával egy lassú PWM szerű vezérlést írtam.
A fej 30 mp alatt eléri a 80 %-ot és automatikusan "rásimul" egy kb 96 %-os értékre.
kb. 15 mp után ezt az értéket stabilan tartja.
Ezt a hőfokbeállításnál figyelembe kell vennünk, vagy a potmétert utólag skálázhatjuk.
A fejnek kicsi a hőtehetetlensége ezért, 100 ms nagyságrendű mintavételezéssel dolgoztam.
Szerintem alkalmas lehet nagyobb tartályok, vagy akár helyiségek hőfokszabályozására is, de a mintavételezési ás beavatkozási időket a rendszer tehetetlenségéhez kell igazítani.
Nem nevezném PID-nel, mert egy differenciál szabályozás, de a rendszer kiegyenlíti önmagát.
Ha valaki tudna egy egyszerübb "mezei polgár" által is megszerkeszthető algoritmust, azt ezen a rendszeren szívesen kipróbálnám.
Üdv mgy
(#) kyrk válasza mgy hozzászólására (») Okt 28, 2012 /
 
Sima P szabályzónak tűnik, mert a kivant es mert homerseklet kulonbseget erosited valamilyen X ertekel es csinalsz belole PWM-et. A 80% ig fűtés jó 5let, sok esetben leegyszerűsití a dolgokat.

A 96% az az állandósult állapotbeli hiba. Ha növeled az erősítést akkor kisebb lesz de előbb utóbb elkezd túllendülni illetve akár be is gerjedhed. A P tag általában hőtechnikai szakaszon ilyen. Ha a kivánt es aktualis homerseklet kulonbseget megfelelo nagy szammal szorzod akkor kb ugyan azt ered el mintha 80% fullosan futenel.

Ha raksz bele pici I tagot akkor kihozhatod nullára a hibát. A kivánt és aktuális hőmérséklet különbségét összegezd és ezt add hozzá a PWM jelhez (Y ertekkel szorozva). Máris kész a PI szabályzod.

D tagra szerintem ritkán van szükség. Általában ott ahol tényleg fontos a gyorsaság és túllendülne enélkül a szakasz.

Vegulis sajat magad rajottel a P szabalyzo mukodesere. Innentol mar nem lesz nehez szabalyzasokat csinalni. Javaslom probalkozz kulonbozo szakaszokon erdekes dolgokat lehet megfigyelni.
(#) watt válasza kyrk hozzászólására (») Okt 28, 2012 /
 
Szia! Mostanában elég sokat PID-elek, igaz nem foglalkoztat az önszabályzás, inkább a lehető legjobb szabályzás, ami minden esetben jól reagálja le a történéseket.
Te hogy állsz a dologgal?
(#) nyakas00 hozzászólása Dec 16, 2012 /
 
Nekem egy PID szabályozóval kapcsolatos kérdésem lenne.

"A hiba mértéke csökkenthető, ha a P-tag erősítését növeljük, azonban a valóságban egy túl nagy Kp –jű arányos tag instabil rendszert eredményez. " Ez a mondat érdekelne a gyakorlatban, ha csak P szabályozást használunk és irreálisan növeljük a proportionális tag értékét a rendszer instabilitása mit jelent?
Pl egy rendszer esetén ahol a hőmérsékletet mondjuk 150fok körül kell tartani
(#) watt válasza nyakas00 hozzászólására (») Dec 16, 2012 / 2
 
Azt jelenti, hogy nagyobb P tag kicsi hőfok eltérésre, nagyobb beavatkozó jelet számít ki, azaz nagyobb teljesítmény kerül a fűtésre, vagy más egyéb beavatkozó szervre(pl. ventilátor, ha tüzet szabályozol). A túlzott teljesítmény olyan gyorsan emeli meg a hőfokot, amit egyébként csak késve tudsz megmérni, hogy az túllendül. Ekkor túlságosan vissza fog venni a teljesítményből a P kör, tehát a következmény alullendülés. Ez az instabil rendszer. De csak P taggal nem lehet pontosan hőfokra szabályozni, mert ha úgy állítod be, hogy ne lendüljön túl, akkor alá fog fűteni, feltéve, hogy nulla hibánál nulla kimeneti teljesítmény az alap. Egyéb alap értékeknél sem valószínű, hogy beáll a kívánt értékre, mert nincs olyan fix teljesítmény ami minden esetben jó lenne, mert akkor nem is kéne szabályzás. Szóval I tagot midnenképpen be kell tenni, ha D-t nem is...
(#) nyakas00 válasza watt hozzászólására (») Dec 16, 2012 /
 
Köszönöm a precíz választ világos!
Van egy jól beállított PID szabályozóm, csak azt kellene naplóznom h mi történik a rendszerrel ha a P tag értékét mondjuk irreálisan megnövelem. Azért kérdeztem hogy tudjam mit is kell tapasztalnom.
Még 1x köszönöm
(#) kyrk válasza nyakas00 hozzászólására (») Dec 16, 2012 /
 
Elkezd lengeni a rendszer 150 fok korul. pl 100-200 fok kozott. Kellemetlen a dolog ha a lenges olyan homersekletet ertint ami karos hatassal van.

Pl 150 fok jo, de 200 foknal mar robban valamilyen vegyi folyamat eseten. Vagy goz eseten 200 fok eseten akkora a nyomas hogy kinyit egy veszszelep.
A hozzászólás módosítva: Dec 16, 2012
(#) watt válasza nyakas00 hozzászólására (») Dec 16, 2012 /
 
De miért akarnád elállítani ha egyszer jól működik?
(#) kyrk válasza watt hozzászólására (») Dec 16, 2012 /
 
Kandón Autómatika szakon mértünk ilyet. Direkt meg kellet növelni a P tagot, hogy mi történik.

Illetve van olyan hangolási módszer ahol a kritikus erősítési tényezőt keresik meg és abból számolják a paramétereket. Paks hangolása esetén ez a módszer nem játszik
(#) watt válasza kyrk hozzászólására (») Dec 16, 2012 /
 
Elég gáznak érzem, hogy én magyarázom ezt el! Mi történt az órán?
Néha úgy érzem, hogy bizonyos dolgokat szándékosan nem értetnek meg a hallgatókkal, mert a másik eshetőség, hogy ők maguk sem értik, elég ciki lenne! Ezen sem lepődnék meg egyébként...
(#) pucuka válasza kyrk hozzászólására (») Dec 16, 2012 /
 
Eljátszották ezt Csernobilban. A végeredményt ismerjük.
(#) kyrk válasza pucuka hozzászólására (») Dec 16, 2012 /
 
Csernobilban nem egészen ezt játszották el. Mintha a tartalék rendszerekkel mahináltak volna. És elforrt a víz amit nem láttak a mért értékeken.
(#) kadarist válasza kyrk hozzászólására (») Dec 16, 2012 /
 
Van itt egy kis összefoglaló a témában.
(#) Norberto válasza watt hozzászólására (») Dec 17, 2012 /
 
Idézet:
„Elég gáznak érzem, hogy én magyarázom ezt el! Mi történt az órán?”


Hát ha egyszer te voltál itt legelőször a kérdés felmerülése után és hajlandóságot éreztél a válaszadásra...

A tanítás minősége meg... inkább hagyjuk. Leginkább nem a logikus magyarázatokkal szokták tölteni a tanárok az időt, hanem szanaszét bonyolított képletekkel és érthetetlen összefüggésekkel tömik a hallgatók fejét. Sajnos.
(#) glaci hozzászólása Jan 22, 2013 /
 
Sziasztok!
Ismeri valaki sysquake nevű programot ?

sysquake.jpg
    
(#) watt válasza glaci hozzászólására (») Jan 22, 2013 /
 
Nem, de tetszik! Kipróbálom... Köszi!
(#) jym hozzászólása Máj 2, 2013 /
 
Üdv!

Önhangoló PID C++-ban (de könnyen átírható C-re):

Bővebben: Link

Ha valakinek nem tetszik a csúcsdetektáló algoritmusa, akkor itt van másik csúcsdetektáló:

Csúcsdetektáló MATLAB-ban

Csúcsdetektáló C-ben
(#) kyrk válasza jym hozzászólására (») Máj 2, 2013 /
 
Az Arduinos módszert már mások is említették. Egyszerűnek hangzik ez a belengetős módszer de azért pár dolgot körbe kell benne járni.

A probléma mindig ott kezdődik, hogy egyáltalán nem tudjuk, hogy a szakaszunk milyen időállandóval és erősítési tényezővel rendelkezik. A sebesség miatt szabni kell egy minimális és maximális határt amiben hajlandóak vagyunk szakaszt identifikálni. Az ezen kívül eső tartományt is tudni kell detektálni, nehogy hibás identifikációt hajtsunk végre. Sajnos az átfogandó tartomány igen nagy lehet. A néhány tized másodperctől egészen a pár percig.
A szakasz erősítési tényezője is problémás lehet. Ha túl kicsi akkor nem kapunk semmi értékelhető jelet. Ezt viszonylag könnyű detektálni, de könnyen összekeverhető a túl lassú szakasz viselkedésével. Nem vártunk eleget vagy a vezérlójelünk túl kicsi? Ha túl nagy az erősítés akkor túlvezérelheti a bemenetet. Akkor az amplitúdó paraméter nem lesz hibás. Jó esetben azért nem kellene túlvezérelnie a bemenetet, mert azt úgy kell méretezni, hogy a teljes tartományt mérni tudja.

Még egy probléma van ezzel a belengetéssel. Ha jól látom egy PT1 szakaszra van. HPT1-es szakaszra nem lesz jó. A szakmai életben a HPT1 szakaszból jóval több van mint PT1-ból. Tulajdonképpen holtidő mindenhol van, emiatt a PT1 szakaszok leírhatók HPT1-el. Illetve ha kicsi a holtidő, akkor a HPT1 nél a H elhanyagolható és PT1 csinálható belőle.
(#) kyrk válasza jym hozzászólására (») Máj 2, 2013 /
 
Az 5let tetszik. Ihletett adott, hogy végre nekiüljek és PIC-re is írjak már valamit. De mindeképpen szeretnék olyan megoldást ami nemcsak szakaszt identifikál, hanem a előszőr a szakasz struktúráját identifikálja. Végülis nem mindegy, hogy HPT1 vagy HIT1 a szakasz.

Víz melegítésnél probléma, hogy ha kis részét nézzük akkor HIT1 nek tűnik. Kifejezetten a szobahőmérséklet közelében. Ettől egyre távolodva egyre érvényesül a nagyobb hőmérésékletkülönbség miatt a nagyobb hőelvezetés, emiatt PT1-re kezd hasonlítani.
(#) Vadlaz hozzászólása Szept 2, 2013 /
 
Sziasztok!
PID-del akarok elkezdeni foglalkozni. Felmerült bennem egy kérdés: az összes jelnek ugyanabban a tartományban kell mozognia? pl az alapjel és a szabályozott jellemző nyilván ugyanabba a tartományba esik (mondjuk 0...50). Akkor a rendelkező jelnek is itt kell lennie (mondju pwm kimenetnél az 50-es érték a 100% kitöltés)? Vagy ez lehet más tartomány, csak nagyobb Kp,Kd,Ki kell? Köszi előre is!
(#) watt válasza Vadlaz hozzászólására (») Szept 2, 2013 /
 
Lehet más tartomány, csak az arányok számítanak.
Kényelmesebb az a tartomány, ami a beavatkozó szerv bemeneti tartománya, ami lehet akár egy PWM(0-100%), de lehet egy másik PID SP-je is, ami akár hőmérsékleti alapjel is lehet, azaz ekkor az Y 0..600.
Következő: »»   3 / 6
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem