Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Simulace dynamických systémů v Matlabu, teoretické základy

Podobné prezentace


Prezentace na téma: "Simulace dynamických systémů v Matlabu, teoretické základy"— Transkript prezentace:

1 Simulace dynamických systémů v Matlabu, teoretické základy
Stavový popis dynamického systému stavová vektorová rovnice x(t)=[x1(t) x2(t) xn(t)]T vektor stavových veličin, stav systému u(t)=[u1 (t) u2(t) um(t)]T - vektor vstupů f – vektor funkcí pravých stran stav systému – minimální počet veličin modelu pro které platí: x(0), u(h), h0, t  x(t) – stav v čase h=t výstupní rovnice systému y(t)=[y1(t) y2(t) yp(t)]T vektor výstupů g – vektor funkcí Pozn. - pro tentýž systém je možné volit různé vektory x - při tvorbě modelu se mohou některé proměnné xi ukázat jako nadbytečné a je nutné je vyloučit u(t) y(t) vnitřní struktura systém

2 Simulace dynamických systémů v Matlabu, teoretické základy
Struktura modelu ve stavové formulaci

3 Simulace dynamických systémů v Matlabu, teoretické základy
Stavový prostor a jeho vlastnosti stavový prostor – prostor vektoru stavových proměnných x(t)Rn n - řád systému – počet stavových proměnných – dimenze stavového prostoru – odpovídá složitosti systému stavová trajektorie – parametrické vyjádření křivky ve stavovém prostoru spojující všechny body x kterými systém při svém pohybu prošel

4 Simulace dynamických systémů v Matlabu, teoretické základy
Lineární dynamický systém ve stavové formulaci stavová vektorová rovnice ARnn – matice dynamiky BRnm – matice pravých stran výstupní rovnice systému CRpn, DRpm výhody: možnost aplikace Laplaceovy transformace snadná analýza dynamických vlastností vhodný výchozí model pro návrh lin. regulátorů (PID, stavový reg.) nevýhody: většina systémů reálného světa má nelineární charakter  omezená platnost lineárního modelu při popisu nelineárního systému

5 Simulace dynamických systémů v Matlabu, Simulink
nástroj pro modelování, simulaci a analýzu dynamických systémů podporuje tvorbu jak lineárních tak i nelineárních modelů, ve spojitém i diskrétním čase velice user-friendly prostředí, umožňuje vytvářet jak jednoduché tak i velmi složité modely interaktivné formou obsahuje celou řadu knihoven funkcí

6 Simulace dynamických systémů v Matlabu, Simulink
Začínáme se Simulinkem otevřeme nové okno modelu v menu Simulinku File-new-model z knihoven Simulinku postupě taháme bloky do okna modelu a nastavíme do nich potřebné parametry bloky pospojujeme nastavíme délku simulace spustíme simulaci Vytvořme model pro nalezení přechodové odezvy následujícího systému:

7 Simulace dynamických systémů v Matlabu, Simulink
Začínáme se Simulinkem - knihovny Comonly used blocks – bloky z níže uvedených knihoven, které se nejčastěji používají Continuous - spojité lineární systémy (integrator, transfer function, state-space....) Math operations – maticové operace (sum, gain, product,...) Sinks –zobrazení a uložení výsledků (scope, display, to worspace...) Sources – definice vstupů (step, signal generator, from file...) User-defined functions – umožňuje zadat funkce a zabudovat do simulinku m-fily Triky s bloky: Rotace bloku – Ctrl + R Klonování bloků – uchopení pravým tlačítkem myši a přetažení Rychlé spojení bloků – klik na blok - zmáčknout Ctrl – klik na druhý blok

8 Simulace dynamických systémů v Matlabu, Simulink
Příklad tříramenná hadicová vodováha pro vytyčení roviny h1, h2, h3- výšky hladin v koncovkách q1, q2, q3- hmotn. průtoky ve spoj. hadicích ZZH S – plocha průřezu válce - hustota vody F – plocha průřezu hadice g – tíhové zrychlení L – délka hadicového spoje R – hydraulický odpor při průtoku hadicovými spoji

9 Simulace dynamických systémů v Matlabu, Simulink
Uvažujme: S=F=3cm2, L=10m, r =1000kg/m3, g=9.81m/s2, R=5m/s Stavový popis systému Ustálený stav: Dynamika systému Vlastní čísla matice A (výsledek příkazu eig(A)) dvojnásobný komplexně sdružený pól,  dynamika stabilní, kmitavá

10 Simulace dynamických systémů v Matlabu, Simulink
S=3*e-4; Ro=1000; F=S; L=10; R=5; g=9.82; a=1/(S*Ro); K=Ro*g*F/L; r=R/L; hs=1; h10=1.5; h20=0.3;

11 Simulace dynamických systémů v Matlabu, Simulink
S=3*e-4; Ro=1000; F=S; L=10; R=5; g=9.82; a=1/(S*Ro); K=Ro*g*F/L; r=R/L; hs=1; h10=1.5; h20=0.3; Lineární modely je výhodné modelovat pomocí bloku State-Space, do kterého se zadávají matice systému A: [0 0 -a a;0 0 -a -2*a;2*K K -r 0;-K K 0 -r] B: [0;0;-3*K;0] C: eye(4) D: zeros(4,1) Init. cond.: [h10;h20;0;0] State-Space

12 Simulace dynamických systémů v Matlabu, Simulink

13 Simulace dynamických systémů v Matlabu, Simulink
Příklad nelineární systém Van der Pole u(t) = us = konst. A=0.1

