Laboratoire de régulation numérique. Programmation d'un régulateur PID numérique



Documents pareils
Chapitre 5 : Les procédures stockées PL/SQL

C f tracée ci- contre est la représentation graphique d une

Guide de l'assistance à distance dans Windows XP

Catalogue - Formation en «électropneumatique et systèmes automatisés process control system»

LES DÉTERMINANTS DE MATRICES

OOo4Kids, la suite OpenOffice adaptée aux enfants

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Propagation sur réseau statique et dynamique

FOIRE AUX QUESTIONS ACT! 2009

Comment retrouver le fichier "bingo" sauvegardé dans l'ordinateur? Socle commun

Master4Light. Caractérisation Optique et Electrique des Sources Lumineuses. Equipement 2-en-1 : source de courant et spectrophotomètre

Manuel d'installation de DVD MAKER USB2.0

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

Microsoft Application Center Test

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Comment enregistrer simplement toute musique restituée par votre PC

EN Télécom & Réseau S Utiliser VMWARE

GESTION DE L'ORDINATEUR

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

Virtualisation de Windows dans Ubuntu Linux

Généralités sur le Langage Java et éléments syntaxiques.

Installation et prise en main

TSTI 2D CH X : Exemples de lois à densité 1

Manuel d Utilisateur - Logiciel ModAFi. Jonathan ANJOU - Maud EYZAT - Kévin NAVARRO

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

Edition de sites Jahia 6.6

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

Rapidolect Les Productions de la Columelle ( ) Page 1

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier 1. Installation de Windows Server 2003 Standard Edition (pour le serveur)

O b s e r v a t o i r e E V A P M. Taxonomie R. Gras - développée

Onglet sécurité de Windows XP Pro et XP Home

Application 1- VBA : Test de comportements d'investissements

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Trier les ventes (sales order) avec Vtiger CRM

Cours Langage C/C++ Programmation modulaire

Préconisations Portail clients SIGMA

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

SYSTEMES LINEAIRES DU PREMIER ORDRE

TP1. Outils Java Eléments de correction

Programme des formations Gamme automates

Cahier Technique Envoi par à partir des logiciels V7.00

Calibrage du moniteur avec Monitor Profiler de Little CMS

Aperçu de la sauvegarde sous Windows 7

Guide utilisation SFR Sync. SFR Business Team - Présentation

Utilisation du logiciel GALAAD

Sharpdesk V3.3. Guide d installation Push pour les administrateurs système Version

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

Les structures. Chapitre 3

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Systeme d'exploitation

Chapitre 1 Régime transitoire dans les systèmes physiques

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

Conception Electronique (CEL) Prof. Maurizio Tognolini

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Utilisation de l'outil «Open Office TEXTE»

OBJECTIFS. I. A quoi sert un oscilloscope?

Unité de formation No 1 : la description d un processus de travail accompli par l apprenti au sein de l entreprise d apprentissage

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Programmation Objet - Cours II

UTILISATION D'UNE PLATEFORME DE TRAVAIL COLLABORATIF AVEC DES ELEVES DE TERMINALE STG

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

Best.-Nr Manuel d utilisation logiciel Lindab Analysis. Logiciel pour la gestion des appareils de mesures Lindab PC 410 et LT600

IDENTIFICATION CONDITIONS D ÉVALUATION : le public ciblé : Sous statut scolaire En apprentissage En formation continue. Niveau II (bac+4 et 3)

Guide d'utilisation de l'instrument électronique en ligne d'auto-évaluation du CAF

1. Présentation du TP

Projet : PcAnywhere et Le contrôle à distance.

La polarisation des transistors

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

POLITIQUE DE BIOSÉCURITÉ

Une solution de déploiement Windows Windows Deployment Service. Arnault Carrere - INRIA Yann Damon - CRPP

Procédure Configuration Borne Wifi. Attribution d'une adresse IP

