I.
Objectif du Tp:
L'identification des systèmes dynamiques est un aspect fondamental en automatique,
permettant de modéliser la réponse d'un processus en fonction de sa dynamique
temporelle.
Dans notre rapport, nous avons exploré la méthode de Strejc-Davoust, une technique
efficace pour estimer les caractéristiques d'un système dynamiquepartant de sa
réponse indicielle. En utilisant des outils de simulation tels que MATLAB, nous
avons analysé la dynamique du système ciblé et extrait ses principaux paramètres.
Cela inclut la détermination des constantes de temps et du gain statique, qui sont
cruciaux pour le bon fonctionnement et la régulation de systèmes en boucle ouverte.
Cette étude met en lumière l'importance de ces modèles dans le cadre de la régulation
industrielle et du contrôle automatique, en soulignant les défis associés à
l'identification de systèmes avec multiples constantes de temps.
L'utilisation de modèles de type simple, comme celui proposé par la méthode de
Strejc, permet d'obtenir une estimation robuste et précise des paramètres recherchés,
assurant ainsi une meilleure performance dans l'application des systèmes contrôlés.
II. Analyse de la Réponse Indicielle de la Fonction de Transfert
G(s) :
Analyse de la Réponse Indicielle de la
Fonction de Transfert H(s) :
1-Calcule de la réponse indicielle du système:
a. code:
num = 100;
den = [1,10,29,20];
sys = tf(num, den)
%Calculer la réponse indicielle du système
[y, t] = step(sys);
%Tracer la réponse indicielle
figure;
plot(t, y, 'LineWidth', 2);
xlabel('Temps (s)');
ylabel('Sortie');
legend('Réponse réelle');
b. Graphe:
5
Réponse réelle
4.5
3.5
3
Sortie
2.5
1.5
0.5
0
0 1 2 3 4 5 6 7
Temps (s)
2-Recherche du point d’inflexion et tracage de la tangente:
a. Code:
num = 100;
den = [1,10,29,20];
sys = tf(num, den)
%Calculer la réponse indicielle du système
[y, t] = step(sys);
%Tracer la réponse indicielle
figure;
plot(t, y, 'LineWidth', 2);
xlabel('Temps (s)');
ylabel('Sortie');
grid on;
hold on;
% chercher le point d'inflexion
Gain = y(end); % Gain statique (valeur finale)
d1 = diff(y)./diff(t); % Première dérivée
(approximée)
d2 = diff(d1)./diff(t(1:end-1)); % Deuxième dérivée
(approximée)
%Trouver les points où la dérivée seconde s'annule
et change de signe
points_inflexion_indices = find(d2(1:end-
1).*d2(2:end) < 0); % Changement de signe
t_inflexion = t(points_inflexion_indices); %
Temps d'inflexion corrigé
%Si plusieurs points d'inflexion sont détectés, on
prend le premier
if length(t_inflexion) > 1
t_inflexion = t_inflexion(1); % Prendre le
premier point d'inflexion
end
%Calcul de la pente (dérivée première) au point
d'inflexion
slope_inflexion = d1(points_inflexion_indices(1));
% Valeur de la réponse indicielle au point
d'inflexion
y_inflexion = y(points_inflexion_indices(1));
% Tracer le point d'inflexion sur le graphe
plot(t_inflexion, y_inflexion, 'ro', 'MarkerSize',
10, 'LineWidth', 2);
%Tracer la tangente au point d'inflexion
t_tangent = linspace(min(t), max(t), 100); % Plage
de temps pour la tangente
y_tangent = y_inflexion + slope_inflexion *
(t_tangent - t_inflexion); % Équation de la tangente
plot(t_tangent, y_tangent, '--g', 'LineWidth', 2);
legend('Réponse réelle','point
d''inflexion','tangente');
c. Raphe:
20
Réponse réelle
point d'inflexion
tangente
15
10
Sortie
-5
0 1 2 3 4 5 6 7
Temps (s)
3-Relever T1 et T2 on deduire l’ordre:
d’apres le ggraphe en deduit que T1=0,26 s et T2=2s
Et ona :
T 1 = 0,13
T2
d’ou d’apres le tableau n=2
3_ determiner la constante du temps T a partir du tableau:
Ona
T 2 =2,72
T
Alors T=
T 2 =0,73s
2 ,72
4_ Determiner le retard quand il existe a partir de la difference entre la valeur de T1 mesuree et
celle donnee par la colone du tableau
T1 :
T2
Retard = T1 - 0,2* T2=0.06
5_ tracer la reponse H et la reponse indicielle dans le meme graphe:
a. Code:
num = 100;
den = [1,10,29,20];
sys = tf(num, den)
%Calculer la réponse indicielle du système
[y, t] = step(sys);
%Tracer la réponse indicielle
figure;
plot(t, y, 'LineWidth', 2);
xlabel('Temps (s)');
ylabel('Sortie');
grid on;
hold on;
K = 5;
T = 0.73;
Ts=0.06;
sys_est = tf(5,[0.53 1.46 1],'InputDelay',Ts)
[y2, t] = step(sys_est);
plot(t,y2,'r')
legend('Réponse réelle','Fonction H ');
b. Graphe:
5
Réponse réelle
4.5 Fonction H
3.5
3
Sortie
2.5
1.5
0.5
0
0 1 2 3 4 5 6 7
Temps (s)
6_Chercher l’erreur :
a. code:
erreur=sys-sys_est
[y3,t]=step(erreur)
figure
plot(t,y3)
legend('l''erreur')
0.25
l'erreur
0.2
0.15
0.1
0.05
-0.05
0 2 4 6 8 10 12