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.
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.
le 02-17-2012 04:23 AM
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?
le 02-17-2012 04:45 AM
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
le 02-17-2012 06:31 AM
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?
le 02-17-2012 06:41 AM
pas forcément...
explique clairement ce que tu souhaites faire, et je t'expliquerai comment l'implémenter
Cordialement
le 02-17-2012 06:56 AM
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.
le 02-17-2012 07:16 AM
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
le 02-17-2012 07:33 AM
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...
le 02-17-2012 07:35 AM
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
le 02-17-2012 08:15 AM
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
02-17-2012 10:19 AM - modifié 02-17-2012 10:19 AM
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!