Podstawy Automatyki – ćwiczenia w Matlab z

Transkrypt

Podstawy Automatyki – ćwiczenia w Matlab z
Podstawy Automatyki – ćwiczenia w Matlab z przykładami
% wyznaczenie pierwiastkow rownania char
%dane jest rownanie postaci
% a(n)*x^x+a(n-1)*x^(n-1)+....a0*x^0=0
% podaj macierz wspolczynnikow wielomianu
% a=[a(n) a(n-1)
a(0)]
% komenda ROOTS(C)
% przyklad
disp(' dla rownania postaci A2*x^2+A1*x-A0=0');
disp(' podaj wspolczynniki');
A(1)=input('A2=');
A(2)=input('A1=');
A(3)=input('A0=');
disp(' macierz A wspolczynnikow rowania');
A
Pierwiastki=Roots(A);
disp(' pierwiastki rowania wynosza');
Pierwiastki(1)
Pierwiastki(2)
disp(' po podstawieniu do rownania uzyskuje sie');
wynik1=A(1)*(Pierwiastki(1)^2)+A(2)*(Pierwiastki(1))+A(3)
wynik2=A(1)*(Pierwiastki(2)^2)+A(2)*(Pierwiastki(2))+A(3)
% przeksztalcenie liczb zespolonych
disp(' dla liczby zespolonej postaci a+jb');
disp(' podaj ');
a=input('a=');
b=input('b=');
disp(' podales liczbe');
c=a+b*j
disp(' liczba sprzezona to');
c1=a-b*j
disp(' Modul liczby wynosi');
Modul=sqrt(a^2+b^2)
disp(' kat w radianach wynosi');
if a~=0
fi=atan(b/a)
else fi=pi/2
end
disp(' kat w stopniach wynosi');
alfa=fi*360/(2*pi)
% Operacje na liczbach zespolonych
disp(' dla liczby zespolonej postaci c1=a1+jb1');
disp(' podaj ');
a1=input('a1=');
b1=input('b1=');
disp(' dla liczby zespolonej postaci c2=a2+jb2');
disp(' podaj ');
a2=input('a2=');
b2=input('b2=');
disp(' podales liczby');
c1=a1+b1*j
c2=a2+b2*j
disp(' dodawanie');
c=c1+c2
disp(' mnozenie');
c=c1*c2
disp(' dzielenie');
c=c1/c2
% Operacje na liczbach zespolonych
disp(' dla liczby zespolonej postaci c1=|M1|exp(jfi1)');
disp(' podaj ');
M1=input('|M1|=');
fi1=input('f1=');
disp(' dla liczby zespolonej postaci c2=|M2|exp(jfi2)');
disp(' podaj ');
M2=input('|M2|=');
fi2=input('|fi2|=');
disp(' podales liczby');
c1=M1*exp(j*fi1)
c2=M2*exp(j*fi2)
disp(' dodawanie');
c=c1+c2
disp(' mnozenie');
c=c1*c2
disp(' dzielenie');
c=c1/c2
% transformata laplacea
disp(' dla zaleznosci f(t)=exp(a*t)');
syms a t f %definicja symboli
f=exp(a*t)
disp(' tranfl\formata lapclacea wynosi ');
laplace(f)
disp(' dla zaleznosci f(t)=sin(a*t)');
syms a t f %definicja symboli
f=sin(a*t)
disp(' tranfl\formata lapclacea wynosi ');
laplace(f)
disp(' dla zaleznosci f(t)=d(sin(a*t))dt');
syms a t f %definicja symboli
% domyslnie liczona jest pochodna po czasie
f=diff(sin(a*t))
disp(' tranfl\formata lapclacea wynosi ');
laplace(f)
disp(' dla zaleznosci f(t)=exp(-a*t)*sin(w*t)');
syms a t f w %definicja symboli
% domyslnie liczona jest pochodna po czasie
f=exp(-a*t)*sin(w*t)
disp(' tranfl\formata lapclacea wynosi ');
laplace(f)
% transformata odwrotna laplacea
disp(' dla zaleznosci F(s)=3*s+10/(12+7s+s^2)');
syms s %definicja symboli
%disp(' tranfl\formata lapclacea wynosi ');
F=(3*s+10)/(s^2+7*s+12)
ilaplace(F)
disp(' dla zaleznosci F(s)=4/(s*(2*s+1)');
syms s %definicja symboli
%disp(' tranfl\formata lapclacea wynosi ');
F=4/(s*(2*s+1))
ilaplace(F)
%wyswietlenie odpowiedzi czasowej przy danej transmitancji
disp(' podaj wspolczynniki licznika L1*s+L2');
syms s
L(1)=input('L1=');
L(2)=input('L2=');
disp(' podaj wspolczynniki mianownika (M1*s+M2)*(M3*s+M4)*(M5*s+M6)');
M(1)=input('M1=');
M(2)=input('M2=');
M(3)=input('M3=');
M(4)=input('M4=');
M(5)=input('M5=');
M(6)=input('M6=');
disp(' dana transmitancja');
Fs=((L(1)*s)+L(2))/((M(1)*s+M(2))*(M(3)*s+M(4))*(M(5)*s+M(6)))
Licznik=[L(1) L(2)]
Mianownik1=conv([M(1) M(2)], [M(3) M(3)])
Mianownik2=conv(Mianownik1, [M(5) M(6)])
disp(' czas odpowiedzi impulsowej');
t=input('czas=');
g1=tf(Licznik, Mianownik2)
step(g1,t)
%wyswietlenie odpowiedzi czasowej przy danej transmitancji
disp(' 20(s-4)/((s+1)(s+2)(s+3))');
disp(' czas odpowiedzi impulsowej');
t=input('czas=');
Licznik=[20 -80]
Mianownik1=conv([1 1], [1 2])
Mianownik2=conv(Mianownik1, [1 3])
g1=tf(Licznik, Mianownik2)
subplot(3,2,1)
step(g1,t)
subplot(3,2,2)
impulse(g1,t)
disp(' 20(s+3)/((s-1)(s^2 +2s+2))');
Licznik=[20 60]
Mianownik1=conv([1 -1], [1 2 2])
g1=tf(Licznik, Mianownik1)
subplot(3,2,3)
step(g1,t)
subplot(3,2,4)
impulse(g1,t)
disp(' 20/((s+2)(s^2 + 2))');
Licznik=[20 40]
Mianownik1=conv([1 2], [1 0 2])
g1=tf(Licznik, Mianownik1)
subplot(3,2,5)
step(g1,t)
subplot(3,2,6)
impulse(g1,t)
Zadania
1
s 2 + 10 s + 20
Znaleźć odpowiedź skokową oraz impulsową.
Charakterystyki częstotliwościowe
Lista poleceń 1.
>> syms k a b
>>k=10
>>a=1
>>b=2
>> sys=tf(k, [a b])
>> bode(sys)
Lista poleceń 2.
w = logspace(d1,d2,n) – generowanie n punktów czestotliwosci w rozmieszczonych
równomiernie w skali logarytmicznej w przedziale 10d1...10d2
w = logspace(d1,d2) – standardowo 50 punktów; np. logspace(-1,1) wygeneruje
50 punktów w przedziale 0.1...10
[Mod, F] = bode(L,M,w)– wyznaczenie modułu Mod i fazy F transmitancji L/M dla
czestotliwosci w, gdzie F jest w stopniach (wyjatkowo w Matlabie)
subplot(211) – wybór górnej połowy ekranu do umieszczenia wykresu
semilogx(w,Mod), grid – wykres modułu w skali logarytmicznej
subplot(212) – wybór dolnej połowy ekranu
semilogx(w,F), grid – wykres fazy
figure – nowe okno wykresu
Przykład 1.
Zbadać obiekt o transmitacji
G(s) = k
Użyć listy poleceń 1.
Przykład 2.
G(s) = ks
Użyć listy poleceń 1.
Przykład 3.
Dana jest transmitancja członu II rzędu.
Narysować w Matlabie charakterystyki częstotliwościowe?
Wykreślić kilka charakterystyk częstotliwościowych zmieniając
Zaobserwować jak wpływa ksi na przebieg charakterystyki ?
Użyć listy poleceń 2.
współczynnik
ksi.
współczynnik
ksi.
Odp.
L=2;
w = logspace(-1,1,10);
ksi=0.1;
M=[1 2*ksi 1];
[Mod, F] = bode(L,M,w);
subplot(211);
semilogx(w,Mod), grid
subplot(212);
semilogx(w,F), grid
Przykład 4.
Zmienić trasmitancję na
G(s) =
1+ s
2
s + 10xs - 2
L=[1 1];
w = logspace(-1,1,100);
ksi=0.008;
M=[1 10*ksi -2];
[Mod, F] = bode(L,M,w);
subplot(211);
semilogx(w,Mod), grid;
subplot(212);
semilogx(w,F), grid;
Wykreślić kilka charakterystyk częstotliwościowych zmieniając
Zaobserwować jak wpływa ksi na przebieg charakterystyki?
Użyć listy poleceń 2.
Przykład 5.
Wykreślić charakterystykę częstotliwościową członu całkującego z inercją.