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

  FORUM HardWare.fr
  Programmation
  Java

  regulateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

regulateur

n°1240946
pdufranc
Posté le 07-11-2005 à 23:46:04  profilanswer
 

Bonjour  
Je cherche à programmer un regulateur de flux de données (par un PID).
J'ai des données qui arrivent d'un coté (de maniere plus ou moins reguliere),
 je les ressort de l'autre. La sortie doit être reguliere , ne doit pas presenté d'acoup,  
il faut eviter les petites fluctuations, elle doit rattrape un retour s'il y a.
L'objectif est d'avoir le sortie la plus fluide possible.
Merci d'avance
 :o  


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
mood
Publicité
Posté le 07-11-2005 à 23:46:04  profilanswer
 

n°1240947
masklinn
í dag viðrar vel til loftárása
Posté le 07-11-2005 à 23:47:09  profilanswer
 

Et donc, quelles idées as tu pour le moment?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1240990
pdufranc
Posté le 08-11-2005 à 07:54:48  profilanswer
 

J'ai fait un rattrapage et regulation lineaire, par palier, mais ca saccade


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
n°1241090
nraynaud
lol
Posté le 08-11-2005 à 11:33:45  profilanswer
 

et pour le retard, tu comptes faire quoi ? ton système ne sera pas temps réel, si rien ne t'oblige à faire du périodique en contrôle de processus, c'est pas mal d'avoir un retard borné quand même.
 
plus sérieusement, tu fais un accumulateur pour l'intégrateur (à 2 compteurs, comme expliqué par Kahan), tu notes la dernière valeur pour la dérivée, tu notes la date à laquelle tu as pris la dernière valeur, et en voiture Simone, out=p+i+d.


---------------
trainoo.com, c'est fini
n°1241231
pdufranc
Posté le 08-11-2005 à 14:19:28  profilanswer
 

Ou est ce que je peux trouver la formule de Kahan ( algorithme si possible en java).
merci d'avance


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
n°1241257
souk
Tourist
Posté le 08-11-2005 à 14:27:10  profilanswer
 
n°1241305
nraynaud
lol
Posté le 08-11-2005 à 14:56:56  profilanswer
 

oué, je vais lui filer direct [:roane]
 
tu as ton accumulateur s qui sera l'intégrale du signal de 0 à maintenant, et es, l'erreur lors du dernier calcul de s. s et es sont conservées d'un tour à l'autre.
in c'est la nouvelle valeur de l'entrée, t le temps écoulé depuis la dernière mesure :
 

Code :
  1. float tin = t*in;
  2. float temp = tin - es;
  3. float sPrec = s; // somme au coup précédent
  4. s += temp; // nouvelle somme corrgiée de toutes les erreur précédentes.
  5. es = (s - sPrec ) - temp; // nouvelle erreur


 
s et es auront comme valeur initiale zéro.
 
pour expliquer : quand la somme devient grande, on a la valeur d'entrée qui devient très inférieure à la somme, l'addition perd donc une tonne de bits, si on additionne direct l'ancienne somme avec la nouvelle valeur.
 
on a une estimation de l'erreur au coup précédent, on soustrait cette erreur non pas à la somme (l'erreur est plutôt petite) mais à la valeur d'entrée (qui a une taille plus comparable à l'erreur), puis on ajoute cette valeur "corrigée" à la somme. Ensuite, on calcule l'erreur qu'on a faite lors de cette dernière opération. s - sPrec représente la valeur d'entrée accompagné de l'erreur qu'on a faite lors de in+s (parce que si s>> temp, on a s~sPrec, donc cette soustraction est juste) on soustrait l'erreur précédente (déjà corrigée) et la valeur d'entrée pour retrouver l'erreur faite au dernier coup.
 
voiloù, c'est plus complexe que la simple addition, mais c'est très important, un intégrateur dérive très vite en pratique.


---------------
trainoo.com, c'est fini
n°1241432
pdufranc
Posté le 08-11-2005 à 16:56:35  profilanswer
 

quand je regarde es il vaut toujours 0 ce qui est logique au vue du code
 