Récupérer au format AVI un extrait d'un DVD à l'aide du logiciel FlaskMpeg

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

TD : Codage des images

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Mathématiques et petites voitures

Scanneur d images Instructions préliminaires

Windows XP niveau 2. D. Hourquin, Médiapôle St Ouen l'aumône

PIC EVAL Dev Board PIC18F97J60

Twincat PLC Temperature Controller. Régulation de Température à l aide de TwinCAT PLC.

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Généralités sur les systèmes d Exploitation

ETI/Domo. Français. ETI-Domo Config FR

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Documentation utilisateur. [EIP] TransLSF

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

GANTTPROJECT. Julien TENDERO

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Découverte de Microsoft Office 2010 et de Microsoft Exchange Server 2010

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

PROCÉDURE D'INSTALLATION WINDOWS 7 (32 ou 64 bit)

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Transcription:

Programmation d'un régulateur PID numérique Table des matières 1 Introduction 2 2 Réalisation d'un régulateur PID numérique 2 2.1 But et caier des carges du travail................. 2 2.2 Environnements matériel et logiciel à disposition.......... 2 2.2.1 Edition du cier regul.c, programmation du régulateur.. 3 2.2.2 Compilation du cier regul.c................ 4 2.2.3 Essai du régulateur...................... 5 3 Canevas du cier regul.c 6 4 Régulateur PID numérique 7 4.A Loi de commande........................... 7 4.B Algoritme selon "textbook"..................... 8 4.C Algoritme modié.......................... 9 Régulateur PID numérique, v.1.7 1 MEE \pid_num.tex

1 Introduction Le but de ce travail de laboratoire est de programmer puis de mettre en oeuvre une première version du régulateur numérique de type PID. L'algoritme du régulateur sera programmé en langage de aut niveau C sur Windows XP puis testé sur un système à régler du laboratoire simulateur analogique, foen, rail, etc. Bien que l'environnement de travail proposé Windows XP, temps réel, Simulink, etc puisse paraître relativement complexe, il est bon de se rappeler que la seule et unique fonction C que l'on demande de programmer est Le code devra se trouver dans le cier reg_pid regul.c L'annexe 4 page 7 fournit un rappel téorique le régulateur PID numérique. 2 Réalisation d'un régulateur PID numérique 2.1 But et caier des carges du travail On propose dans le cadre de cette manipulation de laboratoire d'écrire le programme C implantant l'algoritme du régulateur PID numérique présenté en annexe 4. Ce programme sera utilisé ultérieurement dans le cadre du laboratoire de régulation numérique. Le programme à écrire doit orir les fonctionnalités suivantes : régulateur PID comprenant les trois actions P, I et D ; limitation logicielle de la grandeur de commande calculée par le régulateur. Le code du régulateur PID devra être testé et validé de façon à ce que l'utilisateur ait l'assurance que les gains K p, T i et T d ainsi que la période d'écantillonnage qu'il applique sont bel et bien ceux pris en compte par la fonction implantant l'algoritme du régulateur. Il est nécessaire de dénir la procédure de test, qui fait partie intégrante de ce travail. Le programme devra être soigneusement documenté et l'on fera usage notamment de variables de type tableau pour la mémorisation des données nécessaires au fonctionnement du régulateur. La fonction programmée sera codée dans le cier regul.c dont le canevas est à disposition cier regul.txt, voir annexe. Il s'agit du seul cier à éditer! 2.2 Environnements matériel et logiciel à disposition Il faut commencer par télécarger et décompresser le cier Régulateur PID numérique, v.1.6 2 MEE \pid_num.tex

