Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1525 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  algo de regulation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

algo de regulation

n°624199
got
Posté le 28-01-2004 à 18:57:30  profilanswer
 

est ce que quelqu'un aurai des algos ou exemple de code (C) pour des regulations type PID.. j'ai ressorti mes vieux cours mais franchement j'y comprend plus grd chose un petit algo m'aiderai bien :-p ou un line avec plein d'explication la desus chui preneur... voir mes des cours en pdf ;-) j'en demande trop .. oups

mood
Publicité
Posté le 28-01-2004 à 18:57:30  profilanswer
 

n°624203
nraynaud
lol
Posté le 28-01-2004 à 19:02:40  profilanswer
 

got a écrit :

est ce que quelqu'un aurai des algos ou exemple de code (C) pour des regulations type PID.. j'ai ressorti mes vieux cours mais franchement j'y comprend plus grd chose un petit algo m'aiderai bien :-p ou un line avec plein d'explication la desus chui preneur... voir mes des cours en pdf ;-) j'en demande trop .. oups  

asservissement peut-être non ? car faire du PID sur un point fixe, c'est un peu un char pour tuer une mouche (l'erreur de trainage, ou la réponse impulsionnelle c'est pas des notions super utiles).


---------------
trainoo.com, c'est fini
n°624210
got
Posté le 28-01-2004 à 19:15:43  profilanswer
 

oui oui c de l'asservissement sur de la temperature et de la pression..
reponse impulsionelle ça me rappel quelque chsoe par contre jamais entendu aprler d'erreur de trainage...!?)

n°624234
nraynaud
lol
Posté le 28-01-2004 à 20:07:18  profilanswer
 

