„Szabályozástechnika - Folytonosidejű állapotteres szabályozók tervezése” változatai közötti eltérés
| 168. sor: | 168. sor: | ||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | <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. | % 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 | % Az Nx-et és Nu-t tartalmazó vektor szétválasztása | ||
Nx= | Nx=N(1:2) % Annyi elem, ahány állapotunk van -> Nx=N(1:n) | ||
Nu= | Nu=N(end) % Skalár | ||
% A megfelelő Simulink-modell megnyitása | % A megfelelő Simulink-modell megnyitása | ||
open('continuous_3'); | open('continuous_3'); | ||
% Most már zérus kezdeti értékekkel indítjuk a | % 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. | % 1 méterrel kimozdítsuk és stabilan ott tartsuk a testet. | ||
| 186. sor: | 216. sor: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Terhelésbecslő tervezése == | == Terhelésbecslő tervezése == | ||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | <syntaxhighlight lang="matlab" style="font-size: 140%;"> | ||