From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

[LV 2010] Problème wait

Bonjour,

 

J'ai un petit soucis avec un wait dans mon programme.

Je dois ouvrir ou fermer un relais en fonction d'une valeur de sortie d'un PID pour faire une régulation pH. Le temps d'ouverture est variable.

Quand mon programme tourne, le wait bloque le programme pendant le temps qui lui est demandé.

 

J'aimerais pouvoir donner une durée d'ouverture au relais sans utilisé de wait car il bloque l'aquisition de la valeur du pH et la valeur du PID ne sa calcule plus pendant ce temps.

 

Je suis un peu bloqué. Il faut surememnt repensé le programme depuis le début..

 

Des idées?

 

0 Compliments
Message 1 sur 11
3 759 Visites

Salut,

 

ton problème vient du fait que tout se passe dans la même boucle et que ton exécution est séquentielle : du moment que tu fais un wait, tu ne peux pas faire d'acquisition en même temps.

 

il faudrait effectivement que tu revois ton architecture et que tu fasses plusieurs boucles :

 - une qui fait l'acquisition et qui gère le PID

 - une auter qui gère ton relais

 

Cordialement

Benoît C.
Certified LabVIEW Developer
0 Compliments
Message 2 sur 11
3 757 Visites

Merci pour ta réponse. 

 

Par contre je devrais quand même stopper un instant ma boucle while d'aquisition et de calcul du PID pour envoyer les valeurs au relais non?

0 Compliments
Message 3 sur 11
3 748 Visites

pas forcément...

 

explique clairement ce que tu souhaites faire, et je t'expliquerai comment l'implémenter

 

Cordialement

Benoît C.
Certified LabVIEW Developer
0 Compliments
Message 4 sur 11
3 745 Visites

Donc j'ai un pH-mètre qui calcul la T° et le pH d'une solution.

Je récupère ces données (RS232) et en fonction de la valeur du pH le PID sort une valeur que j'utilise pour calculer la durée de fonctionnement d'une pompe actionnée par un relai.

 

J'aimerais :

1) que le calcul du pH et PID se fasse en continue.

2) toutes les 10s, que la pompe tourne pendant une durée déterminé par la valeur du PID (comme tu peux le voir dans le programme je lance la pompe à partir d'une valeur du PID de 20, mais ça c'est pas très important pour mon problème de boucle..)

 

Merci pour ton aide.

 

 

0 Compliments
Message 5 sur 11
3 741 Visites

je comprends pas bien l'intérêt de faire le calcul du PID en continu et de ne prendre qu'une valeur toutes les 10 secondes

 

tu n'as transmis que ton principal, et pas les autres VIs. Peux tu les envoyer aussi que je te fasse quelque chose de propre ?

 

Cordialement

Benoît C.
Certified LabVIEW Developer
0 Compliments
Message 6 sur 11
3 732 Visites

Oui enfin c'est plus un suivi du pH en continu en effet, le PID peut très bien être calculé toutes les 10s, ça ne changera rien à la régulation.

 

Le problème des sous-vi est que je commande les relais avec une vielle carte Velleman K8000. J'ai récupérer un "driver" de cette carte qui contient bcp de sous-vi. J'ai mis le dossier avec tt ces sous vi.

 

Je suis encore débutant sur LV et je me rend compte que je ne maitrise vraiment pas bien le programme...

 

0 Compliments
Message 7 sur 11
3 727 Visites

c'est normal de ne pas tout maîtriser au début, on est tous passé par là

je regarde ce que tu as envoyé et je j'essaye de te faire un exemple rapidement


Cordialement

Benoît C.
Certified LabVIEW Developer
0 Compliments
Message 8 sur 11
3 725 Visites

voilàa une première version qui te permettra de continuer

j'ai rajouté des commentaires dans le code pour te permettre de comprendre ce que j'ai fait.

 

n'hésites pas à poser des questions si besoin

 

Cordialement

Benoît C.
Certified LabVIEW Developer
Message 9 sur 11
3 716 Visites

parfait je vais tester ça demain. Je ne retourne au labo que mercredi donc je simulerai l'aquisition et les relais. 

 

Alors comment fais-tu pour envoyer la valeur du PID dans la 2e boucle. Comment s'appelle la commande avec le menu dérourlant?

Elle est partout dans le driver k8000. Je cherchais à faire cela. C'est une variable globale?

 

Merci pour le coup de main!

0 Compliments
Message 10 sur 11
3 709 Visites