But de tp :
Dans ce TP , nous essaierons de nous familiariser avec les différentes fonctions
utilisées dans Matlab pour calculer la transformée en z et la transformée inverse
d'une fonction donnée ainsi que simuler des différents signaux dans les
domaines analogiques et numériques afin de conclure sur leur stabilité et leur
comportement global
Partie 1 :
Nous commençons par la simulation de la fonction de transfert donnée et prenons l'entrée
comme une amplitude d'échelon 2 :
On ouvre simulink sur matlab et on ouvre un nouveau dossier, après on apporte le signal
échelon en allant sur ‘source’ , la fonction du transfert sur ‘ continuous’ puis l’oscilloscope
sur ‘ commonly used’ :
Après avoir défini les blocs et les avoir brancher, nous double-cliquons dessus pour définir
leurs valeurs : nous fixons les coefficients de notre fonction de transfert :
Ainsi que l’amplitude et le décalage de notre entrée :
Ensuite, nous simulons et obtenons le résultat suivant
Cette fois, notre entrée passera par un support d'ordre zéro et un convertisseur ‘Tustin’ qui se
trouvent dans le bloc « discret » :
Après simulation on obtient :
Comparaison :
On remarque que dans les deux cas on obtient un signal exponentiel d'amplitude 3,33 qui est
le gain de notre fonction de transfert (10/6 ) à la fréquence 0 (qui est la fréquence de notre
entrée) multiplié par l’amplitude du signal d'entrée ( 2 ) 2*(10/6) = 3.33
Les résultats sont similaires dans les deux cas, car la transformation d'un échelon en domaine
discret n'influencera pas sa précision, car l'échelon est constant à tout moment, donc aucune
information n'est perdue quelle que soit la fréquence d'échantillonnage. en revanche, si l'on
prend par exemple un signal variable comme une onde sinusoïdale
On peut remarquer qu'il y a une perte d'information due à la discrétisation
Partie 2 :
Afin de trouver la transformée en z d'une fonction donnée, nous devons utiliser la fonction
ztrans() :
Les 3 dernières fonctions n'étant pas très claires on peut utiliser la commande Pretty
() afin de la mettre de manière lisible :
Et pour l'inverse, iztrans() s'avéra utile :
Avec kroneckerDeklta (n,0) étant la fonction d'impulsion
:
Afin d'obtenir la valeur d'une fonction spécifique, nous devons utiliser la fonction subs() en
passant 3 arguments (nom de la fonction, la variable, la valeur attribuée à la variable) et
comme nous voulons voir 20 variables, nous utiliserons une boucle for. et en incrémentant la
variable de 1 à chaque fois
20 premières valeursK=0:19
Partie 3:
Nous revenons à simulink et construisons une onde sinusoïdale, un bloqueur d’ordre zéro , et
nous changeons la période d'échantillonnage du bloqueur de 0,2 à 1,2 depuis la fenêtre zoh :
Ensuite, nous remarquons ces sorties :
Nous remarquons qu'à mesure qu’on augmente la période d'échantillonnage, beaucoup
d'informations sont perdues, donc quelques précautions doivent être prises en considération
avant chaque discrétisation, et la plus importante étant le théorème de Shanoon : la fréquence
d'échantillonnage doit être au moins le double de celle du signal .
Nous restons en simulink , mais cette fois nous utilisons des systèmes discrets , nous allons
essayer deux systèmes différents avec un échelon en entrée :
Après simulation, nous pouvons voir les résultats suivants
pour f1 :
pour f2 :
Conclusion :
Comme le premier système est un système stable ( -1<pole<1), nous obtenons une sortie
stable qui converge vers 2/3, ce qui est conforme au résultat que nous obtenons si nous
l’étudions dans la commande Windows.
On met entrée = échelon u(z) = z/z-1 et h(z) = u*F y = iztrans(h) :
Mais dans le deuxième système, comme le pôle est supérieur à un, il ne cesse de
diverger, ou on remarque aussi une alternance à cause de signe de pole (pole=-3):
Tp2 : Commande d'une système en utilise commande pid numérique.
▎Introduction
La commande de systèmes dynamiques est un domaine essentiel en automatique,
permettant de réguler des processus variés dans de nombreux secteurs, tels que
l'industrie, l'aéronautique et l'automobile. Parmi les différentes techniques de contrôle,
le contrôleur PID (Proportionnel, Intégral, Dérivé) est l'une des plus utilisées en raison
de sa simplicité et de son efficacité. Ce rapport présente les principes fondamentaux de
la commande PID numérique, ainsi que sa mise en œuvre pratique.
▎1. Principe du Contrôleur PID
Un contrôleur PID ajuste la sortie d'un système en fonction de l'erreur entre une valeur
de consigne (setpoint) et une valeur mesurée (output). Le contrôleur PID est défini par
trois termes :
• Proportionnel (P) : Réagit à l'erreur actuelle. Une grande erreur entraîne une grande
correction.
• Intégral (I) : Réagit à l'erreur cumulée dans le temps, permettant d'éliminer les
erreurs permanentes.
• Dérivé (D) : Réagit à la variation de l'erreur, anticipant ainsi les changements et
réduisant les oscillations.
La sortie du contrôleur PID est donnée par la formule :
u(t) = Kₚ ⋅ e(t) + Kᵢ ⋅ ∫₀ᵗ e(τ) dτ + K_d ⋅ (de(t))/dt
▎2. Discrétisation du Contrôleur PID
Pour une application numérique, il est nécessaire de discrétiser le contrôleur PID. Cela
implique d'approximer les intégrales et les dérivées à l'aide de méthodes numériques,
comme la méthode d'Euler. Les équations discrètes deviennent :
• Intégration :
I(k) = I(k-1) + Kᵢ ⋅ e(k) ⋅ Tₛ
• Dérivation :
D(k) = K_d ⋅ (e(k) - e(k-1))/Tₛ
où Tₛ est le temps d'échantillonnage.
▎3. Implémentation Numérique
L'algorithme PID peut être implémenté sur un microcontrôleur ou via un logiciel de
simulation. Voici un exemple simplifié en pseudo-code :
initialize:
Kp = ... // gain proportionnel
Ki = ... // gain intégral
Kd = ... // gain dérivé
Ts = ... // temps d'échantillonnage
previous_error = 0
integral = 0
loop:
error = setpoint - measured_value
integral = integral + error * Ts
derivative = (error - previous_error) / Ts
output = Kp * error + Ki * integral + Kd * derivative
previous_error = error
apply_output(output)
wait(Ts)
▎4. Réglage des Paramètres PID
Le réglage des gains Kₚ , Kᵢ , et K_d est crucial pour optimiser les performances du
contrôleur. Différentes méthodes peuvent être utilisées :
• Méthode Ziegler-Nichols : Basée sur des tests expérimentaux pour déterminer les
paramètres.
• Réglage par essais-erreurs : Ajustement manuel des paramètres jusqu'à obtenir une
réponse satisfaisante.
• Algorithmes d'optimisation : Utilisation de techniques mathématiques pour trouver
les valeurs optimales.
▎5. Applications Pratiques
Les contrôleurs PID numériques sont utilisés dans de nombreuses applications, telles
que :
• Systèmes de chauffage et de climatisation : Régulation de la température.
• Robotique : Contrôle des mouvements et des positions.
• Automatisation industrielle : Gestion des processus de fabrication.
▎Conclusion
Le contrôleur PID numérique est un outil puissant pour la régulation des systèmes
dynamiques. Grâce à sa simplicité et à sa flexibilité, il est largement utilisé dans diverses
applications industrielles et technologiques. Une bonne compréhension des principes du
PID et une attention particulière au réglage des paramètres sont essentielles pour
garantir des performances optimales du système contrôlé.