Voila un exemple de mon probleme :
tour 1 : 200 valeurs en stock j'en consomme x1 en t1 (X1 <200)
tour 2 : 250 valeurs en stock j'en consomme x2 en t2 (X2 <250) le stock a augmenté car j'ai eu plus d'apport que de consommé
tour 3 : 220 valeurs en stock j'en consomme x3 en t3 (x3 <220) le stock a diminue car j'ai eu moins d'apport que de consommé
tour 4 : 180 valeurs en stock j'en consomme x4 en t4
tour 5 : 210 valeurs en stock j'en consomme x5 en t5
tour 6 : 210 valeurs en stock j'en consomme x6 en t6
......
 
ce que je cherche c'est à reguler les x consommés pour que mon stock soit quasi nul, et que les x que je consomme ne varie pas trop rapidement car ma sortie (x ) doit etre fluide.
 
J'espere que j'ai reussi à vous presenter mon probleme.
Cordialement.
 
 
 
 


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
n°1241438
nraynaud
lol
Posté le 08-11-2005 à 17:03:08  profilanswer
 

heu, tu as utilisé des entiers ???


---------------
trainoo.com, c'est fini
n°1241449
pdufranc
Posté le 08-11-2005 à 17:12:29  profilanswer
 

non
mais :  
es = (s - sPrec ) - temp;  
avec s = SPrec+temp
on a bien es =0;
 
Une petite question est ce que mon exemple est clair ?
 


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
mood
Publicité
Posté le 08-11-2005 à 17:12:29  profilanswer
 

n°1241459
nraynaud
lol
Posté le 08-11-2005 à 17:27:43  profilanswer
 

oui, mais là on est dans le monde de la précision limitée, comme sPrec >> in (car l'intégrale est très suppérieure à la valeur) on a une grosse perte de précision dans l'addition. Donc toutes les égalitées n'en sont pas.
 
C'est par exemple à cause d'un truc comme ça (enfin, approchant) qu'un partriot a raté un scud irakien.


---------------
trainoo.com, c'est fini
n°1241462
nraynaud
lol
Posté le 08-11-2005 à 17:32:28  profilanswer
 

http://forum.hardware.fr/hardwaref [...] tm#t563814
un exemple de perte de précision.


---------------
trainoo.com, c'est fini
n°1241478
nraynaud
lol
Posté le 08-11-2005 à 17:46:24  profilanswer
 

en fait, si j'insiste sur cette formulation de l'intégrale, c'est pas pour pinailler.
 
Le coefficient intégral de la correction sert à corriger les très petites erreurs de position dans le système (souvent des frottements et jeux). Il ne s'agit donc pas d'avoir une intégrale fausse, vu qu'elle est justement destinée à corriger de petites variations.


Message édité par nraynaud le 08-11-2005 à 17:46:51

---------------
trainoo.com, c'est fini
n°1241900
pdufranc
Posté le 09-11-2005 à 00:50:44  profilanswer
 

dans :  
 
float tin = t*in;  
float temp = tin - es;  
float sPrec = s; // somme au coup précédent  
s += temp; // nouvelle somme corrgiée de toutes les erreur précédentes.  
es = (s - sPrec ) - temp; // nouvelle erreur
 
 
Je ne vois pas l'intégrale ?
Est ce que je peux te telephoner mercredi dans la matinée ??
merci
 
 
 
 

n°1241902
the real m​oins moins
Posté le 09-11-2005 à 01:19:17  profilanswer
 

[:rofl]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1241937
pdufranc
Posté le 09-11-2005 à 07:54:58  profilanswer
 

l'integrale c'est le s ??


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
n°1241997
nraynaud
lol
Posté le 09-11-2005 à 10:45:17  profilanswer
 

[:rofl]
 
oui, l'intégrale de 0 à maintenant de l'entrée c'est le s.


Message édité par nraynaud le 09-11-2005 à 10:46:24

---------------
trainoo.com, c'est fini

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

  regulateur

 

Sujets relatifs
Plus de sujets relatifs à : regulateur


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