Kuczmann Miklós

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


IV.2.5.10. Mintavételes kétszabadságfokú szabályozó tervezése

A mintavételes kétszabadságfokú szabályozóval megvalósított szabályozási rendszer blokkvázlata a IV.48. ábrán látható, az ábrán az egyes jelek -transzformáltjait és az átviteli függvényeket is feltüntettük. A pozícióreferencia és a golyó mért távolságának -transzformáltja és , a beavatkozó jel -transzformáltja pedig .
 
IV.48. ábra. A kétszabadságfokú szabályozó blokkvázlata.
 
A szakasz mintavételes modelljének átviteli függvénye
 
(IV.83)
 
A számláló és a nevező relatív prímek, azaz nincs közös osztójuk.
A szabályozó két blokkból, egy visszacsatoló és egy előrecsatoló blokkból áll, a tervezendő három polinom pedig , és . A tervezés során meg kell határozni az egyes polinomok fokszámát és a polinomegyütthatókat.
Az irodalomban a polinomok , és jelölése terjedt el, itt is ezt használjuk. Emiatt kapott a referenciajel és a rendszer kimenőjelének transzformáltja ref, illetve r indexet, mert az jelölést ezekben a z-transzformáltakban is meg kívánjuk tartani.
A blokkvázlat alapján felírható a beavatkozó jel és a kimeneti jel -transzformáltja:
 
(IV.84)
 
átrendezve pedig mindkettő kifejezhető a referenciajel -transzformáltjával:
 
(IV.85)
 
A tervezés több lépésből áll, ezeket a következőkben részletezzük.
A tervezés első lépéseként elő kell írni a zárt rendszer referenciamodelljének kívánt átviteli függvényét alakban, azaz
 
(IV.86)
 
ahol a polinomfokszám esetleges bővítését biztosító polinom (az indexben szereplő o betű az observer, vagyis megfigyelő szóra utal, a polinom neve pedig megfigyelőpolinom vagy observerpolinom).
A zárt kör referenciamodelljét a domináns póluspár megadásával definiálhatjuk a folytonos időben, amit aztán át kell vinni a diszkrét idejű megfelelőjébe. A domináns póluspár egy konjugált komplex pár az alábbi jelölésekkel:
 
(IV.87)
 
ahol és jelöli a komplex póluspár valós és képzetes részét, továbbá és a póluspár csillapítási tényezője és sajátfrekvenciája.
A domináns póluspár paraméterei tervezhetők a zárt rendszer ugrásválaszának túllövése és a szabályozási idejének megadásával (példaként itt -os sávot megadva):
 
(IV.88)
 
(IV.89)
 
A referenciamodellhez esetleg szükséges további pólusokat és a megfigyelő polinomjához szükséges gyököket az alábbi ökölszabály szerint adhatjuk meg:
 
(IV.90)
 
így ezek a pólusok gyorsabbak lesznek a domináns póluspárnál. Ezen pólusok szerepére visszatérünk.
A domináns póluspár és a további pólusok megadása tehát a folytonos időben történik, a szabályozótervezés viszont diszkrét időben. Szükséges tehát a fenti pólusoknak megfelelő diszkrét idejű pólusok meghatározása a
 
(IV.91)
 
