Documente Academic
Documente Profesional
Documente Cultură
:
Commande numérique dans l'espace d'état d'un moteur à courant
continu :
Atténuation du phénomène de pic du courant d'induit.
Salma Tariq
Enseigné par :
Prof. ASSOUDI
Objectif :
Dans le présent TP, il s'agit d'élaborer une commande par retour d'état
discret pour un moteur à courant continu permettant de poursuivre un
signal de vitesse servant de référence.
1
Description :
Modélisation d’un MCC
Etude théorique :
2
TF donne :
( J p2 + fp ) ( R+ Lp )
U ( p )=ϴm( p)[ +Փ 0 p]
Փ0
( J p+ f ) ( R+ Lp )
U ( p )=Ω( p)[ +Փ 0 ]
Փ0
D’où le schéma fonctionnel :
d x3
U ( t )=R x3 + L +Փ 0 x 2
dt
d x2
Γ ( t )=J + f x2
dt
3
Γ ( t )=Փ0 x 3
Donc
d x3 U R Փ0
= − x3 − x
dt L L L 2
d x 2 Փ0 f
= x 3− x 2
dt J J
d x1
=x 2
dt
D’où :
0
1 0
0
{}( )( ) ( )
x −f Փ0 x1
d 1 0 0 U
x = J J x2 +
dt 2 1
x3 −Փ 0 −R x3
0 L
L L
x1
Y=(1 0 0 )
{}
x2
x3
0 1 0
0
Donc : A=
( )
0
0
−f
J
−Փ0
L
Փ0
J
−R
L
et B=
()0
1
L
et C=(1 0 0)
4
Nous pouvons approximer la dérivée ẋ comme suit:
x k+1−x k
ẋ ≃
❑
x k+1−x k
= A x k+ B U k
❑
y k =C x k
Donc :
x k+1= ( I + A ) x k +B U k
y k =C x k
¿ 0 Փ 0 ¿ 0¿ −Փ 0 ¿1− R ¿
D’où Ad= (10 ¿ J L L )
0
Bd=
()0
❑
L
Cd= (1 0 0)
Etude en simulation :
5
Test1 :
clc;
clear all;
t0 = 0;
tf = 0.02;
x0 = [0;0;0];
[t,x] = ode45('test2',[t0 tf],x0);
figure(1)
plot(t,x(:,1),'b')
grid
figure(2)
plot(t,x(:,2),'b')
grid
figure(3)
plot(t,x(:,3),'b')
grid
Test2 : ‘Définition de la fonction’ :
function Xd = test2(t,x)
%Constantes:
phi = 0.664;
R = 1000;
L = 0.1;
J = 10^-6;
f = 0.64*10^-4;
a1 = -f/J ;
a2 = phi/J;
a3 = -phi/L ;
a4=-R/L ;
a5=1/L ;
%def Matrices:
A = [0 1 0; 0 a1 a2; 0 a3 a4];
B = [0; 0; a5];
C = [1 0 0];
u=10;
Xd=A*x+B*u;
Courbe de la vitesse :
7
Courbe du courant :
Programme Matlab :
Script1 : ‘definition de la fonction’
function Xd=Q2(t,x)
phi = 0.664;
R = 1000;
L = 0.1;
J = 10^-6;
f = 0.67*10^-4;
vn = 1500*pi/60;
a0=-f/J;
a1=phi/J;
a2 = -phi/L;
a3= -R/L;
a4=1/L;
p=[-1;-2;-3];
A=[0 1 0 ; 0 a0 a1; 0 a2 a3];
B=[0 ; 0 ;a4];
8
C=[1 0 0];
t0 = 0;
t1 =2;
t2 = 4;
t3 = 6;
tf = 8;
c = (((-t2^2)+(t1*t2)-(t1*t3))*vn)/(2*(t3-t2));
if t0<=t && t<= t1
xref = [(vn/(2*t1))*t^2 ; vn*t/t1 ;
(f*vn*t)/(phi*t1) + ((J*vn)/(phi*t1))];
xrefp= [(vn/t1)*t; vn/t1; (f*vn)/(phi*t1)];
elseif t1<t && t<=t2
xref = [vn*(t-(t1/2)); vn;(f*vn)/phi];
xrefp = [vn; 0;0];
elseif t2<t && t<=t3
xref=[(-vn*t^2)/(2*(t3-t2))+((vn*t3*t)/(t3-t2))
+c ;(-vn*(t-t3))/(t3-t2);(-f*vn*(t-t3))/(phi*(t3-t2))-
J*vn/(t3-t2)];
xrefp = [(-vn*(t-t3))/(t3-t2); -vn/(t3-t2);(-
f*vn)/((t3-t2)*phi)];
else
xref = [((-vn*(t3)^3)/(2*(t3-t2))) + ((vn*(t3)^3)/
(t3-t2)) + c; 0; 0];
xrefp = [0; 0; 0];
end
End
t0=0;tf=8;x0=[0;0;0];
[t,x]=ode45('Q2',[t0 tf],x0);
figure(1),plot(t,x(:,1));
grid
figure(2),plot(t,x(:,2));
grid
9
figure(3),plot(t,x(:,3));
grid
Courbe du position :
Courbe vitesse :
10
Courbe Courant :
11
12
Q3 : Etudier les réponses des observateurs déterminées
précédemment pour à un créneau en fonction des diférentes valeurs du
gain des observateurs :
Programme Matlab :
Test1 :
function Xd=test0(~,x)
phi = 0.664;
R = 1000;
L = 0.1;
J = 10^-6;
f = 0.67*10^-4;
a1=-f/J;
a2=phi/J;
a3 = -phi/L;
a4= -R/L;
a5=1/L;
p=[-1;-2;-3];
A=[0 1 0 ; 0 a1 a2; 0 a3 a4];
B=[0 ; 0 ;a5];
C=[1 0 0];
yc=20;
k=place(A,B,p);
M = C*inv(A-B*k)*B;
uc=-inv(M)*yc;
u=-k*x+uc;
Xd=A*x+B*u;
end
Test2 :
t0=0;tf=6;x0=[0;0;0];
[t,x]=ode45('test0',[t0 tf],x0);
figure(1),plot(t,x(:,1));
grid
figure(2),plot(t,x(:,2));
grid
figure(3),plot(t,x(:,3));
grid
13
Courbe position :
Courbe vitesse :
Courbe du courant :
14
15