I. Proste modele symulacyjne
Konstrukcja i weryfikacja modeli
Charakterystyki czasowe modeli obiektów
Procedura
Cel: Badanie reakcji obiektu na skokowe zakłócenia na wybranych wejściach, w różnych punktach
pracy. Symulacja ma być uruchamiana od dowolnego stanu ustalonego (punktu równowagi).
1. Określenie zmiennych wejściowych (U) i wyjściowych modelu (X)
2. Identyfikacja wartości współczynników (I część skryptu)
a) Z modelu statycznego na podstawie podanych wartości nominalnych i dodatkowych założeń
wyprowadzić wzory do obliczania współczynników modelu
b) Zainicjować w skrypcie zmienne wejściowe i wyjściowe, nominalne (tzn. zmienne wejściowe U
N
i
wyjściowe X
N
, pod które podstawia się podane wartości nominalne)
c) Wpisać w skrypcie wzory na współczynniki (k), wykorzystując zmienne nominalne
d) Zainicjować pozostałe zmienne (np. parametry opisujące dynamikę obiektu)
3. Ustalenie warunków początkowych (II część skryptu)
a) Zainicjować w skrypcie zmienne wejściowe, początkowe (U
0
) i nadać im wartości nominalne (U
0
=
U
N
)
b) Zainicjować w skrypcie zmienne wyjściowe, początkowe (X
0
) i nadać im wartości nominalne (X
0
=
X
N
)
4. Zdefiniowanie zakłóceń (III część skryptu)
a) Zainicjować w skrypcie zmienne opisujące zakłócenia na wejściach, o zerowych wartościach (dU
0
=
0)
5. Aplikacja modelu w oknie Simulink/Scicos.
a) Narysować schemat (jako parametry bloków używać zmienne zdefiniowane w skrypcie)
b) W „końcowych” blokach całkujących podstawić jako warunki początkowe odpowiednie zmienne X
0
(wartości początkowe pozostałych bloków całkujących pozostają na domyślnej wartości 0)
c) Jako źródła wejściowe zastosować bloki skoku, w których jako wartości początkowe zostaną
podstawione odpowiednie zmienne U
0
, a jako wartości końcowe – wyrażenia U
0
+ dU
0
. Warto
wprowadzić zmienną określającą czas wystąpienia skoku (np. wspólna zmienna czas_skok dla
wszystkich bloków skoku, o wartości ustawianej w skrypcie)
d) Uruchomić symulację przy zerowych zakłóceniach (dU
0
= 0), tzn. że układ jest w stanie równowagi -
jeśli model jest poprawny to na wyjściach występują stałe wartości, równe wartościom nominalnym
(jeśli nie, to jest błąd - prawdopodobnie na schemacie)
6. Ustalenie warunków początkowych w dowolnym punkcie równowagi
a) Z modelu statycznego na podstawie obliczonych współczynników i założonych wartości
początkowych zmiennych wejściowych (U
0
)
wyprowadzić wzory na zmienne wyjściowe (X
0
) w
stanie ustalonym
b) Wprowadź wzory na zmienne wyjściowe (X
0
) do skryptu (podmień podstawienia X
0
= X
N
w II części
skryptu na wzory)
c) Sprawdzić poprawność wzorów i skryptu – jeśli zmienne wejściowe mają wartości nominalne (U
0
=
U
N
), to obliczenie zmiennych wyjściowych ze wzorów też powinno dawać wartości nominalne (X
0
=
X
N
) (jeśli nie, to jest błąd w wyprowadzeniu wzoru lub w skrypcie)
7. Uruchomienie symulacji od dowolnego punktu równowagi
a) Ustawić w skrypcie wartości początkowe zmiennych wejściowych (np. względem wartości
nominalnych: U
0
= U
N
* 0.5, czyli 50% wartości nominalnej; U
0
= U
N
-1, czyli o 1 mniej niż wartość
nominalna)
b)
Uruchomić skrypt i symulację – ponieważ wartości wejściowe są stałe (brak zakłóceń), to na
wyjściach też powinny być stałe wartości (jeśli nie, to jest błąd na schemacie lub w
skrypcie)
8. Zbadanie reakcji na skokową zmianę wartości wybranych wielkości wejściowych
a) Ustawić w skrypcie wartość zakłócenia na wybranym wejściu, podając wprost wartość (np. dU
0
= 1)
lub względem wartości nominalnych (np. dU
0
= U
N
* 0.1, czyli 10% wartości nominalnej)
Przykład
Pomieszczenie z grzejnikiem elektrycznym – model uwzględnia pojemność cieplną jedynie dla
pomieszczenia C
vw
.
T
zew
T
wew
,V,ρ,c
p
q
g
k
cw
(
)
)
(
)
(
)
(
)
(
t
T
t
T
K
t
q
t
T
C
zew
wew
cw
g
wew
vw
−
−
=
˙
Stan ustalony:
(
)
)
(
)
(
)
(
0
t
T
t
T
K
t
q
zew
wew
cw
g
−
−
=
Identyfikacja:
(
)
zewN
wewN
gN
cw
T
T
q
K
−
=
/
Punkt równowagi:
0
0
0
/
zew
cw
g
wew
T
K
q
T
+
=
Matlab
Schemat modelu zapamiętany w pliku „grzejnik”
Skrypt inicjujący zmienne i uruchomiający symulację
model=
'grzejnik'
;
czas=30;
tmin=0.1;
tmax=10;
terr=1e-5;
opcje = simget(model);
opcje = simset(
'MaxStep'
, tmax,
'RelTol'
,terr);
%==========================
%wartości nominalne
Tzewn=-20;
Qgn=5000;
%5kW
Twewn=20;
%identyfikacja parametrów statycznych
Kcw = Qgn/(Twewn-Tzewn);
%parametry "dynamiczne"
cpp=1000;
%J/kg K, powietrze
rop=1.2;
%kg/m3, powietrze
Vwew=5*5*3;
%m3
Cvw=cpp*rop*Vwew;
%==========================
%warunki początkowe
Tzew0= Tzewn+0;
%+1
Qg0 = Qgn*1.0;
%*.8
%stan równowagi
Twew0 = Qg0/Kcw+Tzew0;
%==========================
%zakłócenie
czas_skok=10;
dTzew=1;
dQg=0;
Qg0
Qg0+dQg
Tzew0
Tzew 0+dTzew
Twew0
%==========================
%symulacja
[t]=sim(model,czas,opcje);
plot(t,aTwew,
'g'
),hold on, grid on, title(
'Twew, Tzew'
);
plot(t,aTzew,
'r'
)