összefüggés értelmében, amelyhez a mintavételi periódusidő is szükséges. Jelen alkalmazásban .
Ahogy a PID-szabályozótervezésnél már láthattuk, a gyors szabályozás gyorsan változó és esetenként nagy jelei rángathatják a rudat, ami a labda pattogásához vezethet. Ezt kerülendő, célszerű olyan domináns póluspárt választani, amely mellett a szabályozás pontos és kielégítő sebességű. A IV.49. ábrán és , valamint értékekhez tartozó domináns póluspárral kapott ugrásválaszjelek láthatóak. A értéknél nagyobbat ennél az elrendezésnél semmiképp sem érdemes választani, mivel túl nagy lengések alakulnak ki, illetve a rúd mozgása nagyon gyors. Ez az ábrából is jól kivehető. A jó választás lehet, a labda mozgása sima, a szervo a rudat nem rángatja, a működés kielégítő.
Megjegyezzük, hogy a fent említett érték megválasztását néhány próba előzte meg. Nagyobb érték esetén (például ) a szabályozás lassú, a szabályozó erősítései túl kicsi értékek. Csökkentve a szabályozási idő értékét (például ), azt tapasztalható, hogy a szabályozó erősen rángatja a rudat, a labda pattog a rúdon, a szervo pedig a nagy jelek miatt sokszor telítésbe kerül, a működés előnytelen.
A mechanikai kialakítás miatt tehát a és választás alkalmasnak bizonyul. Emellett és , továbbá a diszkrét idejű pólusok a átalakítást követően , , .
A fenti pólusok a következőképp számíthatók Matlab utasításokkal:
 
Tsz = 2.5;
dv = 5/100;
xi = 1/sqrt(1+(pi/log(dv))^2);
w0 = 3/Tsz/xi;
p1 = exp((-xi*w0 + sqrt(-1)*w0*sqrt(1-xi^2))*Ts);
p2 = exp((-xi*w0 - sqrt(-1)*w0*sqrt(1-xi^2))*Ts);
pcinf = exp(-3*w0*Ts);
poinf = exp(-5*w0*Ts);
 
IV.49. ábra. A zárt kör ugrásválasza különböző domináns póluspár mellett.
 
A következő tervezési lépésben a polinomokkal foglalkozunk. A polinom felbontható alakban, ahol és a kiejthető és a nem kiejthető zérusokat tartalmazza, azaz (deg jelöli a polinom fokszámát (degree))
 
 
Nem kiejthető az egységsugarú körön kívüli zérus és a negatív valós tengelyre eső zérus. Kiejthető az ezekkel komplemens halmaz, l. IV.50. ábra.
 
IV.50. ábra. A és polinomok gyökeinek elhelyezkedése a komplex számsíkon.
 
Az integrátorok száma legyen először . A szakaszmodell kétszeres integráló jellegű, emiatt azt várhatjuk, hogy nincs szükség az integrátor beépítésére.
A zárt kör (IV.86) alakban felírt átviteli függvényét a következőképp lehet átalakítani annak érdekében, hogy a kiejthető tagokkal egyszerűsíteni tudjunk:
 
 
ahol az és a polinomokat írtuk át. Az polinom a szabályozó nevezőjében szerepel, ahova az integrátort alakban be lehet vinni. Végeredményben
 
(IV.92)
 
Az első egyenletből a polinom egyszerűen kiadódik. Utóbbi egy diophantoszi egyenlet, melynek megoldásai az és az polinomok.
A tervezés során tehát az alábbi diophantoszi egyenletet kell megoldani ():
 
(IV.93)
 
A polinomok fokszámára a következő feltételek érvényesek:
 
 
azaz a polinomok a következő alakban írhatók fel:
 
 
A értékét a végértéktétel értelmében úgy állítjuk be, hogy stacionárius állapotban a zárt rendszer egységugrásjelre egységnyi értékkel válaszoljon.
Az egyes polinomokat rendezve kapjuk a diophantoszi egyenletben szereplő polinomokat:
 
 
amelyekkel
 
 
Kifejtve
 
 
A változó egyforma hatványaihoz tartozó együtthatókat egyenlővé téve írható fel az alábbi egyenletrendszer, amely az ismeretlen kitevőket szolgáltatja:
 
 
Nagyobb méretű mátrix esetén a Matlab programban kihasználható, hogy az egyenletrendszer mátrixa ún. Töplitz-blokkokból áll. Az egyenletrendszert megoldva megkapjuk a kérdéses együtthatókat:
 
 
majd az polinom együtthatói mellett megkapjuk az és a polinomokat is:
 
 
Az implementálás során (IV.84) helyett az alábbi formulát célszerű alkalmazni:
 
(IV.94)
 
aminek az alábbi differenciaegyenlet felel meg:
 
 
Az Arduino környezetben a kódrészlet az alábbi:
 
