Kuczmann Miklós

Lineáris rendszerek és szabályozások Arduino UNO mikrovezérlővel


IV.1.7.3. A diszkrét idejű PID-szabályozócsalád tervezése.

A diszkrét idejű, más szóval mintavételes szabályozók tervezése során az első lépés a mintavételi frekvencia rögzítése. A folytonos idejű tervezéshez hasonlóan a PID-szabályozók szintézisét fázistartalékra történő tervezés módszerével visszük végig. Ehhez a felnyitott kör Bode-diagramját használjuk. A szakasz diszkrét idejű átviteli függvényét a (IV.19) összefüggéssel definiáltuk, és elvégeztük a paraméterek identifikációját is 50 Hz, illetve 100 Hz mintavételi frekvenciát feltételezve. Itt ezekkel az átviteli függvényekkel foglalkozunk jelöléssel.
A négy szabályozót a következőképp definiáljuk.
  • A P-szabályozó átviteli függvénye konstans:
 
(IV.42)
 
  • A PI-szabályozó átviteli függvénye a lomhább időállandójú pólust ejti ki:
 
(IV.43)
 
  • A PD-szabályozó átviteli függvénye a gyorsabb időállandójú pólust ejti ki:
 
(IV.44)
 
  • A PID-szabályozó a fentieket egyesíti:
 
(IV.45)
 
Itt megadtuk, hogy a szabályozók zérusait hogy kell számítani a mintavételi periódusidő és a folytonos idejű szakasz , illetve időállandóinak ismeretében. A szabályozók erősítésének meghatározását pedig a következőkben mutatjuk be.
A tervezés fázistartalékra történik, a folytonos idejű szabályozók tervezéséhez hasonló módon, az alábbi nemlineáris egyenletrendszer megoldásával:
 
(IV.46)
 
Az egyenletrendszer megoldása a Matlab függvényének hívásával történik, eredményül a szabályozó erősítése és a vágási körfrekvencia adódik.
A szabályozók átviteli függvényét Matlab környezetben a következőképp adjuk meg:
 
A szükséges zérusokat természetesen előre ki kell számítani: , valamint , pedig a mintavételi periódusidő.
A Matlab utasításaival mindez a következőképp implementálható. Legyen a fázistartalék. A nemlineáris egyenletek megoldását végezzük el az függvény segítségével: . Legyen az algoritmusának kezdeti értéke (szabályozó erősítése és a vágási körfrekvencia).
Az egyes szabályozók tervezését a következőképp lehet meghívni:
 
A tervezéshez szükséges hibák definiálása a következő függvényekkel lehetséges. Itt a függvény segítségével a értékhez kiszámítjuk a erősítésértéket és az fázist, majd ezen értékeket behelyettesítve a (IV.46) nemlineáris egyenletekbe, hibát számolunk. Az függvény ezt a hibát minimalizálja, részletesen:
 
function F=P(x,WPz,Ts,fit) % vagy...
F=PI(x,WPz,Ts,fit,zI) % vagy...
F=PD(x,WPz,Ts,fit,zD) % vagy...
F=PID(x,WPz,Ts,fit,zI,zD)
KP = x(1); % vagy KPI, KPD, KPID
wc = x(2);
 
WCz = tf(számláló,nevező,Ts); % a szabályozó átviteli függvénye,
% ahogy fent megadtuk
WOz = WCz*WPz;
 
[K,f] = bode(WOz,wc);
f1 = K-1;
f2 = -180+fit-f;
F = [f1;f2];
 
A megoldás az vektorban áll elő: a szabályozó erősítése, pedig a vágási körfrekvencia.
A tervezett zárt szabályozási körök ugrásválaszát a IV.21. ábrán hasonlítottuk össze, néhány jellemző adatát pedig a IV.4. táblázatban foglaltuk össze. Az ugrásválaszok jellege természetesen megegyezik a folytonos idejű tervezésnél kapott eredményekkel (vö. IV.17. ábra).
IV.21. ábra. Az egyes szabályozókkal felépített zárt szabályozási körök ugrásválaszainak összehasonlítása fázistartalék és 100 Hz mintavételi frekvencia mellett.
 