pid_num.zip à partir du site ttp://www.iai.eig-vd.c/ mee//laboratoires_regulation_aut.tm dans votre propre répertoire qui devrait être d:\users ou un de ses sousrépertoires que vous pouvez créer. 2.2.1 Edition du cier regul.c, programmation du régulateur La seule unique fonction que l'on demande de programmer devra se trouver dans le cier regul.c. Pour éditer le code, l'éditeur "PFE" est installé et son utilisation est recommandée. On peut l'appeler par son icône à partir du bureau. Le canevas de ce cier est fourni. Il montre que les signaux provenant de la carte d'acquisition sont disponibles dans les variables globales in0, in1, in2 et in3. f l o a t out0, out1 ; / s o r t i e s a n a l o g i q u e s / f l o a t in0, in1, in2, in3 ; / e n t r e e s a n a l o g i q u e s / / d e c a l a g e s a a p p l i q u e r sur l e s s o r t i e s a n a l o g i q u e s / f l o a t offset_out0, o ffset_out1 ; / d e c a l a g e s a a p p l i q u e r sur l e s e n t r e e s a n a l o g i q u e s / f l o a t o f f s e t _ i n 0, o f f s e t _ i n 1, o f f s e t _ i n 2, o f f s e t _ i n 3 ; Les paramètres du régulateur doivent quant à eux être déclarés comme variables globales, par exemple comme suit : / g a i n s du r e g u l a t e u r PID / f l o a t Kp = 0. 0 ; f l o a t Gi = 0. 0 ; f l o a t Td = 0. 0 ; f l o a t a = 0. 0 1 ; Le paramètre Gi est égal à 1 T i. Pourquoi le gain sur l'action intégrale est-il implanté de cette manière? De façon à ce que ces paramètres soient visibles et modiables en ligne à partir de RTPWatc, il faut les enregistrer dans le tableau var comme suit : D e c l a r a t i o n des v a r i a b l e s a c c e s s i b l e s d e p u i s l e PC v i a RTPWatc t_var var [ ] = {..., var_float Kp, var_float Gi, var_float Td,..., end_ var_ list } ; Si vous l'estimez nécessaire, vous pouvez bien sûr créer d'autres fonctions privées de regul.c, comme par exemple une fonction de limitation de la commande. A noter que les valeurs numériques initiales, "par défaut" des paramètres peuvent être spéciées dans regul.c : la fonction regulation_init est appelée au démarrage et les initialisations peuvent y être placées : Régulateur PID numérique, v.1.6 3 MEE \pid_num.tex

I n i t i a l i s a t i o n du r e g u l a t e u r void r e g u l a t i o n _ i n i t void { / D e f i n i t i o n de l a f o n c t i o n e f f e c t u a n t l a r e g u l a t i o n de l a b o u c l e no1 / regulation_boucle_interne = regul_pid ; / Regulateur 1 / mode_boucle_interne = 1 ; / mode r e g u l a t i o n / / D e f i n i t i o n de l a f o n c t i o n e f f e c t u a n t l a r e g u l a t i o n de l a b o u c l e no2 / regulation_boucle_externe = regul_rien ; / Regulateur 2 / mode_boucle_externe = 0 ; / mode r e g u l a t i o n / / I n i t i a l i s a t i o n des parametres de l a r e g u l a t i o n / Kp = 0. 0 ; Gi = 0. 0 ; Td = 0. 0 ; a = 0. 0 1 ; AW = 0 ; offset_out0 = 0. 0 ; offset_out1 = 0. 0 ; o f f s e t _ i n 0 = 0. 0 ; o f f s e t _ i n 1 = 0. 0 ; o f f s e t _ i n 2 = 0. 0 ; o f f s e t _ i n 3 = 0. 0 ; } w = 0. 0 ; umax = 1 0. 0 ; Les valeurs pourront ensuite être modiées en ligne via l'interface RTPWatc. 2.2.2 Compilation du cier regul.c Vous pouvez compiler votre programme en lançant un compilateur C/C++ à partir de l'éditeur PFE, menu Execute DOS Command and Capture Output. La commande make ou make -B équivalente à l'opération build doit être tapée. Si aucune erreur n'est détectée, le cier objet regul.obj est généré. Dans la négative, la fenêtre PFE ouverte indique le message d'erreur. Régulateur PID numérique, v.1.6 4 MEE \pid_num.tex