14 A*(1-u(1)^2)*u(2)-u(1)+u(3)
Simulace dynamických systémů v Matlabu, Simulink Příklad nelineární systém Van der Pole u(t) = us = konst. A=0.1 Sestavení nelineárních modelů se zjednodušší použitím bloků Fcn, kam se zadá funkce pravé strany příslušné stavové rovnice. Proměnné se do bloku poté přivedou přes multiplexor mux. Všechny signály svedené do funkce přes mux jsou uvnitř funkce k dispozici ve vektoru u. Danou funkci je nutné zadat do bloku Fcn v syntaxi tohoto vektoru u, zde: kde u(1)=x1, u(2)=x2, u(3)=u A*(1-u(1)^2)*u(2)-u(1)+u(3)

15 Simulace dynamických systémů v Matlabu, Simulink
Příklad nelineární systém Van der Pole Stavové trajektorie systému v závislosti na parametru u

16 Simulace dynamických systémů v Matlabu, Simulink
Příklad nelineární systém Lorenzův oscilátor A = 20, B = 40, C = 8/3 simlorenz.mdl viz. web v bloku To Workspace nastavíme save format na array

17 Simulace dynamických systémů v Matlabu, Simulink
Příklad nelineární systém Lorenzův oscilátor Stavovou trajektorii tak jak je na obr zobrazíme pomocí příkazů: plot3(x(:,1),x(:,2),x(:,3)) set(gca,'View',[ ]) xlabel('x_1') ylabel('x_2') zlabel('x_3') grid

18 Teoretické zákady numerického řešení počítačového modelu
Simulace dynamických systémů v Matlabu, teorie Teoretické zákady numerického řešení počítačového modelu Problém: numericky simulovat (modelovat) chování systému (odezvy zahrnující vliv počátečních podmínek a změn vstupů) Stavová rovnice Numerický výpočet Výstupní rovnice Algebraický přepočet Dáno: Hledáme: Ze znalosti vektoru stvu x v čase mohu vypočítat stav v čase pomocí následující integrální rovnice, která vychází z rovnice stavové

19 Metody Runge-Kutta Simulace dynamických systémů v Matlabu, teorie
Eulerova metoda (ode1) Heunova metoda (ode2) Substitucí jsme přešli na diskrétní čas k - krok metody

20 Simulace dynamických systémů v Matlabu, teorie
Runge-Kutta 4. řádu (ode4) vytváří si pomocný bod uprostřed vzorkovacího intervalu jednoduchá, ale robustní při kombinaci s algoritmem pro adaptaci Dt velmi výkonná existují R-K metody i řádu r=3,5,6,7

21 Simulace dynamických systémů v Matlabu, teorie
Příklad Řešme pomocí Eulerovy metody odezvu systému Van der Pole pro u = 0, A=0.1, A=0.1; u=0; dt=0.03; t=0:dt:100; x(1:2,1)=[0;5]; for k=2:length(t) x1=x(1,k-1); x2=x(2,k-1); x(1,k)=x1+dt*x2; x(2,k)=x2+dt*(A*x2*(1-x1^2)-x1+u); end plot(x(1,:),x(2,:)) grid, xlabel('x_1'),ylabel('x_2')

22 Spouštění modelu Simulinku z příkazové řádky Matlabu
Simulace dynamických systémů v Matlabu, Simulink Spouštění modelu Simulinku z příkazové řádky Matlabu sim('model') – spustí Simulinkový model ‘model.mdl‘ s parametry nastavenými v modelu. [t,x]= sim('model',tmax,options) - spustí ‘model.mdl‘ s parametry nastavenými v options, s délkou simulace tmax. Výstupem jsou vektor času t a vektor stavů (hodnot na výstupu integrátorů) v matici x. options=simget('model') – zjistí aktuálně nastavené parametry simulace v model.mdl a uloží je do strukturované proměnné options options= simset(options,’par1’,value,....) – updatuje options s nově nastavenými parametry Pozn. Pro ukládání výsledných dat je vhodé použít blok Simulinku To Workspace, kde se dá zvolit typ datového výsledku (ve volbě save format – doporučuji array) a kde je možné výsledný vektor vzorkovat s definovanou periodou vzorkování (ve volbě sample time – když je -1 tak je vzorkování identické s krokem simulace).

23 Simulace dynamických systémů v Matlabu, Simulink
Příklad Porovnejme výsledky simulace přechodové charakteristiky systému prvního řádu (skok vstupu v čase t=1) s využitím různých metod fixed-step solverů s krokem 2 V simulinku sestavíme model prvrad.mdl, viz obr., poté pomocí příkazů simget a simset měníme solvery od ode1 do ode5 a pro každé nastavení spustíme simulaci příkazem sim, tmax=50. options=simget('prvrad'); for k=1:5 switch k case 1 options=simset(options,'solver','ode1','FixedStep',2); case 2 options=simset(options,'solver','ode2'); case 3 options=simset(options,'solver','ode3'); case 4 options=simset(options,'solver','ode4'); case 5 options=simset(options,'solver','ode5'); end [t,x]=sim(‘prvrad’,50,options) X(:,k)=x; end plot(t,X) xlabel('t'),ylabel('y') legend('ode1','ode2','ode3','ode4','ode5')

24 Simulace dynamických systémů v Matlabu, Simulink
Jak je patrné, v modelu prvrad.mdl není žádný blok pro uložení žádaného výstupu. Vzhledem k tomu, že výstupem je zde přímo výstup integrátoru, tedy stav modelu, lze jej spolu s časem získat přímo příkazem sim (v menu Configuration parameters modelu – Select: Data Import/Export – je vhodné zaškrtnou tout a xout.


Stáhnout ppt "Simulace dynamických systémů v Matlabu, teoretické základy"

Podobné prezentace


Reklamy Google