Telechargé par sissi gou

matlab

publicité
Compte rendu TP Matlab
Préparé par : El Bouchikhi Soulaimane
EL Fatehi Salah eddine
Classe : 4°IAII
Année : 2011/2012
TP5 : de Quantification :
signal continu :
F0=200;
% frequence de signal continu
T0=1/F0;
% Periode
Te=1e-5;
% periode d'echantillonnage
t=0:Te:T0; % intervale de temps
A=5;
S=A*sin(2*pi*F0*t);
Quantification par troncature :
q=.04; % pas de quantification
on devise le signal par q pour avoir des multibles de pas de quantification apres on a besoin que des
multibles entier, on utilise floor de la tranquature et apres on multplie par le pas
SqT=floor(S/q)*q;
figure(1);
subplot(2,1,1); plot(t,S,t,SqT,'r'); axis([0 .75*T0 -5 5]); title('Signal quantifier par Trancature');
Bruit de Troncature :
SbT=S-SqT;
subplot(2,1,2);plot(t,SbT); axis([0 .5*T0 -.1 .5]); title('Signal Bruit par Trancature');
Quantification pas arrondie :
on devise le signal par q pour avoir des multible de pas de quantification apres on a besoin des
multible entier on utilise floor de la tranquature et apres on multplie pas .4
SqA=round(S/q)*q;
figure(2);
subplot(2,1,1); plot(t,S,t,SqA,'r'); axis([0 .75*T0 -5 5]); title('Signal quantifier par Arrandi');grid;
Bruit de quantification :
SbA=S-SqA;
subplot(2,1,2);plot(t,SbA); axis([0 .5*T0 -.5 .5]); title('Signal Bruit par Arrandi');grid;
Puissance de bruit par Troncature :
p_bruit_theoT=(q^2/3);
p_mesurerT=var(SbT)
S_BT=(A^2)/(2*p_mesurerT);
puissance de bruit par Arrandi
p_bruit_theoA=(q^2/12);
p_mesurerA=var(SbA)
S_BA=(A^2)/(2*p_mesurerA);
TP5 : de Reconstitution :
Création de signal Peigne :
Fp=2e3;
(fréquence de signal Peigne)
Tp=1/Fp;
(Période de signal Peigne)
past=1e-6;
(le pas de temps t)
t=0:past:100*Tp; (signal temps)
Peigne=.5*(square(2*pi*Fp*t,1)+1);
Echantillonnage de signal continue :
on respectant le théorème de Shannon
F=200;
S=5*cos(2*pi*F*t);
Signal échantillonné avec Fech=2KHz
Fech=1/past; (Période de signal spectre de la Peigne échantillonné)
Sech=S.*Peigne;
subplot(2,1,1);
plot(t,Sech);
axis([0 40*Tp -6 6]);
title('Signal, cos, Fech=2KHz');
grid;
Spectre de signal échantillonné avec Fech=2KHz :
[f,ModSPech]=Spectre(Sech,Fech);
subplot(2,1,2);
plot(f,ModSPech);
axis([-3e3 3e3 0 .03]);
title('Spectre de signal, cos,Fe=2Khz');
grid;
xlabel('fréquence');
ylabel('amplitude');
Filtre de reconstitution :
Wn=300*2*pi;
(en (Rad/s))
order=4;
[num den]=butter(order,Wn,'s');
filtre=tf(num,den);
Reconstitution :
Srec=lsim(filtre,Sech,t);
subplot(2,1,2); plot(t,Srec);
axis([0 .02 -.06 .06]);
title('Reconstitution de signal, cos, Fech=2KHz');
grid;
TP6 : Analogique Numérique :
systme analogique :
K=5;
to1=.1;
to2=.5;
HP=tf(K,[to1*to2 (to1+to2) 1]);
generation de la repense indicielle :
past=1e-5;
t=0:past:6*to2;
rep_anal=step(HP,t);
programmation de l'équation de récurrence :
Te=.04; (période d'échantillonnage)
Fe=1/Te;
M=floor(6*to2/Te);
a0=K*Te^2/((to1*to2)+Te*(to1+to2)+ (Te^2));
b1=(2*to1*to2 + Te*(to1+to2))/((to1*to2)+Te*(to1+to2)+ (Te^2));
b2=-(to1*to2)/((to1*to2)+Te*(to1+to2)+ (Te^2));
u=0;
s(1)=a0;
s(2)=a0+b1;
for n=3:M
u(n)=1; (une entrer échelon unitaire)
s(n)=(a0*u(n))+(b1*s(n-1))+(b2*s(n-2)); (équation de récurrence)
end
comparaison des repense indicielle des deux systèmes :
tech=0:Te:(M-1)*Te;
figure(1);
plot(t,rep_anal);title('repense de systeme analogique');
hold on;
stem(tech,s);
comparaison des repense de fréquence des deux systèmes :
w=0:.1:10/to2;
rep_freq_ana=freqs(K,[to1*to2 (to1+to2) 1],w);
numz=a0;
denz=[1 -b1 -b2];
rep_freq_num=freqz(numz,denz,w/(2*pi),Fe);
figure(2);
plot(w,abs(rep_freq_ana),'r');
hold on;
plot(w,abs(rep_freq_num));
TP 7 : Regulateur
P=tf('s');
Simulation du Model réel en simulink :
sim('identif');
Chargement de fichier data.mat :
load('data.mat','R')
Extraction du vecteur temps,sortie et la derivé, de la structure R :
t=R.Time;
D=R.Data(:,2);
Y=R.Data(:,1);
Algorithme de Strejc pour un système Apériodique Stable :
Point d'inflextion Pf=max(F') :
Pf=max(D);
Pfn=Pf*ones(size(t)); ( Point d'inflexion)
plot(t,Y,t,Pfn,'r');
title('Strejc: Relever le point d''inflexion');
[x d]=ginput(1); (relever du point d'inflexion)
axis([x-.2 x+.2 d-.2 d+.2]);
title('Strejc: Relever deux points, celle du temps le plus grand la 1er');
Création de la tangente qui passe par le point d'inflexion :
Relever de dx et dy :
[px,py]=ginput(2);
Construction de la tangente :
a=(py(1)-py(2))/(px(1)-px(2)); % a=dx/dy
b=py(1)-a*px(1);
% b=y1-a*x1
tg=a*t+b; % droit de la tengente
plot(t,Y);
title('Strejc: Relever la valeur en regime permanant');
Création de la droit du régime permanent :
Gs=max(Y); (relever du gain statique directement de la réponse)
Gsn=Gs*ones(size(t)); (valeur Finale)
Vin=0*ones(size(t)); (valeur Finale)
Tracer des trois courbe :
plot(t,Y,t,tg,t,Gsn,'r',t,Vin,'r')
axis([0 10 -.3 3]);
title('Strejc: Relever les deux instants Tu et Ta (Tu la 1er)');
Relever des instants Tu et Ta :
[tx,ty]=ginput(2);
Tu=tx(1);
Ta=tx(2)-tx(1);
Rs=Tu/Ta;
Tableau de Strejc T(9,3) :
T(:,1)=[1; 2; 3; 4; 5; 6; 7; 8; 9]; (l'ordre du Système)
T(:,2)=[0; .105; .22; .32; .41; .49; .57; .64; .71]; % Tu'/Ta
T(:,3)=[1; 2.718; 3.695; 4.463; 5.119; 5.699; 6.226; 6.711; 7.164]; (Ta/to)
n=1;
while T(n,2)<Rs
n=n+1;
end
n=n-1; (on prend le n le juste inferieur)
Tup=Ta*T(n,2); % Tu' qui correspond a la valeur dans le tableau T
rS=Tu-Tup; % calcule du retard
toS= Ta/T(n,3); % calcule de la constante de temps
Construction du modèle de Strejc :
HpS=exp(-rS*P)*Gs/(toS*P+1)^n;
[YS tS]=step(HpS,10); (Réponse du modèle de Strejc a un échelon)
Algorithme de Broida pour un système Apériodique Stable :
Construction des Droits qui passe par 28% et 40% de la valeur final :
Y28=.28*Gs;
(y a 28% de la valeur finale)
Y28n=Y28*ones(size(t)); (Droit qui passe par Y28)
Y40=.4*Gs;
(y a 40% de la valeur finale)
Y40n=Y40*ones(size(t)); (Droit qui passe par Y28)
plot(t,Y,t,Y28n,'r',t,Y40n,'r');
title('Broida: Relever des deux instants t1 puis t2');
Relever des Instant t1 et t2 :
[tB yB]=ginput(2);
Calcule de la constante de temps et du retard du Modèle de Broida :
toB=5.5*(tB(2)-tB(1));
rB=2.8*tB(1)-1.8*tB(2);
Construction du modèle de Broida :
HpB=exp(-rB*P)*Gs/(toB*P+1);
[YB tB]=step(HpB,10); % reponse du modele de Boida a un echellon
TP8 : Modélisation de MCC
Resolution de l'equation :
K=2; (gain statique du système)
Kcr=6.25; % gain critique
n=2.2:.01:4;
y=(1./(cos(pi./n))).^n;
plot(n,y,n,Kcr*K*ones(size(n)));
Strejc :
Tosc=.5; % periode d'oscillation
Wosc=2*pi/Tosc;
[N x]=ginput(1);
to=1*tan(pi/N)/Wosc;
order=floor(N);
ret=N-order;
P=tf('s');
to1=.1;
to2=.4;
Hp=K/((1+to1*P)^2*(1+to2*P));
HpS=K/((1+to*P)^order*(1+ret*P));
HpSr=exp(-ret*P)*K/(1+to*P)^order;
Broida :
toB=sqrt((Kcr*K)^2-1)/Wosc;
rB=(pi-atan(sqrt((Kcr*K)^2-1))/Wosc);
HpBr=K*exp(-rB*P)/(1+toB*P);
HpB=K/((1+toB*P)*(1+rB*P));
nyquist(Hp,HpS,HpB)
Téléchargement