„Szabályozástechnika - Diszkrétidejű állapotteres szabályozók tervezése” változatai közötti eltérés
| 234. sor: | 234. sor: | ||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | <syntaxhighlight lang="matlab" style="font-size: 140%;"> | ||
% Tegyük fel, hogy a bemenetre rárakódik egy szakaszosan hosszú ideig konstans zaj. Az állapotmegfigyelővel | |||
% ezt is becsülni tudjuk és ezt a becsült értéket kivonhatjuk a bemenetből (beavatkozó jelből), így | |||
% kompenzálhatjuk a zavarás hatását. Ezt úgy oldjuk meg, hogy a zajt egy új állapotváltozónak (xd) tekintjük. | |||
% Mivel a zaj szakaszosan hosszú ideig konstans, ezért xd[k+1]=xd[k], a bemenettől pedig független, ezért a | |||
% differenciaegyenlete: xd[k+1] = 0*x[k] + xd[k] + 0*u[k]. Viszont a többi változó differenciaegyenletébe már | |||
% beleszól az xd zavarást modellező fiktív állapotváltozó, méghozzá a Gamma bemeneti mátrixon keresztül: | |||
% x[k+1] = Phi*x[k] + Gamma*( xd[k]+u[k] ) | |||
% Tehát a kibővített rendszerünk állapotegyenletei: | |||
% | |||
% ( x[k+1] ) ( Phi Gamma ) ( x[k] ) ( Gamma ) | |||
% ( xd[k+1] ) = ( 0 1 ) * ( xd[k] ) + ( 0 ) * u[k] | |||
% | |||
% ( x[k] ) | |||
% y[k] = ( C 0 ) * ( xd[k] ) | |||
% | |||
% Új jelöléseket bevezetve a kibővített rendszerünk állapotegyenletei: | |||
% | |||
% xtilde[k+1] = Phitilde * xtilde[k] + Gammatilde * u[k] | |||
% y[k] = Ctilde * xtilde[k] | |||
% | |||
% Tehát az állapotmegfigyelőnket most ehhez a kibővített "tilde" rendszerhez kell megterveznünk. | |||
% A módosult állapotmegfigyelő differenciaegyenlete a hatásvázlatról leolvasható! | |||
% Az terhelésbecslővel kiegészített szabályzó hatásvázlata: | % Az terhelésbecslővel kiegészített szabályzó hatásvázlata: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 243. sor: | 266. sor: | ||
% A kibővített rendszer mátrixai | % A kibővített rendszer mátrixai | ||
Phitilde=[Phi Gamma; 0 0 1]; % n darab nulla és fixen 1 darab egyes (SISO) | Phitilde=[Phi Gamma; 0 0 1]; % n darab nulla és fixen 1 darab egyes (SISO) | ||
Gammatilde=[Gamma;0]; % Fixen 1 darab nulla a végére (SISO) | Gammatilde=[Gamma;0]; % Fixen 1 darab nulla a végére (SISO) | ||
Ctilde=[C 0]; % Fixen 1 darab nulla a végére (SISO) | Ctilde=[C 0]; % Fixen 1 darab nulla a végére (SISO) | ||
% A megfigyelő sajátértékeit tartalmazó vektorban | % A megfigyelő sajátértékeit tartalmazó vektorban zoinf most egyel nagyobb | ||
% multiplicitással szerepel, hiszen felvettünk egy új (fiktív) állapotot | % multiplicitással szerepel (n+1), hiszen felvettünk egy új (fiktív) állapotot | ||
phiotilde=[zoinf zoinf zoinf]; | phiotilde=[zoinf zoinf zoinf]; | ||
| 258. sor: | 281. sor: | ||
% A megfelelő Simulink-modell megnyitása | % A megfelelő Simulink-modell megnyitása | ||
open('discrete_4'); | open('discrete_4'); | ||
% t=10 secnél egy egységugrás jellegű zavarás adódik a szakasz bemenetére. | |||
% A modellben a K,Nu és Nx paraméterek ugyanazok, mint amiket korábban meghatároztunk. | |||
% FONTOS: A Simulink alapból 10 secundumig számol, szóval ezt az időt át kell írni 20-ra az ablak tetején! | |||
% Várakozás billentyűlenyomásra | % Várakozás billentyűlenyomásra | ||