u = -R[1]*u_old+T[0]*Ref+T[1]*Ref_old-S[0]*r/1000.0-S[1]*r_old/1000.0;
 
Ehhez a program elején az alábbi tömböket kell definiálni:
 
float R[2] = {1.0000, -0.2583};
float S[2] = {-12.5689, 11.3341};
float T[2] = {-2.1259, 0.8912};
 
A változók frissítését itt nem ismételjük meg.
A 80 mm, 120 mm és 160 mm referenciajelre adott mért és számított ugrásválaszok szokásos jellege a IV.51. ábrán látható.
IV.51. ábra. A kétszabadságfokú szabályozó integrátor nélkül stabil, de pontatlan irányítást eredményez ().
 
Az integrátorok száma legyen ezután , így az egységugrás jellegű referenciajel pontos követése is lehetségessé válik a laboratóriumi modellen is.
A tervezés során az alábbi diophantoszi egyenletet kell megoldani:
 
(IV.95)
 
A polinomok fokszámára a következő feltételek érvényesek:
 
 
azaz a polinomok a következő alakban írhatók fel:
 
 
Az egyes polinomokat rendezve kapjuk a diophantoszi egyenletben szereplő polinomokat:
 
 
amelyekkel
 
 
A változó egyes hatványaihoz tartozó együtthatókat egyenlővé téve írható fel az alábbi egyenletrendszer, amely az ismeretlen kitevőket szolgáltatja:
 
 
Az egyenletrendszert megoldva az együtthatók az alábbiak:
 
 
az , az és a polinomok pedig:
 
 
Az alaknak megfelelő differenciaegyenlet végül az alábbi:
 
 
Az Arduino környezetben a kódrészlet az alábbi:
 
u = -R[1]*u_old-R[2]*u_old2+T[0]*Ref+T[1]*Ref_old+T[2]*Ref_old2
-S[0]*r/1000.0-S[1]*r_old/1000.0-S[2]*r_old2/1000.0;
 
Ehhez a program elején az alábbi tömböket kell definiálni:
 
float R[3] = {1.0000, -0.8929, -0.1071};
float S[3] = {-46.7249, 84.9149, -38.9072};
float T[3] = {-2.1259, 1.7823, -0.3736};
 
A változók frissítését itt nem ismételjük meg.
A 80 mm, 120 mm és 160 mm referenciajelre adott mért és számított ugrásválaszok a IV.52. ábrán láthatóak. A bevitt integrátor egyértelműen javítja a stacionárius válasz jellegét.
 
IV.52. ábra. Az integrátorral kiegészített kétszabadságfokú szabályozó stabil és pontos irányítást tesz lehetővé ().
 
A teljesség kedvéért listázzuk a fenti számításokat végző Matlab programrészletet:
 
i = 0; % vagy i = 1
 
Bminus = [WP_DI.num{1}(2) WP_DI.num{1}(3)];
Bplus = 1;
A = WP_DI.den{1};
 
% Fokszámfeltételek előírása
degAm = 1 + 1;
degS = 2 + i - 1;
degAo = 2 + i - 1;
degR1v = 1;
Am = poly([p1 p2 ones(1,degAm-2)*pcinf]);
Ao = poly(ones(1,degAo)*poinf);
 
% A diophantoszi egyenlet
int = 1;
for j = 1:i
int = conv(int,[1 -1]);
end
alfa = conv(A,int);
beta = Bminus;
gamma = conv(Am,Ao);
 
dioA = [toeplitz(alfa,1),...
toeplitz([beta zeros(1,i+1)],[beta(1) zeros(1,i+1)])];
dioB = gamma(2:length(gamma))'-[alfa(2:length(alfa)) 0]';
x = dioA\dioB;
 
R1v = [1 x(1)];
S = x(2:length(x))';
Bmv = polyval(Am,1)/polyval(Bminus,1);
T = Bmv*Ao;
R = conv(conv(Bplus,int),R1v);
 

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