IV.4. táblázat. Az egyes szabályozókkal felépített zárt szabályozási körök néhány jellemző adata fázistartalék és 100 Hz mintavételi frekvencia mellett.
Szabályozó
K
P
21
,84
0
,143
0
,98
0
,83
18
,9
5
,78
0
,025
PI
12
,96
0
,072
1
,08
1
,00
8
,89
2
,49
0
,031
PD
63
,66
1
,385
1
,05
0
,91
14
,6
49
,9
0
,027
PID
53
,85
1
,191
1
,07
1
,00
7
,28
39
,2
0
,031
 
A mintavételi periódusidő csökkentésével a diszkrét idejű modell eredményei a folytonos idejű modell eredményeihez konvergálnak, ugyanakkor a beavatkozó jel értéke is nő a tranziensek elején.
A szabályozótervezés eredménye egy differenciaegyenlet, amely például a PI-szabályozóra a következőképp vezethető le. A szabályozó átviteli függvényéből indulunk ki:
 
 
ahonnan keresztbeszorzást követően írhatjuk, hogy
 
 
aminek az eltolási operátor értelmében a következő differenciaegyenlet felel meg:
 
(IV.47)
 
Ez az egyenlet adja a szabályozó algoritmusát, amit a mikrovezérlő programjában definiálnunk kell.
A PD-szabályozó a fentiekhez hasonló módon a következőképp realizálható:
 
(IV.48)
 
a PID-szabályozó algoritmusa pedig
 
(IV.49)
 
A P-szabályozó algoritmusa a legegyszerűbb: .
A beavatkozó jel -adik ütembeli értéke tehát a beavatkozó jel -edik, a hibajel -adik, -edik és -edik ütembeli értékeinek súlyozott összege. A szabályozó programja nagyon egyszerűen implementálható a
 
 
másodrendű rendszert általánosan megadó átviteli függvényből származtatható differenciaegyenlet általános formájában:
 
 
A benne szereplő együtthatókat a IV.5. és a IV.6. táblázatban összefoglaltuk 50 Hz, illetve 100 Hz mintavételi frekvencia mellett.
 
IV.5. táblázat. Az egyes szabályozók differenciaegyenletének paraméterei fázistartalék és 50 Hz mintavételi frekvencia mellett.
Szabályozó
P
0
0
0
,1241
0
0
PI
-1
,00
0
0
,0642
-0
,0566
0
PD
0
0
0
,4568
-0
,2705
0
PID
-1
,00
0
0
,3577
-0
,5272
0
,1868
 
IV.6. táblázat. Az egyes szabályozók differenciaegyenletének paraméterei fázistartalék és 100 Hz mintavételi frekvencia mellett.
Szabályozó
P
0
0
0
,1430
0
0
PI
-1
,00
0
0
,0720
-0
,0676
0
PD
0
0
1
,3851
-1
,0659
0
PID
-1
,00
0
1
,1911
-2
,0351
0
,8607
 
A mintavételes szabályozást megvalósító Arduino kódban először a megfelelő mintavételezési frekvenciát kell beállítani, amelyet itt a megszakítás hajt végre.
A függvénybe az 50 Hz-es mintavételezési frekvenciához a következő sorokat kell beilleszteni:
 
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 1249; //=(16*10^6)/(256*50)-1 (<65536)
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS12);
TIMSK1 |= (1 << OCIE1A);
 
A megszakítás a logikai változót állítja értékűre, ami egyébként :
 
ISR(TIMER1_COMPA_vect){
control = true;
}
 
Végül a függvény a következő sorokkal gyarapszik az 50 Hz-es mintavétel esetén:
 
if (control){
u = 0.1241*error; //P
u = u_old+0.0642*error-0.0566*error_old; //PI
u = 0.4568*error-0.2705*error_old; //PD
u = u_old+0.3577*error-0.5272*error_old+0.1868*error_old2; //PID
 
control = false;
}
 
