Fórum témák
» Több friss téma |
Fórum » PIC PID library
Parameterek: Altalaban erositesi tenyezot es idot kell beallitani. Azt hiszem a digitalis cuccoknal szokas Ap, Ci es Cd-t allitani. Itt a Ci az Ci = Ap/Ti vagy valami ilyesmi. Most nem emlekszem utana kellene neznem.
Kerdesem a kovetkezo: Mire van szukseged? Onhangolo (automatikus) PID szabalyozora vagy pedig kezzel szeretned behangolni? A ketto kozott nagy kulonbseg van! Ha ezt a hutorendszert akarod megoldani akkor gondolom eleg neked egy kezi modszer. Onhangolos PID kell neked akkor lehet jobban jarsz ha veszel egyet. Szerintem ehhez azert sok kiserletezgetes kell. Onhangolo automaitkus PID szabalyozo: A kod amit en tettem kozze az erre nem kepes, tehat valakinek majd implementalni kellene hozza. Sajnos ez ugyben sok tapasztalatom nincs, egy idoben terveztem hogy implementalok valami hasonlot de meg nem kezdtem el a matematikajaval foglalkozni, sajnos a kandon ezt a reszet nem oktattak. Ziegler-Nichols modszer: Ezt oktattak a kandon. Ez egy kezi modszer (de gondolom automatizalhato). Valoban itt be kell lengedni a szabalyozando szakaszt, az itt felvett parameterekbol kiszamolhato a PID szabalyozo parameterei. A linken nekem hianyzik a Pi es Pd (valami remlik hogy PID szabalyozoknal mas a jeloles mint amit egyebkent oktatnak). Azt tantitottak hogy ovatosan ezzel mert csak belengetheto szakasznal lehet haszalni (marmint aminek nem art ha beleng). Pl atomeromunel v. robbanekony szakasznal nem illik. En elso korben elvetnem. PID handolasa: Emlekeim szerint a szakasz identifikacioja utan ki lehet valasztani egy modszergyujtemenybol a megfelelo modszert. Ez attol fugg hogy a szakasz hany idotarolos (strukturanak hivjak, Pl PT1 vagy PT2(aranyos 1 vagy 2 idotarolos) esetleg IT1 (integralo)) Most igy elsore az Oppelt modszer jut eszembe (http://www.ms.sapientia.ro/~martonl/Docs/Lectures/Holtidos_Folyamatok_Iranyitasa.pdf). Utana kelle neznem a jegyzeteimben hogy milyen modszerek leteznek, de van egy gyanum hogy az iparban nem ezeket hasznaljak, leven vannak automata onhangolo cuccok. Sajnos ezeket nem szoktak gyakran kozzetenni, mindenki kisereltezik valamit hatha jobb lesz mint a kompetitor. Persze ha tud valaki valami jo algoritmust arra kivancsi lennek! PID hangolasrol: En kezzel csinalom raerzesre. Elkezdem novelni a P tagot amig ugy kb jonak tunik a szabalyozas. Aztan adok ra pici I-t hogy a maradando hibat kiszedje es egy kis D-t hogy gyorsitsa. Ez most nem valami szakszeru leiras de nagyjabol igy jarok el. Eloszor P tipusu szabalyozo, majd PD illetve PID. Kiserletezgettem es a tapasztalat ertekekbol dolgoztam. A periodust [s] ben kell merni. Ha jol emlekszem a forraskod amit kozzetettem az szinten [s]-ben meri a Ti Td idoket. Nem tudom kinek mikori kodja van feltoltom a legutolso verziot.
Nem a kritikus korerositesre es a lengesi idoallandora gondolsz?
Idézet: „Azt tantitottak hogy ovatosan ezzel mert csak belengetheto szakasznal lehet haszalni (marmint aminek nem art ha beleng). Pl atomeromunel v. robbanekony szakasznal nem illik. En elso korben elvetnem.” Jól emlékszel erre. Sőt, még azt is tanították, hogy abban az esetben célszerű alkalmazni, amikor a szabályozandó egység (szakasz) működéséről, jellegéről igazából sejtésünk sincs. Viszont itt a hőmérséklet-szabályozás esetében, mivel a szakasz teljes egészében készen áll beavatkozásokra, és lemérhető, érdemesebb lenne talán egy egységugrás jellel felvenni az átmeneti függvényét (?), ez viszonylag egyszerű módszer. Erről mit gondolsz, kyrk? És akkor nem lenne ismeretlen a szakasz struktúrája, és nem is kéne esetleg a Ziegler-Nichols módszer. Persze kísérletezgetni mindenképpen jó dolog lehet vele és nyilván tanul belőle az ember! :yes:
1000 köszönet !
Valóban nekem erre a célra élég a kézi hangolás, de ez csak egy kísérlet, mert itthol nem tudok egy keltetőhöz való hűtőberendezést összehozni. Mint a forrás tanulmányozása közben és PC-s szimulációval ( ez a kód egyből jól működött ). De ez gyanús volt úgyhogy ezért raktam össze ezt a kis kísérletet, hogy valós körülmények közt próbálhassam ki, a szabályzást. Hát be is igazolódott a gyanúm, sokkal nehezebb volt a valóságban beállítani mint a szimuláció során.
Valoban az egysegugras jellel torteno szakaszazonositas jonak tunik.
PID szabalyozot P-re konfiguralni es adni neki egy egysegugrast. A mert adatokbol lehet gorbet rajzolni es meghatarozni a szakasz jellemzoit. Ket gorbe van, az egyik a mert gorbe a masik pedig az alapjel (ami egy egysegugras). http://www.dcs.vein.hu/hangos/oktatas/RTANPID.pdf 19. oldalon latszik egy lehetseges mert gorbe. Sajnos nem talaltam peldat hogy hogy nez ki egy holtidos egyidotarolos tag illetve sima egyidotarolos vagy ketidotarolos aranyos tag. Itt talaltam peldakat: http://www.rit.bme.hu/ftp/pub/oktatas/2054/eloadasvazlatok/06_Alaptagok.pdf Ranezesre a mert gorbebol mar meg lehet hatarozni a strukturat amivel kozeliteni lehet. Amit el kell donteni az hogy P, I vagy D alapstrukturaju a tag. Homerseklet szabalyozas eseten altalban P lesz. Jo esetbe PT1 (egy idotarolos) vagy PT2 (S alaku gorbe kb) Eselyes egy HPT1 struktura. Tehat holtidos egyidotarolos aranyos tag. Itt le kell merni a Th, Ap, T1-et. Sajnos ide abrat nem talaltam googlival. Keresek majd valami leirast hogy kell ezt pontosan lemerni. Kandon csak papiron kellet vonalzoval Picit nehez leirni. A szakas strukturajabol kovetkezik a szabalyozo struktura valasztasa. Pl lehet neked eleg a P, vagy PI szabalyozo. Emlekeztetotul az I tag durvan az allandosult allapotbeli hibat javitja ki, mig a D tag gyorsitja a szabalyozot! Ha megvan akkor lehet parameterezni a szabalyozot. http://people.inf.elte.hu/oriss/allamvizsga/at/gergo2/Automatika%20...00.doc Hirtelen HPT1 szakasz paremterajanlasara az oppeltet talatam: http://bmf.hu/users/kucserap/utmutato/term/1ea_123.ppt Tf a felfutasi ido, Th a holtido, Aser az erositesi tenyezo ha minden igaz. Ha valami nem tiszta kerdezz! Eleg nehez leirni a dolgokat, sajnos ide kellenek az abrak. Nem losz nagyon melle ha tapasztalati uton nekiesel! Eloszor P erosites noveles, aztan I tag hozzadasa. Ha nem leng akkor lehet hogy nem is erdemes tovabb hangolnod! Ezek a hangolasok szinten tapasztalati uton jottek letre! Tehat semmikeppen sem nevezheto optimalisnak. Mar csak azert is mert anno a kandon ezeket papiron mertuk le es abbol szamoltuk. Most hogy a holtido 5s vagy 5,2s az mind1 kb. Tehat ezekel a modszerekkel is csak kozelito, jo erteket kapsz. Ha nem jo akkor persze tovabb kell hangolni akar kezzel!
Hali!
Nekialltam onhangolo PID algoritmust irni. Ha keszen lesz kirakom majd ide. Nagyjabol a kovetkezoket gondoltam: A szakaszt HPT1-nek fogom feltetelezni. Kesobb majd esetleg bovitere kerul. Az identifikacio egy egysegugras jellel fog tortenni. A mert adatokbol majd gorbeillesztessel akarom kiszamolni a kerdeses adatokat. Itt Levenberg - Marquardt minimalkeresest akarok hasznalni. A PID szabalyozo parameterezesehez Cohen-coon alajnalast gondoltam. A HPT1 feltetelezes remenyeim szerint elegendo hotechnikai szakaszokhoz. IT1-et most nem akarom belekeverni, majd next step. Az egysegugras jellnel attol felek, hogy ha tul pici akkor nem latszik semmi valtozas, ha tul nagy akkor teliti a szakaszt. Itt valami trial-error megoldast gondoltam. Tehat addig probalkozni a novelessel amig ossze nem jon a "jo" mert adat (kicsit spongyola megfogalamzas). A gorbeillesztesnel picit aggodom, hogy tul sok eroforrast venne el. Meg nem tudom mennyi programtar, sram illetve futasidobe kerul majd. A Cohen-coon sajnos nem minden esetben ad hasznalhato eredmenyt. Kesobb majd lehet itt is boviteni a valaszthato repertoart. Van valakinak tapasztalata gorbeillesztessel PIC-en?
Szia!
Utána olvasgattam az általad említett Levenberg - Marquardt algoritmusnak, és arra a következtetésre jutottam, hogy nem egy egyszerű eset. A hőmérséklet szabályozás esetén a szabályozott szakasz ugrásválasza ahogy én tudom, jól megközelíti a lineárist. Szóval szerintem egy egyszerűbb algoritmust is használhatnál a függvény meghatározására. Én szakaszos linearizálással állnék neki a nemlineáris függvény meghatározásához, tehát fel kell bontani kis szakaszokra a függvényt, mely szakaszok már lineárisnak tekinthetőek. A közelítő szakaszok meredekségét egyszerűen, közelítő számítással (deriválás nélkül) meg lehet határozni. Erre alkalmas, hogy a függvény adott pontjában levő érintőt húrral közelítjük. Ha esetleg nem ismert a módszer, akkor itt leírnám az elvét. A csatolt képen illusztráltam a megoldás menetét a jobb érthetőség kedvéért. A képen az y= x2 függvény x1 = 1 pontban lévő érintőjét közelítjük. Az eljárás lényege, hogy meghatározzuk az x1 = 1 pont előtti és utáni pontok y értékét. Majd kivonjuk a két értéket egymásból, és osztjuk a delta x = x2-x0 értékkel. Ekkor megkapjuk a húr meredekségét, mely jól közelíti az érintő meredekségét. Matematikusan leírva: Remélem érthető mire gondolok! Üdv.
En exponencialis valaszfugvenyt tetelezek fel hotechnikai szakaszoknal. Y = Y0 * (1 - e^(-t/T)) Mindekeppen ezzel a modellel kell a vegen illesztenem mert a tovabbi szamolasokhoz szukseg van a T illetve Y0 parameterre.
A Levenberg - Marquardt algoritmus letoltheto a netrol C forraskodban(Levmar-2.5), mellete szol hogy sikerult leforditani egybol es mukodik is. Mas kerdes hogy el fog-e ferni egyatalan egy 18F-es PIC-ben, es ha igen akkor milyen gyorsan fog lefutni. A 18F-es PIC tekinteteben sem vagyok meg telejsen biztos, nem zarom ki, hogy esetleg nagyobb csalad lesz. Akar PIC32 is szobajohet. Azt hiszem egy Freescale MPC5554 mar tulzas lenne. Visszaterve az algoritmusokhoz. A legjobb az lenne ha letezne valami nem iterativ megoldas a problemara. Itt konkretan a Least-Squares-re(Lest-Squaer) gondolok. Meg nem volt idom vegigszamolnom hogy mi jonne ki a fenti fuggvenyre. Itt meg nem szamoltam vegig, hogy mit lehet kezdeni a fent emlitett fuggennyel. Most epp egy iterativ algoritmust probalok amit a sajat kutfejembol talaltam ki (biztosan letezik ennel jobb is). A szimulator szerint 0.7 masodperc alatt kiszamolja 8 pontra az eredmenyt. Mellekeltem a filet (ha masa nem jo legalabb elrettento peldanak ). Nem nagyon probalgattam ki csak 1-2 probaadattal. Hibak meg lehetnek benne.
Teljesen érthető, hogy exponenciális alakban keresed a válasz függvényt, hiszen ha egytárolós modellt használunk, akkor a villamosságtani analógiát tekintve a hőtechnikai probléma egy soros RC tag ugrásválasza. Azért javasoltam a szakaszosan lineáris megközelítést, mert szerintem jó közelítést lehetne elérni vele viszonylag kis számítási teljesítmény mellett, lásd melléklet 9.9- es ábra, mely egy valós hőtechnikai rendszer méréssel meghatározott ugrásválasza (könyv címe: Microcontroller Based Temperature Monitoring and Control).
Ha az elméleti ugrásválasz függvény időállandóját keresed, arra is van megoldás. Az Y0 végértéket nem túl bonyolult meghatározni, elég időt kell hagyni, hogy elérje azt a rendszer. Ha már tudjuk a végértéket, akkor az időállandót is meg tudjuk határozni. Ehhez szükség van arra, hogy tudjuk annak az időpontját, amikor a végérték felét elérte a rendszer. Ekkor az alábbi összefüggéssel számítható az időállandó: , ahol t az 50% eléréséhez szükséges idő. Erre már nem túl bonyolult algoritmust kreálni. Üdv.
Microcontroller Based Temperature Monitoring and Control c. konyv megvan neked digitalis formaban teljesen? Szivesen elolvasnam, hatha van benne uj dolog.
"Az Y0 végértéket nem túl bonyolult meghatározni, elég időt kell hagyni, hogy elérje azt a rendszer". Elfelejtettem mondani, hogy kovetelmeny lesz az, hogy ne kelljen kivarni az allandosult allapotot. HPT1-es szakaszt feltelezve, vegig kellene varnom a holtidot es a T ido legalabb 3 szorozast. Ezt szeretnem megsporolni. Ha csak a T*0.8 szorosat kell kivarni mar azzal elegedett lennek. Ily modon se a Y0 se a T nem all konnyen rendelkezesre. Most ugy tunik, hogy a LevMar forraskod nem fog konnyen fordulni PIC-re. Meg kuzdok vele hatha osszejon. Lehet GCC-vel kellene nekimennem es azzal forditani PIC-re. Majd meglatjuk. A problemamra 3 megoldast latok (illetve vizsgalok): - Levmar - Iteracios algoritmus sajat kutfobol - 2 pontra illeszteni gorbet majd tobb ilyen pontparra ilelsztett gorbebol atlagot szamolni igy csokkentenem a zaj hatasat
Innen le tudod tölteni a könyvet.
Egy kicsit off, de mivel látom, hogy nem ijedsz meg az angol nyelvű szakirodalmaktól, linkelek egy oldalt, melyen a tagok rengeteg hasznos doksit, könyvet etc. halmoztak fel: Link. Megéri kicsit böngészgetni A problémára visszatérve, így már érthető, hogy miért kell a bonyolult algoritmus. Egyelőre sajnos nincs ötletem a továbbiakra nézve. Üdv.
Koszonom a linket!
Angol nyelvu szakirodalom nem gond Munkahelyen egesz nap angol nyelvu tesztdokumentaciot irok. Elobb utobb megtanulja az ember, ez is csak olyan mint egy programozasi nyelv a sok kozul. Ezt a Sonsivri forumot ismertem mar de csak onnan, hogy egy bizonyos forditohoz itt van okositas Bar most a legujabb verziohoz meg nem sikerult leszedtem. Picit majd olvasgatok a forumon ezek szerint erdemes, eddig nem volt nagyon idom meg nem is gondoltam volna hogy ennyire "ertekes". Visszaterve az algoritmusra. Most nagyjabol van egy "mukodo" megoldas, inkabb prototipus. Picit foglalkozom a tobbi resszel is, hiszen a gorbe illesztes csak egy resze a dolgonak. Emogott egy allapotgep lesz ami levezerli az identifikaciot. Ebben a kovetkez problemat latom. Nem ismerven a szakasz erositesi tenyezojet csak tippelni tudom mekkoranak kell lennie az ugrasnak amit raadaok. Tegyuk fel tul pici akkor kvazi eltunik a zajban az informacio, olyan pici lesz a valtozas. Tegyuk fel tul nagy akkor pedig telitodhet a szakasz (es tavado). Ekkor pedig rossz lesz az erosites tenyezo amit meghatarozok. Meg arra nincs 5letem, hogy mivel lehetne szamszeruziteni az identifikacio josagat. Ebbol lehetne kovetkezteni, hogy esetleg urja kell-e egysegugrast adni nagyobb vagy kisebb ugrassal. Proba keppen kiprobalom PIC32-es forditoval mit muzsikal a kod futasidoben. u.i.: Pont most kerult fel az az okositas Micsoda veletlen.
Hali!
Picit gondolkodtam meg a gorbeillesztes probleman. Arra gondoltam, hogy a mert adatokra illeszthetnek egy polinom gorbet. Ebbol a gorbebol pedig vehetek pontokat amire kiszamolhatom a T1 es Y0 parametereket (ehhez 2 pontra van csak szuksegem). Ily modon vissza lenne vezetve a problema sima polinom gorbe illesztesre. Remenyeim szerint a meresben levo zaj nem okozna mar gondot mert a gorbeillesztes kvazi kiszuri.
Nemrégiben én is foglalkoztam a pid library-val, de ilyen szinten nem értek hozzá.
Viszont sokat emlegetik mostanában a szabályzásban a fuzzy logikát, olvasgattam is róla, és volt néhány demo szimulációs szoftverhez is szerencsém. El is kezdtem implementálni, de sajnos nincs rá időm épp hogy belekezdtem abba is kellett hagynom. A másik oldala a történetnek, hogy a lényegi rész itt is szinte csak angol nyelven lelhető fel, ami érthető, de engem ez is lelassított. Mindenképpen kíváncsi leszek, hogy mit sikerül a PID önhangolással elérni.
En a fuzzyrol azt hallotam, hogy egy idoben nagyon felkapott volt de mostanra mar nem annyira. Raadasul kiderult, hogy ami fuzzy logikaval megvalosithato az hagyomanyosan is. (ez ertheto mert a fuzzy program is csak sima logikan fut, de gondolom itt nem errol volt szo)
Visszaterve a PIDre: Az biztos hogy nem a gorbeillesztes lesz a problema, hanem eldonteni azt, hogy a merendo szakasz milyen strukturaju (egyenlore most HPT1-et tetelezek fel de a jovoben ki szeretnem boviteni), illetve hogy az idoallando mekkora. Mivel nem tudom mekkor, nem tudom meddig kell gyujteni az adatokat. Nem mind1, hogy 1s vagy 20percrol kell begyujteni adatot, raadasul a tarolt mintak szamat limitalni. Idézet: „Angol nyelvu szakirodalom nem gond Munkahelyen egesz nap angol nyelvu tesztdokumentaciot irok. Elobb utobb megtanulja az ember, ez is csak olyan mint egy programozasi nyelv a sok kozul.” Ja, csak syntax error eseten a luzer egybol dob egy cricical exception-t a technical support-ra Idézet: „Proba keppen kiprobalom PIC32-es forditoval mit muzsikal a kod futasidoben.” Nagyjabol 80 ms alatt ileszti a gobrbet Durvan 10 szer gyorsabb mint 18F-esen. Ez mar biztato!
Hali!
Csinaltam egy PIDLight verziot. Ez valamivel egyszerubb mint az erdeti. A forraskod tartalmaz mintaapplikaciot is. PICDEM FS USB panelre lehet letotleni. TC77 a homerseklet ellenorzo jel, a potenciometer pedig az homerseklet alapjel. A kimenet ket PWM csatorna, attol fuggoen hogy ep huteni vagy futeni kell. Sok sikert hozza! u.i.: En csak LED-ekkel neztem a PWM kimenetet. Ugy tunik jol mukodik. Valos szakaszon meg nem probaltam.
Üdv.
Ez önhangoló ? Ha igen, akkor milyen elv alapján önhangoló ? Imi.
Ez nem onhangolo.
Az onhangolos meg keszul. Ami biztos az onhangolosnal, hogy elso korben csak HPT1-es szakaszt fog tudni felismerni. Egyenlore chien hrones reswick ajanlas alapjan fogja magat parameterezni. Tehat semmi modelhangolos cucc meg ilyesmi nem lesz benne. Kb azt csinalj amit kezzel kell csinalni.
Egy 2 keréken egyensúlyozó robot PID hangolásával nem boldogulok. A szoftver alapvetően kész, de a közelében sem vagyok a stabilitásnak. Még ha sikerül is elég érzékennyé tennem, azonnal beleng. Egyáltalán lehetséges egy ennyire érzékeny rendszert próbálgatással hangolni, vagy itt már kénytelen leszek valahogy számolni?
A maximum amit eddig elértem, hogy ha fölül egy ujjal megtámasztom és tologatom, akkor minimálisan dől meg, követi az alja. Elengedni esélytelen...
Én úgy érzem, hogy itt, mivel viszonylag gyors beavatkozásokkal kell foglalkozni, már nem kerülhető el, a korábban kikísérletezett, úgymond "jól bevált" ajánlásokkal való próbálkozás, a PID hangolás terén.
Például lehetséges a Chien-Hrones-Reswick ajánlás. Sajnos motorvezérlés terén még nem foglalkoztam ilyenekkel, szóval nem tudom, hogy ide léteznek-e specializált formulák vagy ajánlások.
Hello!
Milyen gyors a rendszered? Pl hany millisecenkent veszel mintat a dolesrol (vagy egyeb bemenetrol)? Mekkora holtjatek van a rendszerben? Akar mechanikai kotyogas akar softwares kesleltetes? Milyen szabalyozo strukturaval probalkoztal eddig? Erdemes lenne kimerni, hogy valoban jol mukodik-e a PID szabajozo. Pl fellogatni a robotot adot dolesszogben es megnezni, hogy P struktura eseten a dolessel aranyosan teker a motor. Ezzel eleg gyorsan ki lehet deriteni mindenfele rejtett hibat. Utan erdemes lenne megmerni a bemeneti jelek valtozasanak sebesseget. Pl ha dol a robot akkor az 1ms alatt eldol vagy 100ms. (ez vegulis szakaszidentifikacio) Hangolas elott jo lenne egy szakaszidentifikaciot csinalni. Most hirtelen nem is tudom milyen szakaszod lenne. Ha egyensulyban van a robot es egysegugrast adok a P tipusu nyilt hurku "szabalyzora" akkor elvileg elkezd integralni, tehat a doles jel folyamatosan no. En IT1-re tippelnek. Mivel motorrol van szo inkabb HIT1 (holtidos egyidotarolos integralo szakasz). Szabalyozo struktura valasztasnal ezt mindenkeppen figyelembe kell venni, mivel ha ide beraksz PI tagot akkor szinte biztos lengeni fog. En PD taggal jatszanek, esetleg sima D-vel.
Kb 10 ms telik el 2 mintavétel közt. Jelenleg 3 potit kötöttem ADC-re, azokkal állítgatom a tagokat, hogy lássam a hatást működés közben. Az ADC olvasgatás sok időt elvisz, de a sorosportról beírkálás túl hosszadalmas volt.
Próbálgatás közben én is azt vettem észre, hogy az I tag azonnal megőrjíti az egészet, PD-vel lehet tűrhető dolgokat elérni, olykor 2-3s-re megáll, ha szőnyegen, vagy süppedős talajon van... A motor holtjátéka hatalmas, ez nyilván a legnagyobb baj, hiszen a szabályzás nem történik meg azonnal -maga a motortengely kb másfelet fordul, mire eljut a mozgás az áttétel végéig. Lehet, hogy lecserélem okosított modellszervóra mert annak kb 0 a játéka, szabályozni meg ugyanúgy pwm kell. Netről bányásztam a pid részt, itt a számolós rész:
A potis beolvasasnal ugyeltel arra, hogy szurve legyen a jel? Nem tudom milyen hatassal van a PID szabalyozora ha a parameterek zajosak. (nekem a potis azert nem tetszett regen mert a potim kontaktos lett sokszor).
10ms jonak hangzik, en tegnelyt szabalyoztam 5ms-el. A holtjatekkal szerintem kezdened kellene valamit. Az a szakasz szempontjabol holtidot jelent. HIT1-es tag szabalyozasa gyakorlatilag remalom (azt mondom vissza amit tanultam meg tapasztaltam). A PID resz jonak tunik. Ha keves lenne a szamolasi teljesitmeny akkor a pointeres reszt kiveszed belole az segit.
Szia kyrk!
Gratulálok a lib-hez, szép munka! Eddig valahogy mindig úgy hozta, hogy PID nélkül meg tudtam oldani a szabályzandó köröket, lehet most is, de keresgélés közben ráakadtam erre a topicra. Nézegettem a kódod, és nem értem hogyan használod az I és D tag időadatait. Olyan, mint ha nem időzítés meghatározására használnád a mintavételezések között, hanem szorzóként a beavatkozójel(PV) kiszámításához? Ha jól látom, akkor ez hibás eredményre vezethet, mert felnagyíthatja a rövid mintavételi szakasz miatt előforduló pontatlan mérést is a hiba felszorzása miatt! Nem jól látom?
Hello!
Elnezes a kesoi valasz miatt. Azt hiszem a felvetesedet ket reszre lehet osztani. Az egyik a mintavetelezes gyorsasaga es az ebbol fakado hibak. A masik pedig a PID szabalyozo parameterezese. A mintavetelezes ha tul gyors akkor ebbol adodhatnak problemat. Pl D tagnal ha tul gyakran veszel mintat es emiatt pici valtozasokat latsz, emiatt nagyra kell venned a D tag hatasat ami akar belengeshez is vezet. Altalanossagban azt mondanam, hogy erdemes jol megvalasztani a mintavetelezes idejet. Mintha lenne erre ajanlas, ami a szakasz gyorsasagabol adodik. Kb 3X-10X gyorsabban erdemes mintavetelezni mint a szakasz idoallandoja. Legalabbis valami ilyesmi remlik. A PID parametereinel a setTimeSlice fuggveny kiszamolja a kivant PID parameterekbol es mintevetelezesi sebessegbol a szorzotenyezoket. I tagnal ha 1-et irsz be neki parameternek akkor az 1s-os mintavetelezesnel jo lesz, de 500ms eseten mar a software 0.5-el szamol, mivel 1s mulva azonos erteket kell adnia. Idozitest nem allit sehol a PID azt neked kell kulsoleg beallitanod es az alapjan hivogatni a PID-et. Persze ezt a parametert meg kell neki adnod kulonben rosszul fog szamolni. A parameterezesnel ha jol emlekszem a kodban van valami atszamolas ami igazitja az adott mintavetelezesi idohoz a beirt erteket. Elvileg [s]-ban lehet megadni a parametereket. Remelem jol ertettem meg a problemadat es sikerult jo valaszt adnom.
Kezdeti sikereket értem el az önhangolós PID szabályozómmal. Sajnos még nincs olyan állapotban, hogy közzé lehessen tenni. A program jelenleg egy dsPIC30F4013-asban elfér.
Alapvetően a következő egységekre bontottam a problémát: - Szabályozandó szakaszról fel kell venni az egységugrásra adott válaszát (ez tűnik egyébként a legnehezebbnek). Egy gyakorlatilag egy állapotgép ami elvégzi az egységugrást és a mérést/loggolást) - A modellt leíró függvényt fittelni kell a lemért adatokra. Az eredmény a modell erősítési tényezője (Ap) és időállandója (Th, T1) - A fittelés eredményéből ajánlások alapján kiszámolható a PID paraméter. Több ajánlás létezik, nehézséget okozhat eldönteni melyik az "igazi". - PID szabályozó A legnehezebb a modellre adott egységugrás válaszának lemérése. Igen nehéz eldönteni, hogy a gerjesztés mikor túl kevés és mikor sok. Ha sok akkor azonnal felmegy maximumig a válasz, ha túl kevés akkor pedig csak zaj lesz visszamérve. Ilyenkor újra kellene mérni az egészet, de akkor előáll az a probléma, hogy honnan tudja a program, hogy a tranziensek lezajlottak-e már. Feltételezve, hogy az egységugrás jel helyes és a válasz is jó, ekkor még hátravan, hogy a uC eldöntse, hogy milyen időközönként érdemes mintát venni. Pl 1ms-enként veszek mintát akkor egy 50s-os időállandójú szakasz lemérése igen sok memóriát elvisz feleslegesen. Itt majd valami dinamikus mintavételezésre gondoltam. Tehát menet közben eldob adatokat a memóriából ha úgy értékeli ki, hogy érdemes még tovább mérni. Ha sikerül egy jó választ lemérni akkor a többi már csak számolás kérdése. A programot jelenlegi állapotában még csak szoftverrel szimulált szakaszon próbáltam ki. Azon jól működött. Rendes HW híján debugerrel ellenőriztem a működését. Ezért is van még messze a kiadástól. A következő lépés egy valós szakaszon történő kipróbálása lesz.
Igen szép dolog ez a szabályozástechnika.Elismerésem annak, aki mikrokontroller szinten ilyet fejleszt.
A PID szabályozóval kapcsolatban lenne egy kérdésem,lehet számodra részletkérdés:a szabályozó kimenőjele alapesetben úgy tudom valamilyen analóg jel.Hogyan, milyen algoritmus szerint lesz ebből digitális kimenőjel, ami a "digitális" beavatkozószervet (pl. relé)vezérli? |
Bejelentkezés
Hirdetés |