2.2.3 Essai du régulateur Lorsque le code temps réel a été compilé sans erreur, il faut lancer RTPWatc et utiliser l'outil Enregistreur. Sélectionner Autre code temps réel dans le menu et coisir votre DLL se trouvant dans votre répertoire de travail. Régulateur PID numérique, v.1.6 5 MEE \pid_num.tex

3 Canevas du cier regul.c REGUL.C Version Date Auteur Motif 1 04/05/98 MEE Regulateur s c a l a i r e de courant Regulateur PID de p o s i t i o n 2 14/08/99 MEE Mise a j o u r 3 06/09/99 MEE Adaptation pour temps r e e l NT 4 07/02/01 MEE Labo PID numerique 5 11/03/02 MEE Labo PID numerique avec c a r t e NI #define REGUL_C #include " r e g u l. " / e n t ê t e de l ' u n i t é / Variables, c o n s t a n t e s e t f o n c t i o n s r e l a t i v e s a l a r e g u l a t i o n f l o a t out0, out1 ; / s o r t i e s a n a l o g i q u e s / f l o a t in0, in1, in2, in3 ; / e n t r e e s a n a l o g i q u e s / / d e c a l a g e s a a p p l i q u e r sur l e s s o r t i e s a n a l o g i q u e s / f l o a t offset_out0, o ffset_out1 ; / d e c a l a g e s a a p p l i q u e r sur l e s e n t r e e s a n a l o g i q u e s / f l o a t o f f s e t _ i n 0, o f f s e t _ i n 1, o f f s e t _ i n 2, o f f s e t _ i n 3 ; f l o a t w; / consigne / f l o a t w_0 = 0. 0 ; / d e c a l a g e consigne / / p e r i o d e d ' e c a n t i l l l o n n a g e / f l o a t Te = 0. 0 1 ; f l o a t Kp = 0. 0 ; / g a i n s du r e g u l a t e u r PID / f l o a t Gi = 0. 0 ; f l o a t Td = 0. 0 ; f l o a t a = 0. 0 1 ; D e c l a r a t i o n des v a r i a b l e s a c c e s s i b l e s d e p u i s l e PC v i a RTPWatc t_var var [ ] = { var_float w, var_float offset_out0, var_float o f f s e t _ i n 0, var_float o f f s e t _ i n 1, var_float w_0, var_float Te, var_int T_u, var_float A_u, end_ var_ list } ; Regulateur PID void regul_pid { / C a l c u l de l a consigne / w = generateur_u 2 + w_0; // Mesures y = in0 o f f s e t _ i n 0 ; / Algoritme / out0 =... ; Régulateur PID numérique, v.1.6 6 MEE \pid_num.tex

} I n i t i a l i s a t i o n du r e g u l a t e u r void r e g u l a t i o n _ i n i t void { / D e f i n i t i o n de l a f o n c t i o n e f f e c t u a n t l a r e g u l a t i o n de l a b o u c l e no1 / regulation_boucle_interne = regul_pid ; / Regulateur 1 / mode_boucle_interne = 1 ; / mode r e g u l a t i o n / / D e f i n i t i o n de l a f o n c t i o n e f f e c t u a n t l a r e g u l a t i o n de l a b o u c l e no2 / regulation_boucle_externe = regul_rien ; / Regulateur 2 / mode_boucle_externe = 0 ; / mode r e g u l a t i o n / / I n i t i a l i s a t i o n des parametres de l a r e g u l a t i o n / Kp = 0. 0 ; Gi = 0. 0 ; Td = 0. 0 ; a = 0. 0 1 ; AW = 0 ; offset_out0 = 0. 0 ; offset_out1 = 0. 0 ; o f f s e t _ i n 0 = 0. 0 ; o f f s e t _ i n 1 = 0. 0 ; o f f s e t _ i n 2 = 0. 0 ; o f f s e t _ i n 3 = 0. 0 ; } w = 0. 0 ; umax = 1 0. 0 ; 4 Régulateur PID numérique 4.A Loi de commande La loi de commande du régulateur PID numérique peut être obtenue par discrétisation de celle d'un régulateur PID analogique u t = K p e t + 1 t e τ dτ + T d de T i dt où et est le signal d'erreur. Cette loi est discrétisée en l'évaluant à l'instant d'écantillonnage k noté k par la suite an alléger la notation, étant constante. Pour ce faire, on eectue les substitutions u t u [k] e t e [k] de dt 0 e [k] e [k 1] Régulateur PID numérique, v.1.6 7 MEE \pid_num.tex