bon, je la fait courte.
On a un système d'asservissement, une commande, un capteur et le système à asservir.
Le principe c'est de faire la différence entre la commande (ce qu'on voudrait que le système fasse) et la mesure du capteur (ce qu'il fait réellement).
 
on a donc :

Code :
  1. ...................e....................................s
  2. commande ----------->asservissement -----> système réel --->
  3. ..............^..........................................|
  4. ..............|..........................................|
  5. ..............\----------------capteur-------------------/


donc ce qu'on voudrait c'est que la différence commande-capteur (ici e, l'erreur du système) soit toujour nulle (on suppose le capteur parfait).
 
on va donc envoyer au système un signal qui dépend de l'erreur.
 
Le plus simple : on envoie au système un signal proportionnel (d'où le P) à l'erreur, plus l'erreur est grande et plus on vas envoyer d'énergie au système pour qu'il compense son erreur, puis, quand l'erreur est faible, ça donne peu d'énergie, pour pas "dépasser" la commande (faire des zig-zag).
ça marche bien en théorie, mais en pratique, quand l'erreur est faible, et que la commande ne bouge pas, on va garder cette petite erreur pendant longtemps.
 
Alors on ajoute un coefficient Intégral.
Ainsi, si on a une commande qui ne bouge pas et une petite erreur qui reste depuis quelques temps (erreur statique), le système va avoir tendance à la rattraper au cours du temps car l'intégrale de l'erreur va augmenter.
 
 
Mais si la commande varie ? bah avec notre intégrale de l'erreur, on tient compte du passé, hors le monde change, et on a toujours un train de retard (erreur de trainage, on fait monter la commande régulièrement, et on regarde de combien le système la suit). Hors on peut prévoir l'avenir, il existe plusiseurs méthode, mais la plus simple est le coefficient dérivé.
On ajoute au système, un coefficient dépendant de la dérivée de l'erreur. Si la commande varie, la dérivée de l'erreur va devenir grande (car le système ne réagit pas tout de suite) et va prendre plus d'importance que la partie intégrale (qui à court terme ne bouge que peu) et compenser ainsi le retard que nous fait prendre la partie intégrale.
 
Donc suivant ce qui se passe en commande, le coefficient intégral ou dérivatif prend de l'importance relative, le niveau absolut étant le coefficient proportionnel.
 
le schéma de l'asservissement devient :

Code :
  1. erreur----------------------->P------++-----> système réel
  2. .......||............................^^
  3. .......||............................||
  4. .......|\---->intégration---->I------/|
  5. .......\----->dérivation----->D-------/


 
Bien entendu, la vraie bataille consiste à choisir P, I et D, mais c'est une autre histoire.


Message édité par nraynaud le 28-01-2004 à 20:10:45

---------------
trainoo.com, c'est fini
n°624313
got
Posté le 28-01-2004 à 22:01:04  profilanswer
 

merci bcp ça c le rpincipe en gros je le connais j'ai aussi plein de savante equation que j'ai ressorti de mes vieux court plein de poussiere .. le pb c que je suis pas assez fort en math pour sirtir de ces equations un algo informatique quelconque...  
 
Merci pour ce rafraichissement tous de meme ;-)

n°624397
nraynaud
lol
Posté le 28-01-2004 à 23:56:50  profilanswer
 

pour faire le programme, c'est simple, tu as une grosse fonction d'asservissement qui prend en entrée une erreur (donc commande - capteur) et qui renvoie une valeur qui sera l'énergie à fournir au système.
 
 
la fonction en question sera appellée à chaque tic de l'horloge.
Elle stocke en statique (d'un appel sur l'autre) la valeur précédente de l'erreur (disons eprec) et la valeur du compteur d'intégration (disons iprec) ; initialisées toutes les 2 à 0 au premier tour.
 
la fonction à cette tronche (non testée) :

Code :
  1. double nextVal(double error) {
  2.   static double eprec = 0;
  3.   static double iprec = 0;
  4.   double deriv = (error - eprec) / deltaT;
  5.   double integrale = (error - eprec) * deltaT + iprec;
  6. //deltaT est le temps écoulé depuis le dernier appel de cette fonction
  7.   double result = P * error + I * integrale + D * deriv;
  8.   eprec = error;
  9.   iprec = integrale;
  10.   return reult;
  11. }


(attention que l'intégration est naïve et que la formulation de Kahan serait plus intelligente voir http://forum.hardware.fr/hardwaref [...] 9128-1.htm )
à noter que cette formulation permet d'avoir une horloge irrégulière, deltaT étant différent à chaque appel.
 
edit : oublié de faire tourner eprec et iprec.


Message édité par nraynaud le 29-01-2004 à 01:23:44

---------------
trainoo.com, c'est fini
n°624540
got
Posté le 29-01-2004 à 08:27:43  profilanswer
 

merci

n°624543
got
Posté le 29-01-2004 à 08:34:23  profilanswer
 

delta T est le temps entre chaque appel de la fonction?

n°624647
nraynaud
lol
Posté le 29-01-2004 à 11:08:52  profilanswer
 

got a écrit :

delta T est le temps entre chaque appel de la fonction?

oui, si ton horloge est régulière, c'est la période de l'horloge, sinon, c'est simplement le temps depuis le dernier appel. Cette dernière formulation est plus souple, il y a des cas (en particulier en informatique de bureau) où on ne peut pas savoir à l'avance quand un bout de code sera exécuté.


---------------
trainoo.com, c'est fini
n°625478
got
Posté le 29-01-2004 à 22:52:38  profilanswer
 

oki merci...

mood
Publicité
Posté le 29-01-2004 à 22:52:38  profilanswer
 

n°673924
scott
none
Posté le 15-03-2004 à 11:56:05  profilanswer
 

g rien compris a ces explications je cherche justement des cours pas trop dur sur la regulation PID je doit presenter des produits a mon taf le mois prochain et je ne sais pas a koi correspond ce type de régulation ...
si quelqun a un bon lien parceke avec google je ne trouve rien ou rien a mon niveau (bep electrotech et cet année 1ere bac pro energetique ).

n°673933
BifaceMcLe​OD
The HighGlandeur
Posté le 15-03-2004 à 12:10:43  profilanswer
 

nraynaud>  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  algo de regulation

 

Sujets relatifs
algo schematique[ALGO] Infos sur l'algo de Hirschberg
[HTML/JS/DOM]Algo casse tête ( Trouvé :) )[ALGO] Un truc à Arbre
[java/algo] Concours - implémenter une itf simple de gestion d'agenda.Probleme de PHP/MYSQL => je m'embrouille dans l'algo
[CAML] algo a comprendre - viendez tester lIA en meme tempsExercice d'algo [probleme resolu par Tentacle, algo p2 poste par Giz]
[Algo] Débutant à un poblème avec un exercice[Algo]Recherche de circuits dans un graphe
Plus de sujets relatifs à : algo de regulation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR