Aplikační počítačové prostředky X15APP MATLAB cvičení 4 Ing. Jan Špetlík http://heat.feld.cvut.cz/ http://k315.feld.cvut.cz/download/ http://k315.feld.cvut.cz/vyuka/matlab/ spetlij@fel.cvut.cz - v předmětu emailu „APP” - dodelat funkce a zaklady programovani ? Katedra elektroenergetiky, Fakulta elektrotechniky ČVUT, Technická 2, 166 27 Praha 6
Funkce v Matlabu v m-file ... sqr(3) sqr.m – soubor v aktuálním adresáři function hh=sqr(b) hh = b^2; vstupní parametr výstupní parametr jméno funkce
DC motor mate priklad: OTAZKY: 1) kolik bude rovnic ? 2) jake rovnice ? 3) umi to nekdo z vas napsat (aspon jednu)
Schema a rovnice 1) Mame rovnice, vite jak vyjadrite moment M ? 2) Jak se vyjadri Ui ?
Rovnice 1) Jak by jste resili tyto rovnice, napada vas neco ? Pro reseni techto diferencialnich metod, muzeme pouzit nekterou numerickou metodu, nebo pro vas zname veci jako je .... (Laplaceova transoformace).
Laplaceova transformace Tak dokaze nekdo po pripomenuti LT prepsat puvodni rovnice do tvaru LT.
Rovnice po LT
Rovnice po LT + nulove PP pro nulové počáteční podmínky se rovnice zjednoduší
Řešení pro otáčky
Hodnoty konstant J=0,01 kg.m2 B=0,1 N.m.s K=0,01 N.m.A-1 R=1 W L=0,5 H Ke=Km jsou stejné, protože výkon elektrický a mechanický se rovnají
Matlab - řešení clear;clc; J=0.01; B=0.1; K=0.01; R=1; L=0.5; U=10; num=K*U; den=[(J*L) ((J*R)+(L*B)) ((B*R)+K^2)]; % Control System Toolbox motor=tf(num,den); step(motor,0:0.1:3);
Matlab - Graf otáček
Simulink
Simulink - nastavení Scope
Simulink - graf Scope
Simulink - grafy v Matlabu subplot(2,1,1); plot(ScopeData.time,ScopeData.signals(1).values); title('i'); subplot(2,1,2); plot(ScopeData.time,ScopeData.signals(2).values); title('Omega');
Simulink - grafy v Matlabu
Programování Cykly for - end while - end Konstrukce if – else - end switch – case try - catch programovani - nepovina cast
For for x = array (commands) end for n=1:10 % 10:-1:1 x(n)=sin(n*pi/10);
While while expression (commands) end num=0; EPS=1; while (1+EPS)>1 EPS=EPS/2; num=num+1;
If, else, end if expression (commands) end (commands evaluted if True) (commands evaluted if False)
if expression1 (commands evaluted if expression1 True) elseif expression2 (commands evaluted if expression2 True) elseif expression3 (commands evaluted if expression3 True) elseif expression4 (commands evaluted if expression4 True) elseif expression5 . else (commands evaluted if no other expression is True) end
Switch - case switch expression case test_expression1 (commands1) case {test_expression2, test_expression3, test_expression4} (commands2) otherwise (commands3) end