Matlab / Simulink – une introduction

Transcription

Matlab / Simulink – une introduction
Matlab / Simulink – une introduction
» pwd
» dir
» cd ..
» cd nom_répertoire
» help
» help nom_fonction
Manipulations de base : affectation et calculs de base
» a=2 % on peut ajouter ‘;’ à la fin pour éviter l’affichage
» z1=1+j % j des complexes
» z2=2*i % i=j
» U=[2;3] % vecteur colonne
» V=[4 5] % vecteur ligne
» M=[1,2;3,4] % matrice
» m12=M(1,2) % pour récupérer le terme ligne 1, colonne 2
» J=U*V % multiplication
» V2=1:5 % vecteur ligne des entiers de 1 à 5
» V2=0:0.1:0.8 % vecteur ligne des nombres de 0 à 0.8 avec un
pas de 0.1
» V3=V2’ % transposée conjugée
» V3=V2.’ % transposée
» J=U.*V’ % multiplication terme à terme
Tracé de courbes
» t=linspace(0,2*pi,50) % pi=3.14…
» x=20*sin(t)
» plot(t,x)
Exécution d’un programme
» NomProg
! "
&
#
$
'
$
%
"
()
*
if a==1,
disp(‘a est égal à 1’) % affichage
else
disp(‘a est différent de 1’)
end
*
+
for ind=1:10,
disp([‘ind est égal à ‘ num2str(ind)])
end
Programmation d’une fonction
,
#
%-&
% essai de fonction à deux paramètres d’entrée et deux
paramètres de sortie
function [y1,y2]=essai_f1(u1,u2)
y1=u1+u2;
y2=u1*u2;
.
*
%
/0
%
» [yy1,yy2]=essai_f1(1,2)
.
% essai de fonction à paramètres vectoriels
function y=essai_f2(u)
u1=u(1); u2=u(2);
y1=u1+u2;
y2=u1*u2;
y=[y1;y2];
.
%
» uu=[1;2]
/1
%
» yy=essai_f2(uu)
2
3
+
MATLAB
Function
1
u
1
x
MATLAB Fcn
Simulation, sous Simulink, d’un système dynamique avec une S-function
4 ."
$
.
3$
6
&5
&5
"
= (1 + 0)
1
=
1
u
system
1
x
S-Function
2
5
3
+.-
function [sys,x0]=model(t,x,u,flag),
if flag==0, % Initialisation
sys=[1 0 1 1 0 0]; % nbre d’états continus, nbre d’états discrets,
nbre de sorties, nbre d’entrées
x0 = 0; % valeur initiale des états
elseif flag==1, % calcul de dx/dt
sys=(2*x+1)*u^2;
elseif flag==3, % calcul des sorties
sys=x;
else
sys=[];
end
2
5
7
1
u
Product
.
1
s
Integrator
2
Gain
1
Constant
3
1
x
Exemple de S-fonction discrète
78
&
7
70
5
- & "
,
9
%
%
%
%
%
%
%
%
%
2&
Modèle d'un rapport-cyclique
u = alpha (entrée)
x = [Etat, alpha0]
y = Etat
Etat = 1 : niveau haut
Etat = 0 : niveau bas
alpha0 : valeur du rapport-cyclique à t(k)
sauvegardée dans x(2)
function [sys,x0]=RappCycl(t,x,u,flag,T),
if flag==0, % Initialisation
sys=[0 2 1 1 0 0]; % 0 états continus; 2 états discrets; 1 sortie;
1 entrée
x0 = [1; 0.02];
elseif flag==2, % x(k+1)
alpha=u; Etat=x(1); alpha0=x(2);
switch Etat,
case 1, % Etat == 1
sys=[0; alpha0];
case 0, % Etat ==0
sys=[1; min([0.98 max([0.02 alpha])])];
end
elseif flag==3, % y(k)
sys=x(1);
elseif flag==4, % t(k+1)
alpha=u; Etat=x(1); alpha0=x(2);
switch Etat,
case 1,
sys=t+alpha0*T;
case 0,
sys=t+(1-alpha0)*T;
end
else
sys=[];
end
4
t
Clock
' 5
0.7
RappCycl
C
alpha
rapport-cyclique
To Workspace1
5
%
To Workspace
:
.-
$
%