Wp r o wa d z e ni e d o o pi s u, a n a l iz y i sy m ul a c ji d y n a m ik i o b i e k t ó w
ACzemplik (rękopis)
- 47 -
8.
Alternatywne metody symulacji modeli
8.1. Wprowadzenie
Podstawową formą modeli dynamiki obiektów o parametrach skupionych są równania
różniczkowe zwyczajne. Zasady konstrukcji i weryfikacji poprawności schematów tych
równań, wykorzystywane w badaniach symulacyjnych, nie zależą od liniowości układu.
Oczywiście schematy układów liniowych są znacznie prostsze. Ponadto modele liniowe
można jeszcze przekształcić i zapisać jako równania stanu w formie macierzowej (
) lub
przedstawić w postaci transmitancji (
). Dysponując jedną z tych form można jeszcze
uprościć tworzenie schematu wykorzystując specjalne bloki, przeznaczone do wprowadzenia
odpowiednich macierzy równań stanu czy współczynników transmitancji. Modele tego typu
można przygotować do symulacji również w skrypcie, używając odpowiedniej funkcji
zależnie od formy modelu.
Istnieje jeszcze jedna prosta forma przygotowania modelu (niezależnie od jego liniowości)
– przez zdefiniowanie go w pliku funkcyjnym. Jest to najbardziej pierwotna forma modelu w
programach
symulacyjnych,
związana
z
bezpośrednio
algorytmami
całkowania
numerycznego.
8.2. Przykład – definicja modeli w blokach, funkcjach i plikach
8.2.1.
Bloki na schemacie graficznym
Na schematach symulacyjnych dostępne są następujące bloki modeli liniowych:
blok
Matlab/Simulink
Scicos/Xcos
Octave
równania stanu
State-Space
---
transmitancja
Transfer Fcn
---
Oferowane bloki mają swoją specyfikę i ograniczenia w zastosowaniu
1
. W przypadku równań
stanu (Rys. II-20) blok jest przygotowany do wprowadzenia modelu postaci wektorowej:
Du
Cx
y
Bu
Ax
x
+
=
+
=
&
(II-22)
Rys. II-20. Blok równań stanu
gdzie wektor u zawiera zmienne wejściowe, a
wektor y - zmienne wyjściowe. Wymiary
macierzy A, B, C, D muszą się zgadzać, tak
móc wykonać operacje na macierzach.
Na wyjściu bloku dostępny jest tylko wektor y, jeśli więc istnieje potrzeba obserwowania
zmiennych stanu x, to trzeba zdefiniować zmienne wyjściowe, które będą im odpowiadać.
Blok umożliwia podanie wektora wartości początkowych dla zmiennych stanu x
0
, można
więc uruchamiać symulacje od różnych warunków początkowych.
Podstawowa forma bloku transmitancji (Rys. II-21) jest typu SISO:
)
(
...
...
)
(
1
0
1
0
1
1
s
u
a
s
a
s
a
b
s
b
s
b
s
x
n
n
m
m
+
+
+
+
+
+
=
(II-23)
Rys. II-21. Blok transmitancji
czyli ma jedną zmienną wejściową u
1
i
jedną wyjściową – zmienną stanu x
1
.
Natomiast postać wektorów mają przekazywane do bloku współczynniki wielomianu licznika
i mianownika. Programy symulacyjne zwykle akceptują tylko takie transmitancje, w których
stopień licznika jest mniejszy niż stopień mianownika (ewentualnie równy). Z definicji
transmitancja jest modelem, w którym występuje zerowy warunek początkowy. Zazwyczaj
nie stanowi to problemu ponieważ w badaniach podaje się na wejście sygnał o zerowej
wartości początkowej. Jeśli konieczne jest uruchomienie symulacji od niezerowego stanu
równowagi, to można po prostu przesunąć sygnał wejściowy o wartość początkową x0.
1
Nowsze wersje programów oferują dodatkowe wersje bloków bez ograniczeń, jednak są to de facto bloki, które
nie ujawniają ograniczeń na zewnątrz ale je obchodzą za pomocą wewnętrznych konwersji.
A: I.1.6
A:I.1.5
Wp r o wa d z e ni e d o o p is u , a n a l i zy i s y m ul a c j i d y n a m i k i o b i e k t ó w
ACzemplik (rękopis)
- 48 -
8.2.2.
Funkcje w skryptach
Badania modeli istniejących w postaci macierzowych równań stanu czy transmitancji
można zrealizować bez rysowania schematów – wystarczy zastosowanie prostych funkcji:
funkcja
Matlab/Simulink
Scicos/Xcos
Octave
równania stanu
ss
transmitancja
tf
wymuszenia
step, impulse
Pierwsza grupa funkcji umożliwia definicję modelu za pomocą równań stanu lub
transmitancji i zapamiętanie go pod wybraną nazwą. Parametry i ograniczenia funkcji są takie
same jak analogicznych bloków. Natomiast druga grupa funkcji służy do uruchamiania
symulacji, która polega na zadaniu standardowego zakłócenia (skoku jednostkowego,
impulsu) oraz wygenerowaniu wykresu przedstawiającego odpowiedź modelu.
8.2.3.
Definiowanie modeli w pliku funkcyjnym
Definicja modelu pliku funkcyjnym wymaga przedstawienia go w postaci układu równań
pierwszego rzędu
(
), na przykład w przypadku modelu van der Pola:
(
)
x
x
x
c
t
x
−
−
=
&
&
&
2
1
)
(
→
(
)
−
−
=
=
1
2
2
2
2
1
1
x
x
x
c
x
x
x
&
&
(II-24)
Badany model należy zapisać w pliku funkcyjnym (zgodnie z zasadami konstrukcji takich
plików w danym programie symulacyjnym):
Matlab
Scilab (wer.≥5.2)
Octave
function[xprim] = vdp(t, x)
global c;
xprim = [x(2); ...
c*(1-x(1)^2)*x(2)-x(1)];
function[xprim] = vdp(t, x)
global c;
xprim(1) = x(2);
xprim(2)=c*(1-x(1)^2)*x(2) - x(1);
endfunction
Zakładając, że „vdp” z odpowiednim rozszerzeniem jest nazwą pliku zawierającego model,
uruchomienie symulacji można zrealizować w skrypcie, na przykład:
Matlab
Scilab (wer.≥5.2)
Octave
global c
c=1; tend=100
x0 = [-2.5; 2.5];
[T,x]=ode45('vdp',[0 tend], x0);
plot( x(:,1), x(:,2) )
c=1; tend=100
x0 = [-2.5; 2.5];
t = linspace(0, tend,500);
exec("vdp.sci");
[x] = ode(x0, 0, t, vdp);
plot( x(1,:), x(2,:) )
8.3. Zadania – kaskada liniowa
Proponowane ćwiczenia polegają na powtórzeniu badań zrealizowanych wcześniej (p.II.7)
z wykorzystaniem omówionych bloków, funkcji i plików. O ile to możliwe badania powinny
być przeprowadzone w tych samych warunkach. To pozwoli z jednej strony zweryfikować
poprawność modeli, a z drugiej strony określić ograniczenia poszczególnych metod.
1º Przygotuj zlinearyzowany model kaskady niewspółdziałającej w postaci:
a) macierzowej,
b) transmitancji.
2º Wykonaj aplikację modeli (1a, 1b):
a) na schemacie za pomocą odpowiednich bloków,
b) w skrypcie za pomocą odpowiednich funkcji.
3º Wyznacz odpowiedzi skokowe modeli.
4º Wykonaj aplikację dokładnego modelu kaskady niewspółdziałającej – jak?
5º Wyznacz odpowiedzi skokowe modelu.
Uwagi do wykonania:
- wykonaj wykresy umożliwiające porównanie wyników z kolejnych punktów,
- o ile możliwe lub ma sens, to zbadaj reakcję modelu w różnych punktach pracy.
Porównaj wyniki badań - przedstaw spostrzeżenia i wnioski w punktach.
Które wnioski powtórzyłyby się gdyby badaniom została poddana kaskada współdziałająca?
A:
I.1.5.2