Professional Documents
Culture Documents
BUREL - COUFOURIER
18 / 06 / 2004 1
Projet dAutomatique
BUREL - COUFOURIER
Bc x c F 2 M b lsin
xc
o Bc et Bb sont des coefficients de frottements visqueux. avec M c 1000 Kg , M b 4000 Kg ,l 10 met g 9.81 m.s
Projet dAutomatique
BUREL - COUFOURIER
On ralise le dveloppement limit de cos() et sin(). On obtient les deux quations suivantes :
2
c 2
M b xc
M bl 1
2
2 xc Bb
M bl
Bc x c 2 M bl
F 0
M bl
M bl 1
M b gl
On exprime x 4 en fonction de X et F: 2 M b l x 4 M b l x 2 M b gl x 3 0
On remplace x 2 dans l ' quation : M 1 F M b l 2 x4 M b l g b x3 Mc Mc M b2 x M b l x 4 gl Mc 3 Mb l x4 g M b x3 Mc Mb M c l x4 g x3 Mc Mb Mc x4 g x3 lMc
2
M b gl x3 0
Mb lF Mc 1 F Mc 1 F Mc 1 F lMc
M b gl x 3 0
Projet dAutomatique
x1 xc x2 Mb 1 x2 xc g x3 F Mc Mc x3 x4 Mb M c x4 g x3 l Mc
BUREL - COUFOURIER
1 F lMc
A partir des quatre quations, on peut former le modle dtat de notre systme :
0 1 0 Mb g Mc 0 M b Mc g l Mc 0 0 1 0 0
x1 x2 x3 x4
x1 x2 x3 x4
0 0 0 0 0 0
1 Mc 0 1 lMc
Y =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
x1 x2 x3 x4
Comme on peut le voir sur ce schma fonctionnel, tous les tats du systme sont commandables, il suffit de suivre les liens entre lentre F et les sorties X x2 est directement commandable par F, Le fait de modifier x2 permet de modifier x1 donc x1 est aussi commandable, Il en va de mme pour x3 et x4.
Projet dAutomatique
BUREL - COUFOURIER
(en ms)
(en ms)
Projet dAutomatique
BUREL - COUFOURIER
(en ms)
(en ms)
Projet dAutomatique
BUREL - COUFOURIER
A la vue des graphes du comportement du chariot, on peut observer les ractions suivantes : La valeur de la position du chariot tend vers linfini lorsque le temps tend vers linfini. Il en va de mme pour la vitesse de dplacement, celle-ci nest pas asservie. Langle et la vitesse angulaire du filin prsentent des rgimes oscillatoires.
On peut donc en dduire que le systme prsente une instabilit complte. La vitesse et la position du chariot ne sont pas rgules, ce qui peut mener une destruction du pont roulant. Enfin les variations de langle du filin peuvent tre dangereuses aussi bien pour le systme que pour le personnel proximit de celui-ci : mme si ces variations dangles sont faibles, quelques degrs peuvent impliquer un dplacement de plusieurs mtres au bout du filin.
0.001 0 0.0001 0.
0 0.003924 0 0.0004905
-0.003924 0 0.0004905 0
2. Analyse de lobservabilit
La sortie mesure est la position du chariot seule: C1 = [ 1 0 0 0 ] MobservabilitC1 = O( C1 , A ) = [ C1 C1A C1A ]T 1 0 0 0 0 1 0 0 0 0 39.24 0 0 0 0 39.24
MobservabilitC1 =
Rang( MobservabilitC1 ) = 4
n n Le rang de la matrice dobservabilit est gal n = 4 (avec n tel que A ) donc notre systme est compltement observable lorsque la sortie mesure se trouve tre la position du chariot seule.
Projet dAutomatique
BUREL - COUFOURIER
Si lon tudie lobservabilit du site en considrant C1, on constate que la reconstruction des tats partir de x1 est possible : On rcupre x2 en drivant x1 on peut reconstruire x3 par la connaissance de F et x 2 (en drivant x2) et enfin on dtermine x4 en drivant x3 Par la seule connaissance de x1 et de F, on peut reconstruire lensemble des tats de notre systme. Le schma fonctionnel confirme donc le fait quil est compltement observable. La sortie mesure est langle du filin seul : C2 = [ 0 0 1 0 ] MobservabilitC2 = O( C2 , A ) = [ C2 C2A C2A ]T 0 0 0 0 0 0 0 0 1 0 -4.905 0 0 1 0 -4.905
MobservabilitC2 =
Rang( MobservabilitC2 ) = 2
n Le rang de la matrice dobservabilit est gal 2 n (avec n tel que A partiellement observable lorsque la sortie mesure est langle du filin seul. n
Si on tudie lobservabilit du site en considrant C3 cette fois-ci, on peut observer que la reconstruction des tats partir de x3 nest pas possible : On rcupre x4 en drivant x3 on ne peut pas reconstruire x2 car les conditions initiales ne sont pas connues ce qui rend impossible lintgration de x 2 (dtermin partir de la connaissance de x3 et de F). La seule connaissance de x3 et de F nest donc pas suffisante pour pouvoir reconstruire lensemble des tats de notre systme. Le systme nest pas complment observable (ce qui confirme nos calculs).
Projet dAutomatique
BUREL - COUFOURIER
On calcule par Scilab, partir de nos ples, la matrice de retour dtat K : K = [ 717.19317 6379.6152 - 227078.67 - 38506.848] On forme notre prfiltre : S
C1
1 A B K
1
= 717.19317
A BF B BF C BF D BF A B.K B.S C 1 BK D
50
t
INSA de Rouen Dpartement ASI
(en ms)
Projet dAutomatique
BUREL - COUFOURIER
(en ms)
(en ms)
10
Projet dAutomatique
BUREL - COUFOURIER
(en ms)
A la vue de ces graphiques, on peut dj mieux analyser et imaginer les ractions quauraient dans la ralit le pont roulant : 0. Le pont roulant est larrt. 1. On active le dplacement du chariot ; sa vitesse augmente et celui-ci se dplace. Le mouvement du chariot entrane une modification de langle du filin qui revient trs rapidement une valeur nulle lorsque la vitesse du chariot se stabilise. Ceci implique les variations de la vitesse angulaire initialement nulle. 2. Le chariot a parcouru 15m. On rgule la vitesse en la diminuant afin damorcer en douceur le freinage du pont roulant. Le chariot continue avancer en ralentissant petit petit. La valeur de langle tant nulle et la force cintique agissant sur lobjet plac au bout du filin, langle de ce dernier sinverse. 3. Le chariot va dpasser les 50m cause de la force cintique impose par la charge. Il reculera par la suite en inversant sa vitesse, ce qui lui permet de revenir au 50m dsirs. Cette squence : dpasser les 50m pour y revenir permet dattnuer les oscillations du filin et de les stopper en douceur. 4. Le chariot est arriv destination. La vitesse de ce dernier, langle et la vitesse angulaire du filin deviennent alors nuls.
11
Projet dAutomatique
Mouvement Vitesse
BUREL - COUFOURIER
Le fait de travailler en boucle ferme nous a permis dasservir notre systme et de cette faon de le rendre stable. La commande passe en entre, savoir dplacer le chariot de 50m, est cette fois-ci parfaitement ralise.
D1 Tr1 Tm1
= 4.36 % = 24.9 s = 25 s
3. Conclusion
Le fait dintroduire dans notre systme un retour dtat entrane la stabilit du systme, ce qui ne ltait pas prcdemment en boucle ouverte. Cela implique donc un respect de la consigne par le systme. De plus, lasservissement par retour nous offre la possibilit de rgler facilement les performances dynamiques du systme : le cahier des charges dtermine les ples en boucle ferme. Enfin, nos deux ples fantmes permettent daffiner nos rglages. INSA de Rouen Dpartement ASI 12
Projet dAutomatique
BUREL - COUFOURIER
C , A observable
X A LC X t Y CX t soit :
BL U t Y t
BUREL - COUFOURIER
0. 39.24 0. - 4.905
0. 0. 1. 0.
! ! ! !
! ! ! !
0. = 0.
0.
0. !
Dobs
5. On dcide de simuler le comportement de l'observateur. On visualise les tats estims que l'on compare aux vrais tats :
Position du chariot avec CI non nulles : rel (bleu) & observateur (noir)
(en ms)
14
Projet dAutomatique
BUREL - COUFOURIER
Vistesse de dplacement avec CI non nulles : rel (bleu) & observateur (noir)
(en ms)
Angle du filin avec CI non nulles : rel (bleu) & observateur (noir)
(en ms)
15
Projet dAutomatique
BUREL - COUFOURIER
Vistesse angulaire du filin avec CI non nulles : rel (bleu) & observateur (noir)
(en ms)
On remarque que les courbes ne sont pas totalement superposables, notamment pour de petites valeurs de t. Il va falloir intgrer l'observateur la commande par retour d'tat, ce que nous ferons dans la partie 5. Essayons avant cela de bruiter la sortie injecte l'entre de l'observateur. Pour cela, on opre de la manire suivant :
[yobs,xobs]=csim([Deplacement ; Yci+(rand(1,1001))],tci,sysobs);
(en ms)
16
Projet dAutomatique
BUREL - COUFOURIER
Vitesse de dplacement du chariot avec bruit et CI non nulles : rel (bleu) & observateur (noir)
(en ms)
Angle du filin avec bruit et CI non nulles : rel (bleu) & observateur (noir)
(en ms)
17
Projet dAutomatique
BUREL - COUFOURIER
Vitesse angulaire du filin avec bruit et CI non nulles : rel (bleu) & observateur (noir)
(en ms)
L'observateur a tendance reproduire les bruits ajouts (ces bruits peuvent tre lis au capteur dans la pratique).
A LC 1
BK A BK LC 1
X X + X X
BS BS
r t
C1 0
X X
8 8 1
8 1 8
18
Projet dAutomatique
BUREL - COUFOURIER
t (en ms) Vitesse de dplacement du chariot obtenue par retour dtat avec reconstruction de ce dernier
(en ms)
19
Projet dAutomatique
BUREL - COUFOURIER
(en ms)
Vitesse angulaire du filin obtenue par retour dtat avec reconstruction de ce dernier
(en ms)
20
Projet dAutomatique
BUREL - COUFOURIER
Dpassement D2
= 4.36 % = 24.9 s
= D1 - D2 = - 2.420 10-9 = D1 - D 2 = 0 = D1 - D 2 = 0
= 25 s
Nous pouvons immdiatement observer la similitude entre les rponses obtenues en boucle ouverte (Cf Partie 1) et celles des observateurs (par retour dtat avec reconstruction des tats) : elles sont identiques et les performances dynamiques le confirment. Les trois carts sont nuls, ce qui implique que les performances obtenues grce aux observateurs sont gales celles du montage asservi par retour dtat sans observateur. Ces derniers vrifiant dj les exigences du cahier des charges, il est normal que les performances de notre systme actuel les satisfassent galement.
2. Pour dterminer les paramtres du PID, reprenons le cahier des charges. On souhaite : - un dpassement strictement infrieur 5% ; (effet drivateur) - un temps de monte de 25s ; (effet proportionnel) - une erreur statique nulle. (effet intgrateur) La valeur du dpassement permet de retrouver la valeur du coefficient d'amortissement ainsi que celle de la pulsation naturelle n :
0.7 d'aprs les abaques soit :
tm
3 d'o :
0.1316 rad.s
1
c0
Or
m 100 donc m
70
Le systme a une marge de phase nulle et la fonction de transfert comporte des intgrateurs qui garantissent une erreur statique nulle. Le correcteur le plus appropri est donc le correcteur avance de phase de la forme :
21
Projet dAutomatique
1 aTs 1 Ts
BUREL - COUFOURIER
C s
1
c0
1.3398
1 aT jw co K 1 T jw co
0.001 jw co jw co
4
0.000981
2
4.905 jw co
2
4.905 jw co
2
0.001 jw co
0.000981
15.488164
3. On trace la rponse du systme boucl corrig:L'allure de la courbe, mme si elle es un peu oscillante, reste conforme nos esprance mais les dpassements et temps de monte semblent tre assez levs.
(en ms)
22
Projet dAutomatique
BUREL - COUFOURIER
4. Les performances obtenues sont les suivantes : Dep3 = 12.896922 tm3 = 14.2
Celles-ci sont corrects mais diffrent un peu de celles demandes dans le cahier des charges. La modification des paramtres n'amliore pas non plus ces rsultats. Les approximations des mesures peuvent justifier cet cart.
Conclusion
Ce projet nous a permis de raliser la commande par retour d'tat d'un pont roulant avec reconstruction de l'tat (utilisation d'un observateur) et asservissement avec un correcteur. Mini-projet ou vritable bilan de ce second trimestre dautomatique, il illustre les derniers chapitres du cours : le modle dtat, la commandabilit et lobservabilit dun systme et cela avec un cas concret : le pont roulant. Il permet de synthtiser aussi bien nos connaissances thoriques que pratiques avec lutilisation de Scilab (dont vous trouverez le code en annexe).
23
Projet dAutomatique
BUREL - COUFOURIER
//----------------------------------------------------------//Partie 1 : Dtermination du modle linaire du pont roulant //----------------------------------------------------------xdel // clear // Suppression des variables existantes getf('K:\Cours\ASI 3.2\Automatique\Mini-projet\fonction.sci'); //Dfinitions pralables Mc = 1000; Mb = 4000; l = 10; g = 9.81; t = (0 : 0.1 : 100); Force = 1000*ones(t); Deplacement = 50*ones(t);
//Dfinition des diffrentes matrices constituant la modle dtat A=[0,1,0,0;0,0,g*Mb/Mc,0;0,0,0,1;0,0,-g*(Mb+Mc)/(l*Mc),0]; B=[0,1/Mc,0,-1/(l*Mc)]'; C=eye(4,4); D=[0,0,0,0]'; //Dfinition d'un modle d'tat sys=syslin('c',A,B,C,D); //Calcul des sorties de notre systme Y = csim(Force,t,sys); //Reprsentation graphique des sorties du systeme for i=1:4 xbasc(i-1); xset("window",i-1); xselect; plot(t,Y(i,:)) if (i == 1) xtitle("Position du chariot : Boucle Ouverte"); end if (i == 2) xtitle("Vitesse de deplacement du chariot : Boucle Ouverte"); end if (i == 3) xtitle("Angle du filin : Boucle Ouverte"); end if (i == 4) xtitle("Vitesse angulaire du filin : Boucle Ouverte"); end end
//Observabilit //Definitions des nouvelles matrices C1 & C3 C1 = C(1,:); C3 = C(3,:); MatDObservabilite1 = obsv_mat(A,C1) rank(MatDObservabilite1) MatDObservabilite3 = obsv_mat(A,C3) rank(MatDObservabilite3)
24
Projet dAutomatique
BUREL - COUFOURIER
//------------------------------------------//Partie 3 : Asservissement par retour d'tat //------------------------------------------//Pole du systme en BO polesBO=spec(A) //Calcul de K ksi = 0.7; tm = 25; wnBF = 3.29/tm; pole1=-ksi*wnBF - %i * wnBF * sqrt(1-(ksi^2)); pole2=-ksi*wnBF + %i * wnBF * sqrt(1-(ksi^2)); //poles=[pole1,pole2,-5-%i,-5+%i]; poles=[pole1,pole2,-0.75,-0.81]; K=ppol(A,B,poles)
//Calcul de S S=1/(C1*(-(inv(A-B*K)))*B)
//Dfinitions des matrices du modle d'tat en BF D=0; Abf=A-B*K; Bbf=B*S; Cbf=C1-D*K; Dbf=D; //Dfinition du modle sysBF=syslin('c',Abf,Bbf,Cbf,Dbf); //Calcul des sorties de notre systme [YBF XBF] = csim(Deplacement,t,sysBF); //Reprsentation graphique des sorties du systeme for i=1:4 xbasc(i+3); xset("window",i+3); xselect; plot(t,XBF(i,:)) if (i == 1) xtitle("Position du chariot : Boucle ferme par retour d''tat"); end if (i == 2) xtitle("Vitesse de deplacement du chariot : Boucle ferme par retour d''tat"); end if (i == 3) xtitle("Angle du filin : Boucle ferme par retour d''tat"); end if (i == 4) xtitle("Vitesse angulaire du filin : Boucle ferme par retour d''tat"); end end //Dynamique et dpassement du systme Dep1 = depassement(YBF) tr1 = tempsdereponse(t,YBF) tm1 = tempsdemontee(t,YBF)
//--------------------------------------//Partie 4 : Ralisation d'un observateur //--------------------------------------Xinit=[2; 0.3; 0.04; 0.3]; //Xinit=[0; 0; 0; 0]; tci = (0 : 0.01 : 10);
//Dfinition d'un modle d'tat sysCI=syslin('c',A,B,C1,D,Xinit); //Calcul des sorties de notre systme [Yci, Xci] = csim(Force,tci,sysCI);
lambda0=-2 ; polesobs=[lambda0;lambda0;lambda0;lambda0]; Ko=ppol(A',C1',polesobs); L=Ko' Aobs=A-L*C1 Bobs=[B,L] Cobs=C1 Dobs=D sysobs=syslin('c',Aobs,Bobs,Cobs); [yobs,xobs]=csim([Deplacement ; Yci],tci,sysobs);
25
Projet dAutomatique
BUREL - COUFOURIER
//Affichage des diffrents tats avec l'ajout d'une condition initiale seulement for i=1:4 xbasc(i+7); xset("window",i+7); xselect; plot2d(tci',[xobs(i,:); Xci(i,:)]'); if (i == 1) xtitle("Position du chariot avec CI non nulles : Rel (bleu) & Observateur (noir)"); end if (i == 2) xtitle("Vitesse de deplacement du chariot avec CI non nulles : Rel (bleu) & Observateur (noir)"); end if (i == 3) xtitle("Angle du filin avec CI non nulles : Rel (bleu) & Observateur (noir)"); end if (i == 4) xtitle("Vitesse angulaire du filin avec CI non nulles : Rel (bleu) & Observateur (noir)"); end end [yobs,xobs]=csim([Deplacement ; Yci+(rand(1,1001))],tci,sysobs); //Affichage des diffrents tats avec l'ajout d'une condition initiale et du bruit for i=1:4 xbasc(i+11); xset("window",i+11); xselect; plot2d(tci',[xobs(i,:); Xci(i,:)]'); if (i == 1) xtitle("Position du chariot avec bruit et CI non nulles : Rel (bleu) & Observateur (noir)"); end if (i == 2) xtitle("Vitesse de deplacement du chariot avec bruit et CI non nulles : Rel (bleu) & Observateur (noir)"); end if (i == 3) xtitle("Angle du filin avec bruit et CI non nulles : Rel (bleu) & Observateur (noir)"); end if (i == 4) xtitle("Vitesse angulaire du filin avec bruit et CI non nulles : Rel (bleu) & Observateur (noir)"); end end
//---------------------------------------------------------------//Partie 5 : Commande par retour d'etat avec reconstruction d'etat //---------------------------------------------------------------Abfobs=[A -B*K; L*C1 A-(B*K)-(L*C1)] Bbfobs=[B*S; B*S] Cbfobs=[C1 0 0 0 0] //Dfinition du modle sysBFobs=syslin('c',Abfobs,Bbfobs,Cbfobs); //Calcul des sorties de notre systme [YBFobs XBFobs] = csim(Deplacement,t,sysBFobs); //Affichage des diffrents tats for i=1:4 xbasc(i+15); xset("window",i+15); xselect; plot(t,XBFobs(i+4,:)) if (i == 1) xtitle("Position du chariot obtenue par retour d''tat avec reconstruction d''tat"); end if (i == 2) xtitle("Vitesse de deplacement du chariot obtenue par retour d''tat avec reconstruction d''tat"); end if (i == 3) xtitle("Angle du filin obtenu par retour d''tat avec reconstruction d''tat"); end if (i == 4) xtitle("Vitesse angulaire du filin obtenue par retour d''tat avec reconstruction d''tat"); end end
//Dynamique et dpassement du systme Dep2 = depassement(YBFobs) EcartDepassement=Dep2-Dep1 tr2 = tempsdereponse(t,YBFobs) EcartTr=tr2-tr1 tm2 = tempsdemontee(t,YBFobs) EcartTm=tm2-tm1
26
Projet dAutomatique
BUREL - COUFOURIER
//Construction de la fonction de transfert et trace du diagramme de Bode sys=syslin('c',A,B,C1); Hbo=ss2tf(sys) xset("window",20); xselect(); bode(Hbo); //Cahier des charges s=%s; MatricePhase=p_margin(sys) Mphase=MatricePhase(1,:)+180 DeltaMarge=70-Mphase Wco=0.1316 //Parametre du correcteur a=32.163437 T=1/(Wco*sqrt(a)) K=abs(((1+T*(%i*Wco))/(1+a*T*(%i*Wco)))*(((%i*Wco)^4+4.905*(%i*Wco)^2)/(0.001*(%i*Wco)^2+0.000981))) //Fonction de transfert du correcteur C=K*(1+a*T*s)/(1+T*s); //Trace du systeme corrige boucle Hboc=C*Hbo; sysBFC=syslin('c',Hboc/(1+Hboc)); [yBFC xBFC] = csim(Deplacement,t,sysBFC); xset("window",21); xselect(); plot(t,yBFC); xtitle("Reponse indicielle du systeme boucle"); //Dynamique et dpassement du systme Dep3=depassement(yBFC) tm3=tempsdemontee(t,yBFC)
27