A szabályozójel tehát csak a megszakítás alkalmával számítódik ki. Természetesen a feltételen belülre kerül a hibaszámítás, a változók frissítése és a szükséges változók kiíratása is.
A diszkrét idejű PID-szabályozók eredményeit külön nem részletezzük, jellegre a folytonos idejű PID-szabályozók eredményeihez nagyon hasonlót kapunk.
 

Lineáris rendszerek és szabályozások Arduino UNO mikrovezérlővel

Tartalomjegyzék


Kiadó: Akadémiai Kiadó

Online megjelenés éve: 2026

ISBN: 978 963 664 238 9

A könyv a lineáris rendszerek és lineáris szabályozások témaköreit dolgozza fel azzal a céllal, hogy az elméleti ismereteket egyszerűen kivitelezhető gyakorlati problémák megoldásával támassza alá, különös hangsúlyt fektetve ezért az Arduino UNO mikrovezérlő használatára. Fontos célunk, hogy a bemutatott demonstrációs eszközök egyszerűen kivitelezhetőek legyenek, így az eredmények könnyen rekonstruálhatóak, ugyanakkor jó alapot biztosítanak a továbblépéshez, bonyolultabb berendezések építéséhez, és az elmélet helyes alkalmazásához.

Az első rész a felhasznált hardvereket és szoftvereket mutatja be. A Matlab alapvető jelentőségű rendszerek analízisében, szabályozások tervezésében, és a különféle szimulációkban. A könyvbeli példákat Matlab környezetben dolgoztuk ki. Ezek bemutatása nagyon részletes, a példák nagyban segítik az elmélet megértését. Az Arduino UNO mikrovezérlőre és a hozzá kapcsolható egyéb hardverekre egyszerűségük és kedvező áruk miatt esett a választás. A Matlab környezetben tervezett szabályozókat, illetve a méréseket ezzel a mikrovezérlővel valósítjuk meg.

Számos nagyon jó könyv létezik, amelyek a szükséges mélységben vezetik be az Olvasót a Jelek és rendszerek, illetve a Szabályozástechnika témakörökbe. Néhányat a könyv végén található irodalomjegyzékben megadunk. Szándékosan csak magyar nyelvű könyveket sorolunk itt fel, a témakör hazai és nemzetközi irodalma óriási.

A második részben a Jelek és rendszerek témakörét dolgozzuk fel, ahol az elméleti háttér mellett illusztratív példákat hozunk, melyek segítségével könnyebben érthetővé válnak a tárgyalt fogalmak és módszerek. A témában számos kiváló irodalom fellelhető, melyekre hivatkozva tömör összefoglalását adjuk a témakörnek.

A harmadik rész a Szabályozástechnika területét járja körbe, ismét csak nagyon tömören, a klasszikus PID szabályozóktól az állapottér alapú szabályozásokig mutatjuk be a módszereket. Az elméleti alapokat egy konkrét példa illusztrálja.

A negyedik rész két esettanulmányt tárgyal nagyon részletesen. Az első egy egyenáramú motor, melynek modellezését, paramétereinek méréseken alapuló identifikálását és fordulatszámának szabályozását mutatjuk be. A másik egy instabil rendszer, egy lejtőn guruló golyó stabilizálását valósítja meg. Elvégezzük a demonstrációs eszközök aprólékos matematikai modellezését, a szabályozási körök elméleti tervezését, majd gyakorlati megvalósítását.

Reményeink szerint a könyv az Olvasó segítségére lesz a lineáris rendszerek és szabályozások megismerésében, valamint gyakorlatban való alkalmazásukban. A könyv jól használható az egyetemi mérnöki és informatikus oktatásban, különösen a témakörbe vágó szakdolgozatok, diplomamunkák és a hallgatói kutatómunka területén.

A közölt mintaprogramok szabadon felhasználhatók, továbbfejleszthetők.

Hivatkozás: https://mersz.hu/kuczmann-linearis-rendszerek-es-szabalyozasok-arduino-uno-mikrovezerlovel//

BibTeXEndNoteMendeleyZotero

Kivonat
fullscreenclose
printsave