le 02-18-2015 02:09 AM
Bonjour à tous,
Je vous explique mon problème : j'utilise le bloc rampe par échantillon pour que ma consigne atteigne sa valeur de manière progressive. Mon problème, c'est que lorsque ma rampe par échantillon est terminée, ma consigne n'est pas forcement en adéquation parfaite avec la valeur de fin de ma rampe exemple :
Si on prend une courbe avec l'accélération en ordonnée et la fréquence en abscisse. Le premier point de ma consigne est à 1g 50Hz, Ma rampe par échantillon va donc commencée à 1/20=0.05 et terminée à 1g. La génération en temps réel suivra donc cette consigne mais il m'arrive que lorsque ma rampe est à 1 que ma consigne réel soit à 0.5 par exemple car l'asservissement est parfois long.
Comme vous le voyez mon programme est fait pour qu'a la fin de ma rampe on sorte de la boucle while.
Ce que je souhaite c'est sortir de cette boucle while à condition que ma rampe soit terminée, mais aussi que ma consigne soit égale à la valeure de fin de ma rampe. Et la ou je bloque, c'est que si je maintiens plus longtemps que prévu la valeur de ma rampe en attente celle-ci me renvoie une valeur erronnée.
Cordialement
le 02-19-2015 05:30 AM
UP
le 02-20-2015 07:36 AM
Bonjour Geoff54,
Pour clarifier les choses, la taille du tableau de ta rampe est de 4000 et tu as activé l'indexation sur ce tableau.
C'est à dire qu’à chaque tour de boucle la valeur suivante du tableau va être prise.
Après 4000 tours de boucle, tu vas atteindre la fin de ton tableau de ta rampe, la valeur renvoyée sera donc 0 et non "une valeur erronée".
Si tu ne veux pas qu'un 0 soit généré mais une valeur définie (dernière valeur de la rampe) il suffit de tester le nombre d'itération de la boucle while:
< 4000, on prend les données du tableau rampe
> 4000, on génère une valeur définie
Les conditions d'arrêt ne changent pas et sont " Rampe entièrement générée" ET "Consigne atteinte"
Bonne journée,
Valentin
Certified LabVIEW Architect
Certified TestStand Architect
Certified LabWindowsCVI Developer
National Instruments France