Modelování a simulace dynamických systémů
B3B35MSDPříklady k předvedení na "přednášce"
Jednoduchý RLC obvod
Uvažujte jednoduchý RLC obvod na obrázku
Stavový model pro takový obvod při uvažování iL a uC coby stavů a u0 coby vstupu a i2 coby výstupu, je dán
\(\begin{align}
\begin{bmatrix}
\frac{\mathrm d u_C(t)}{\mathrm d t} \\ \frac{\mathrm d i_L(t)}{\mathrm d t}
\end{bmatrix}
&=
\begin{bmatrix}
-\frac{R_1+R_2}{R_1R_2+C} & 0\\ 0 & 0
\end{bmatrix}
\begin{bmatrix}
u_C(t) \\ i_L(t)
\end{bmatrix}
+
\begin{bmatrix}
\frac{1}{R_1 C} \\ \frac{1}{L}
\end{bmatrix}
u_0\\
i_2(t)
&=
\begin{bmatrix}
\frac{1}{R_2} & 0
\end{bmatrix}
\begin{bmatrix}
u_C(t) \\ i_L(t)
\end{bmatrix}
+
0 u_0.
\end{align}\)
Hodnoty fyzikálních parametrů prvků si zvolte.
- vytvořte v Matlabu objekt typu ss, který stavový model popisuje, a s tímto modelem simulujte odezvu na jednotkový skok v napětí.
- tu odezvu simulujte i voláním obecného solveru pro obyčejné diferenciální rovnice (např. ode45)
- vytvořte v Matlabu přenosovou funkci pomocí konstruktoru tf (lze i převodem ze stavového modelu)
- vytvořte v Matlabu matice E, A, B, C a D definující lineární deskriptorový model a tento vytvořte v Matlabu pomocí konstruktoru dss. Simulujte odezvu jako v předchozích případech.
- tu odezvu simulujte i voláním obecného solveru pro obyčejné diferenciální rovnice (vhodný v této situaci je ode15s, ode23s nebo ode15i)
Jednoduchý RLC obvod - singularita při modelování
Modifikujte předchozí obvod prohozením prvků L a C
- Sestavte lineární deskriptorový model a "manuálně" převeďte na stavový model, aby stavové veličiny byly opět iL a uC. Ten převod se nepodaří, proč?
- Pokuste se odsimulovat odezvu na jednotkový skok v napětí pomocí obecného solveru pro obyčejné diferenciální rovnice? Nepodaří se to. Proč? Je index problému větší než 1 nebo ne?
- Okomentujte, co se to tady vlastně fyzikálně děje. Je možné takový děj popsat stavovým modelem pro zmíněné dvě veličiny?
Paralelní spojení kondenzátorů
Strukturální problém, který se objevil už v předchozím obvodu, je bez rozptylujících detailů zobrazen v plnosti při uvažování paralelního spojení dvou kondenzátorů. Uvažujte, že oba mají stejnou kapacitu, ale před spojením mají jiné napětí. DAE model výsledného spojení obsahuje dvě diferenciální rovnice (pro každý kondenzátor jednu) a pak dvě rovnice vyjadřující propojení (napětí na jednom kondenzátoru je stejné jako napětí na druhém, a proud tekoucí z jednoho kondenzátoru je roven proudu tekoucímu do druhého).
- Napište si ty matice A a E definující deskriptorový model a ukažte, zda lze model převést na stavový se dvěma stavy.
Kyvadlo
Uvažujte ideální kyvadlo na obrázku
Jakkoliv jistě umíte napsat diferenciální rovnici druhého řádu pro úhel vychýlení kyvadla, tentokrát to udělejme jinak: pozici kyvadla budeme charakterizovat pomocí jejich x a y souřadnic. Výsledné dvě diferenciální rovnice (druhý Newtonův zákon uplatněný zvlášť v každém směru) jsou
\(
\begin{align}
m \dot v_x(t) &= -\sin\theta(t)F(t)\\
m \dot v_y(t) &= mg-\cos\theta(t)F(t),
\end{align}
\)
a současně musí platit omezení
\(x^2+y^2=L^2.\)
Pro vámi zvolené hodnoty parametrů odsimulujte s využitím některého ze solverů ode15s, ode23s, ode15i. Nepodaří se to. Proč? Co hlásí solver?
DAE popis a algebraické smyčky
Uvažujte zpětnovazební propojení dvou LTI stavových modelů prvního řádu, jako na screenshotu ze Simulinku
Zpětnovazební propojení lze zapsat jako soustavu dvou diferenciálních rovnic (za každý z obou dílčích systémů jedna) a dvou algabraických (vlastně dokonce lineárních rovnic) vyjadřujících propojení (výstup z jednoho je vstupem do druhého a naopak).
- Sestavte matice A a E lineárního deskriptorového modelu
- Jaká je podmínka, že je model převeditelný na stavový model (s původními dvěma stavovými veličinami)? Simulujte odezvu na nenulové počáteční stavy. A to jak voláním solveru ode15s nebo ode23s. A to jak voláním solveru ode15s nebo ode23 s, tak spuštěním simulace přímo v Simulinku (pokud neumíte, naučte se i volat přímo z Matlabského kódu). Jak to dopadne? Co Matlab hlásí?, tak spuštěním simulace přímo v Simulinku (pokud neumíte, naučte se i volat přímo z Matlabského kódu pomocí sim). Jak to dopadne? Co Matlab hlásí?
- Pro situaci, kdy je tato podmínka porušena, vyzkoušejte provést simulaci. A to jak voláním solveru ode15s nebo ode23 s, tak spuštěním simulace přímo v Simulinku (pokud neumíte, naučte se i volat přímo z Matlabského kódu). Jak to dopadne? Co Matlab hlásí?