A D D B A F I HEIG-VD On voit que la dérivée de et est approximé par la pente de la droite liant l'écantillon présent e[k] au précédent e[k 1]. La résolution de l'intégrale passe par le calcul de l'aire comprise entre l'axe t et le signal et. Une approximation de cette aire peut être faite par la métode des rectangles : A E A H A? J = C A J A A A A D D D J L'intégrale de et à l'instant t = k est donc approximée par une somme de rectangles de largeur et de auteur On a : k 0 e[0] e[1] e[2]... e[k 1] k 1 e τ dτ e [l] La loi de commande discrète du régulateur PID numérique devient : u [k] = K p e [k] + 1 k 1 e [k] e [k 1] e [l] + T d T i 4.B Algoritme selon "textbook" La forme de la loi de commande obtenue ci-dessus se prête mal à la programmation, puisqu'elle nécessite la mémorisation de toutes les valeurs passées e[0], e[1], e[2],..., e[k 1] du signal d'erreur numérique e[k]. An de contourner cette Régulateur PID numérique, v.1.6 8 MEE \pid_num.tex

diculté, écrivons les lois de commande aux instants présent k et et précédent [k 1] et soustrayons membre à membre : u [k = K p e [k] + 1 k 1 e [k] e [k 1] e [l] + T d T i u [k 1] = K p e [k 1] + 1 k 2 e [k 1] e [k 2] e [l] + T d T i On obtient tout d'abord u [k] u [k 1] = K p [e [k] e [k 1] + K k 1 p k 2 e [l] e [l] T i } {{ } puis e[k 1] e [k] e [k 1] + K p T d e [k 1] e [k 2] u [k] u [k 1] = K p 1 + T d e [k] + K p 1 + 2 T d e [k 1] + K p T d e [k 2] T } {{ } i } {{ } } {{ } b 0 b b 2 1 et nalement : u [k] u [k 1] = b 0 e [k] + b 1 e [k 1] + b 2 e [k 2] La loi de commande du régulateur PID numérique s'écrit donc : avec : u [k] = u [k 1] + b 0 e [k] + b 1 e [k 1] + b 2 e [k 2] b 0 = K p 1 + T d b 1 = K p b 2 = K p Td 4.C Algoritme modié 1 + T i 2 T d Pour des raisons pratiques, liées notamment à des problèmes de limitation, on a souvent intérêt à calculer les contributions intégrale et dérivée séparément, i.e. à programmer : i_e [ k ] = i_e [ k 1] + e [ k 1] ; d_e [ k ] = e [ k ] e [ k 1] f e ; C'est cette forme que l'on propose d'implanter ici dans le code C. Régulateur PID numérique, v.1.6 9 MEE \pid_num.tex

Version du document Date Notes v1.1 12 mars 2002 Traduction à partir de Word, adaptation à RTPWatc et à la carte National v1.2 11 mars 2003 v1.3 9 mars 2004 v1.4 3 janvier 2005 v1.5 10 mars 2005 v1.6 1 er octobre 2007 v1.7 Tab. 1 Versions publiées Régulateur PID numérique, v.1.6 10 MEE \pid_num.tex