„Szabályozástechnika - Szakasz megadása” változatai közötti eltérés
A VIK Wikiből
aNincs szerkesztési összefoglaló |
aNincs szerkesztési összefoglaló |
||
(7 közbenső módosítás, amit egy másik szerkesztő végzett, nincs mutatva) | |||
1. sor: | 1. sor: | ||
{{Vissza|Szabályozástechnika}} | {{Vissza|Szabályozástechnika}} | ||
__TOC__ | |||
Az alábbi típuspéldákat érdemes alaposan áttanulmányozni és MEGÉRTENI, ugyanis a vizsgán ezek közül<br />valamelyik módon lesz megadva a szakasz, amivel dolgoznunk kell. Ha azonban Matlab-ba rosszul visszük be<br />a szakaszt, akkor onnét szerencsétlen esetben MINDEN numerikus eredményünk rossz lesz, ami azt eredményezi,<br />hogy kerek NULLA pontot kapunk az egész 25 pontos feladatra!<br />A vizsgán ugyanis ha egy numerikus eredmény rossz, akkor arra a feladatrészre automatikusan NULLA pontot adnak! | |||
== Szakasz megadása az állapotváltozós leírás normál alakjából == | == Szakasz megadása az állapotváltozós leírás normál alakjából == | ||
55. sor: | 59. sor: | ||
% | % | ||
% Vezessünk be új jelölést a két állapotváltozóra: x1 = y és x2 = y' | % Vezessünk be új jelölést a két állapotváltozóra: x1 = y és x2 = y' | ||
% Az állapotváltozós leírás normál alakjához n+1 egyenletre van szükségünk (x1', x2' és y) | % Az állapotváltozós leírás normál alakjához n+1 egyenletre van szükségünk (x1', x2' és y) | ||
% Az első egyenlet kapásból látszik az állapotváltozó választásból: x1' = x2 | % Az első egyenlet kapásból látszik az állapotváltozó választásból: x1' = x2 | ||
% A harmadik egyenlet szintén egyszerűen adódik, hiszen: y = x1 | % A harmadik egyenlet szintén egyszerűen adódik, hiszen: y = x1 | ||
% A második egyenlethez, pedig helyettesítsünk be a szakasz differenciálegyenletébe (F = u) | % A második egyenlethez, pedig helyettesítsünk be a szakasz differenciálegyenletébe (F = u) | ||
% u = k*x2 + m*x2' --> x2' = -k/m*x2 + 1/m*u | % u = k*x2 + m*x2' --> x2' = -k/m*x2 + 1/m*u | ||
% | % | ||
76. sor: | 80. sor: | ||
% Innét már könnyen megadhatóak a mátrixok a Matlab-nak: | % Innét már könnyen megadhatóak a mátrixok a Matlab-nak: | ||
A=[ | A=[0 1; 0 -k/m] | ||
B=[ | B=[0 1/m]' | ||
C=[ | C=[1 0] | ||
D=[0] | D=[0] | ||
84. sor: | 88. sor: | ||
sys=ss(A,B,C,D) | sys=ss(A,B,C,D) | ||
% Az átviteli függvény meghatározására két lehetőség van innentől. | |||
% Állapotteres leírásból átviteli függvény: | |||
wp=tf(sys) | |||
% A differenciálegyenletből is eljuthatunk ide egy lépésben is. | |||
% Először Laplace transzformáljuk a differenciálegyenletet, az ismert tételeket felhasználva: | |||
% | |||
% U(s) = k*s*Y(s) + m*s^2*Y(s) | |||
% | |||
% Az átviteli függvény definíció szerint: | |||
% | |||
% Y(s) 1 | |||
% W(s) = ------ = ------------- | |||
% U(s) m*s^2 + k*s | |||
% | |||
% Ebből már könnyen megadható a szakasz átviteli függvénye a Matlab-nak: | |||
wp=tf(1,[m k 0]) | |||
% Az átviteli függvény zérus-pólus-erősítés alakban: | |||
wp_zpk=zpk(wp) | |||
</syntaxhighlight> | |||
== Szakasz állapotteres leírásának megadása az átviteli függvényéből == | |||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | |||
% Elsősorban ajánlom figyelmetekbe az 1. gyakorlat 16. ellenőrző kérdésének kidolgozását ;) | |||
% Adott a szakasz átviteli függvénye: | |||
% | |||
% 1 | |||
% w(s) = --------- | |||
% s^2 + 1 | |||
% | |||
% Adjuk meg a szakasz állapotváltozós leírásának normál alakját az x = [y y']' | |||
% állapotváltozó választás mellett! | |||
% Először vezessünk be új változókat a könnyebb írhatóság végett: x1 = y és x2 = y' | |||
% Az állapotváltozós leírás normál alakjához n+1 egyenletre van szükségünk (x1', x2' és y) | |||
% Az első egyenlet kapásból látszik az állapotváltozó választásból: x1' = x2 | |||
% A harmadik egyenlet szintén egyszerűen adódik, hiszen: y = x1 | |||
% A második egyenlethez pedig csináljuk ugyanazt, mint az előző feladatban, csak pont visszafelé: | |||
% | |||
% 1 Y(s) | |||
% w(s) = --------- = ------ -----> Y(s) * (s^2 +1) = U(s) | |||
% s^2 + 1 U(s) | |||
% | |||
% s^2*Y(s) + Y(s) = U(s) | |||
% | |||
% s*( s*Y(s) ) + Y(s) = U(s) | |||
% | |||
% Most végezzük el az inverz-Laplace transzformációt, az ismert tételeket felhasználva ( s*Y(s) = y' ) | |||
% | |||
% y'' + y = u -----> (y')' + y = u -----> x2' + x1 = u -----> x2' = -x1 + u | |||
% | |||
% Tehát összegezve: | |||
% | |||
% x1' = x2 | |||
% x2' = -x1 + u | |||
% y = x1 | |||
% | |||
% Ezekből az első feladat alapján már felírhatóak a mátrixok: | |||
% | |||
% ( 0 1 ) ( 0 ) | |||
% A = ( -1 0 ) B = ( 1 ) | |||
% | |||
% C = ( 1 0 ) D = ( 0 ) | |||
% | |||
% Innét már könnyen megadhatóak a mátrixok a Matlab-nak: | |||
A=[0 1; -1 0] | |||
B=[0 1]' | |||
C=[1 0] | |||
D=[0] | |||
% Ezekből előállítható a szakasz állapotteres leírása: | |||
sys=ss(A,B,C,D) | |||
% Ebből pedig ellenőrzésképpen a szakasz átviteli függvénye: | |||
wp=tf(sys) | |||
% FIGYELEM: Az ROSSZ megoldás, hogyha először bevisszük Matlab-ba az átviteli függvényt, | |||
% majd abból csinálunk Matlab-ban állapotteres leírást! | |||
% A Matlab ugyanis tf -> ss áttérés esetén mindig irányíthatósági lépcsős alakban adja meg a rendszert! | |||
% Tudvalevő, hogy egy rendszer állapotváltozóinak sorrendje az állapotváltozó vektorban tetszőleges lehet, | |||
% csupán az A,B,C mátrixok különböznek, ettől még mindig ugyanazt a rendszert írják le. | |||
% A rendszernek viszont csak egyetlen átviteli függvénye van, így ss -> tf áttérés esetén mindig ugyanazt | |||
% az eredményt kapjuk. Ha tehát mi tf -> ss áttéréssel oldjuk meg a feladatot, rossz eredményre jutunk, | |||
% mivel az irányíthatósági lépcsős alakban x = [y' y]' az állapotváltozó vektor! | |||
% Innentől pedig kinulláztuk a 25 pontot, mivel minden numerikus eredményünk rossz lesz! | |||
% | |||
% Példaképpen nézzük meg mit is kapnánk a ROSSZ módszerrel: | |||
wp=tf(1,[1 0 1]) | |||
sys=ss(wp) | |||
% | % Látható, hogy az A mátrix traszponálódott, a B és C mátrixok elemei pedig felcserélődtek. | ||
93. sor: | 194. sor: | ||
[[ | [[Kategória:Villamosmérnök]] |
A lap jelenlegi, 2014. március 13., 17:19-kori változata
Az alábbi típuspéldákat érdemes alaposan áttanulmányozni és MEGÉRTENI, ugyanis a vizsgán ezek közül
valamelyik módon lesz megadva a szakasz, amivel dolgoznunk kell. Ha azonban Matlab-ba rosszul visszük be
a szakaszt, akkor onnét szerencsétlen esetben MINDEN numerikus eredményünk rossz lesz, ami azt eredményezi,
hogy kerek NULLA pontot kapunk az egész 25 pontos feladatra!
A vizsgán ugyanis ha egy numerikus eredmény rossz, akkor arra a feladatrészre automatikusan NULLA pontot adnak!
Szakasz megadása az állapotváltozós leírás normál alakjából
% Adott a szakasz állapotváltozós leírásának normál alakja:
%
% x1' = x3 x1' = x3
% x2' = x4 szebben x2' = x4
% x3' = -3*x1 + 2*x2 + u ---------> x3' = -3*x1 +2*x2 u
% x4' = 2*x1 - 2*x2 felírva x4' = 2*x1 -2*x2
% y = x2 y = x2
%
% Első körben írjuk fel ebből az A,B,C és D mátrixokat.
% Figyelem: A mátrixok felírása közben fokozottan ügyeljetek, hogy nehogy elcsússzatok egy oszlopot!
%
% ( 0 0 1 0 ) ( 0 )
% ( 0 0 0 1 ) ( 0 )
% A = ( -3 2 0 0 ) B = ( 1 )
% ( 2 -2 0 0 ) ( 0 )
%
% C = ( 0 1 0 0 ) D = ( 0 )
%
% Innét már könnyen megadhatóak a mátrixok a Matlab-nak:
A=[0 0 1 0; 0 0 0 1; -3 2 0 0; 2 -2 0 0]
B=[0 0 1 0]'
C=[0 1 0 0]
D=[0]
% Ezekből előállítható a szakasz állapotteres leírása:
sys=ss(A,B,C,D)
% Ebből pedig a szakasz átviteli függvénye:
wp=tf(sys)
% Az átviteli függvény zérus-pólus-erősítés alakban:
wp_zpk=zpk(wp)
Szakasz megadása a differenciálegyenletéből
% Adott a szakasz differenciálegyenlete:
%
% F = k*y' + m*y''
%
% Ahol a beavatkozó jel az "F" erő, a kimenet pedig az "y".
% Adjuk meg a szakasz állapotváltozós leírásának normál alakját az x = [y y']'
% állapotváltozó választás mellett!
%
% Vezessünk be új jelölést a két állapotváltozóra: x1 = y és x2 = y'
% Az állapotváltozós leírás normál alakjához n+1 egyenletre van szükségünk (x1', x2' és y)
% Az első egyenlet kapásból látszik az állapotváltozó választásból: x1' = x2
% A harmadik egyenlet szintén egyszerűen adódik, hiszen: y = x1
% A második egyenlethez, pedig helyettesítsünk be a szakasz differenciálegyenletébe (F = u)
% u = k*x2 + m*x2' --> x2' = -k/m*x2 + 1/m*u
%
% Tehát összegezve:
%
% x1' = x2
% x2' = -k/m*x2 + 1/m*u
% y = x1
%
% Ezekből az előző feladat alapján már felírhatóak a mátrixok:
%
% ( 0 1 ) ( 0 )
% A = ( 0 -k/m ) B = ( 1/m )
%
% C = ( 1 0 ) D = ( 0 )
%
% Innét már könnyen megadhatóak a mátrixok a Matlab-nak:
A=[0 1; 0 -k/m]
B=[0 1/m]'
C=[1 0]
D=[0]
% Ezekből előállítható a szakasz állapotteres leírása:
sys=ss(A,B,C,D)
% Az átviteli függvény meghatározására két lehetőség van innentől.
% Állapotteres leírásból átviteli függvény:
wp=tf(sys)
% A differenciálegyenletből is eljuthatunk ide egy lépésben is.
% Először Laplace transzformáljuk a differenciálegyenletet, az ismert tételeket felhasználva:
%
% U(s) = k*s*Y(s) + m*s^2*Y(s)
%
% Az átviteli függvény definíció szerint:
%
% Y(s) 1
% W(s) = ------ = -------------
% U(s) m*s^2 + k*s
%
% Ebből már könnyen megadható a szakasz átviteli függvénye a Matlab-nak:
wp=tf(1,[m k 0])
% Az átviteli függvény zérus-pólus-erősítés alakban:
wp_zpk=zpk(wp)
Szakasz állapotteres leírásának megadása az átviteli függvényéből
% Elsősorban ajánlom figyelmetekbe az 1. gyakorlat 16. ellenőrző kérdésének kidolgozását ;)
% Adott a szakasz átviteli függvénye:
%
% 1
% w(s) = ---------
% s^2 + 1
%
% Adjuk meg a szakasz állapotváltozós leírásának normál alakját az x = [y y']'
% állapotváltozó választás mellett!
% Először vezessünk be új változókat a könnyebb írhatóság végett: x1 = y és x2 = y'
% Az állapotváltozós leírás normál alakjához n+1 egyenletre van szükségünk (x1', x2' és y)
% Az első egyenlet kapásból látszik az állapotváltozó választásból: x1' = x2
% A harmadik egyenlet szintén egyszerűen adódik, hiszen: y = x1
% A második egyenlethez pedig csináljuk ugyanazt, mint az előző feladatban, csak pont visszafelé:
%
% 1 Y(s)
% w(s) = --------- = ------ -----> Y(s) * (s^2 +1) = U(s)
% s^2 + 1 U(s)
%
% s^2*Y(s) + Y(s) = U(s)
%
% s*( s*Y(s) ) + Y(s) = U(s)
%
% Most végezzük el az inverz-Laplace transzformációt, az ismert tételeket felhasználva ( s*Y(s) = y' )
%
% y'' + y = u -----> (y')' + y = u -----> x2' + x1 = u -----> x2' = -x1 + u
%
% Tehát összegezve:
%
% x1' = x2
% x2' = -x1 + u
% y = x1
%
% Ezekből az első feladat alapján már felírhatóak a mátrixok:
%
% ( 0 1 ) ( 0 )
% A = ( -1 0 ) B = ( 1 )
%
% C = ( 1 0 ) D = ( 0 )
%
% Innét már könnyen megadhatóak a mátrixok a Matlab-nak:
A=[0 1; -1 0]
B=[0 1]'
C=[1 0]
D=[0]
% Ezekből előállítható a szakasz állapotteres leírása:
sys=ss(A,B,C,D)
% Ebből pedig ellenőrzésképpen a szakasz átviteli függvénye:
wp=tf(sys)
% FIGYELEM: Az ROSSZ megoldás, hogyha először bevisszük Matlab-ba az átviteli függvényt,
% majd abból csinálunk Matlab-ban állapotteres leírást!
% A Matlab ugyanis tf -> ss áttérés esetén mindig irányíthatósági lépcsős alakban adja meg a rendszert!
% Tudvalevő, hogy egy rendszer állapotváltozóinak sorrendje az állapotváltozó vektorban tetszőleges lehet,
% csupán az A,B,C mátrixok különböznek, ettől még mindig ugyanazt a rendszert írják le.
% A rendszernek viszont csak egyetlen átviteli függvénye van, így ss -> tf áttérés esetén mindig ugyanazt
% az eredményt kapjuk. Ha tehát mi tf -> ss áttéréssel oldjuk meg a feladatot, rossz eredményre jutunk,
% mivel az irányíthatósági lépcsős alakban x = [y' y]' az állapotváltozó vektor!
% Innentől pedig kinulláztuk a 25 pontot, mivel minden numerikus eredményünk rossz lesz!
%
% Példaképpen nézzük meg mit is kapnánk a ROSSZ módszerrel:
wp=tf(1,[1 0 1])
sys=ss(wp)
% Látható, hogy az A mátrix traszponálódott, a B és C mátrixok elemei pedig felcserélődtek.