„Szabályozástechnika - Folytonosidejű állapotteres szabályozók tervezése” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
| 105. sor: | 105. sor: | ||
% sebességgel mozog a nullponja felé. A PLAY gombra nyomva láthatjuk, hogy a | % sebességgel mozog a nullponja felé. A PLAY gombra nyomva láthatjuk, hogy a | ||
% lengőrendszer a szabályzó segítségével beáll a nullhelyzetébe. | % lengőrendszer a szabályzó segítségével beáll a nullhelyzetébe. | ||
% Várakozás billentyűlenyomásra | |||
pause | |||
</syntaxhighlight> | |||
== Alapjel miatti korrekció == | |||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | |||
% Amikor az állapot-visszacsatolás 0-ba (alaphelyzetbe) viszi a rendszert, a beavatkozó jel is 0 lesz, | |||
% azaz beáll a stabilis egyensúlyi állapot. Azonban a szabályozásnak nem feltétlenül az a célja, | |||
% hogy 0-ba irányítsunk, hanem célszerű, ha alapjelet is tud követni az eszköz. Ehhez az állapot-visszacsatolót | |||
% "átverjük", az alábbi hatásvázlatnak megfelelően (Nx - oszlopvektor, Nu - skalár): | |||
</syntaxhighlight> | |||
[[File:szabtech_alapjel_követés_ábra.JPG]] | |||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | |||
% Adott a szakaszunk állapotegyenletei: x' = A*x + B*u és y = C*x (legyen D=0) | |||
% Egységugrás alapjel követése esetén célunk, hogy állandósult állapotban a kimenet 1 értékű legyen. | |||
% Továbbá tudjuk, hogy állandósult állapotban, azaz "végtelenben" x'(inf) = 0. | |||
% A hatásvázlatról látszik, hogy állandósult állapot esetén a K erősítő bemenetén 0 kell, hogy legyen. | |||
% Ekkor x(inf) = Nx*r(inf) = Nx, mivel r(inf)=1 egységugrás alapjel esetén. | |||
% Ha azonban a K bemenete 0, akkor a kimenete is 0, így u(inf) = Nu*r(inf) = Nu. | |||
% Ezek lapján felírható az alábbi egyenletrendszer: | |||
% | |||
% 0 = A*x(inf) + B * u(inf) = A*Nx + B*Nu | |||
% 1 = C*x(inf) = C*Nx | |||
% | |||
% Melyeket mátrixos alakban felírva: | |||
% | |||
% ( A B ) ( Nx ) ( 0 ) | |||
% ( C 0 ) * ( Nu ) = ( 1 ) | |||
% | |||
% Melyből már kapásból adódik az Nx és Nu erősítések: | |||
% | |||
% ( Nx ) ( A B )^-1 ( 0 ) | |||
% ( Nu ) = ( C 0 ) * ( 1 ) | |||
% A keresett erősítésvektor meghatározása: | |||
N=inv([A B; C 0])*[0;0;1]; | |||
% n darab 0-át kell az oszlopvektorba pakolni és a végére egyetlen 1-est. | |||
% Az Nx-et és Nu-t tartalmazó vektor szétválasztása | |||
Nx=N(1:2) % Annyi elem, ahány állapotunk van -> Nx=N(1:n) | |||
Nu=N(end) % Skalár | |||
% A megfelelő Simulink-modell megnyitása | |||
open('continuous_3'); | |||
% Most már zérus kezdeti értékekkel indítjuk a lengőrendszert és cél, hogy | |||
% 1 méterrel kimozdítsuk és stabilan ott tartsuk a testet. | |||
% Várakozás billentyűlenyomásra | % Várakozás billentyűlenyomásra | ||
| 158. sor: | 210. sor: | ||
% Ugyanaz a felállás mint az előbb, csak most állapotmegfigyelővel. | % Ugyanaz a felállás mint az előbb, csak most állapotmegfigyelővel. | ||
% Látható, hogy a szabályzás ugyanolyan hatékony maradt. | % Látható, hogy a szabályzás ugyanolyan hatékony maradt. | ||
% Várakozás billentyűlenyomásra | % Várakozás billentyűlenyomásra | ||