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'); 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'); a1=input('a1='); b1=input('b1='); disp(' dla liczby zespolonej postaci c2=a2+jb2'); 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)'); M1=input(' M1 ='); fi1=input('f1='); disp(' dla liczby zespolonej postaci c2= M2 exp(jfi2)'); 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)'); f=exp(a*t) disp(' dla zaleznosci f(t)=sin(a*t)'); f=sin(a*t) disp(' dla zaleznosci f(t)=d(sin(a*t))dt'); % domyslnie liczona jest pochodna po czasie f=diff(sin(a*t)) 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)
% transformata odwrotna laplacea disp(' dla zaleznosci F(s)=3*s+10/(12+7s+s^2)'); syms s %definicja symboli % 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 % 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) %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) subplot(3,2,2) 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)
subplot(3,2,4) 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) subplot(3,2,6) Zadania 1 2 s + 10s+ 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 współczynnik ksi. Zaobserwować jak wpływa ksi na przebieg charakterystyki? Użyć listy poleceń 2. 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 1+ s G(s) = 2 s + 10ξs 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 współczynnik ksi. 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ą.