Discussions au sujet de NI LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Remise à 0 d'un Sub VI après exécution

C'est vrais que j'aurais du vous proposer un VI plus propre, mais j'ai rapidement fait celui-ci en rassemblant les parties nécessaires au la compréhension du problème uniquement. Et elles n'étaient pas toujours toutes dans les mêmes boucles donc quand j'ai fait la rassemblement c'est devenu un peu bordélique!

 

En fait le problème est que mon régulateur PI conserve en mémoire  ses actions, par exemple, si son action intégrale à l'exécution d'avant étant de 30 Nm, j'aurai toujours mon action intégrale de 30 à l’exécution suivante. Mon moteur va donc accélérer et dépasser largement son SetPoint le temps que l'action intégrale diminue (je dois encore travailler à l'optimisation du régulateur). Je vais continuer a débugger en tentant de voir ou il serait susceptible de stocker ces variables d'une exécution à l'autre.

0 Kudos
Message 11 of 13
(332 Views)

" mon régulateur PI conserve en mémoire  ses actions "

 

- qu'appelles-tu exactement "mon régulateur PI" ? ...s'agit-il de ton sous-VI "PI_Regulator_SubVI.vi" ?

- qu'appelles-tu exactement "ses actions" ? s'agit-il des valeurs de sorties "Prop.action" et "Integ.action" ?

 

Ton sous-VI "PI_Regulator_SubVI.vi" ne comporte qu'une boîte de calcul ... et rien qui puisse "mémoriser" quoi que ce soit en mémoire d'une itération à l'autre, pas de shift-register, pas de feedback node, donc aucune rétroaction. Si ses valeurs de sorties "Prop.action" et "Integ.action" ont les mêmes valeurs entre deux itérations c'est que ce sous-VI s'est exécuté avec les mêmes valeurs d'entrée. Au passage, quelle est l'utilité de la While dans ce sous-VI (dont le terminal stop est à true?)

 

- également, pourquoi utiliser une "timed loop" et pas une simple While cadencée.

0 Kudos
Message 12 of 13
(327 Views)

- qu'appelles-tu exactement "mon régulateur PI" ? ...s'agit-il de ton sous-VI "PI_Regulator_SubVI.vi" ?

Oui, je parle bien du sous-vi.

- qu'appelles-tu exactement "ses actions" ? s'agit-il des valeurs de sorties "Prop.action" et "Integ.action" ?

La sortie du régulateur est le MV (Manipulated Value) et résulte de la somme des actions intégrales et proportionnelles. C'est MV qui dicte de la commande de couple à envoyer.

 

- également, pourquoi utiliser une "timed loop" et pas une simple While cadencée.

J'ai choisi une "timed loop" dans le but de pouvoir gérer les priorités entre mes différentes boucles.

 

Le calcul de l'action intégrale se fait en sommant les erreurs précédentes (E=SP-PV). Je crois que mon problème vient de là, le sub-vi doit reprendre l'ensemble des erreurs précédentes et non simplement celle de l'exécution en cour. 

0 Kudos
Message 13 of 13
(315 Views)