le 02-12-2013 09:11 AM
Bonjour à tous,
je dispose d'un générateur de tension et du code labview servant à le faire fonctionner ; la face avant servant d'IHM pour régler les paramètres sur la porteuse, la modulation, la fréquence d'échantillonage...etcLe code est sous la forme d'une structure à événements : lorsque l'on valide la modification d'un paramètre, un des événements se déclenche pour enregistrer cette modification dans le générateur.
Dans le cadre d'une expérience d'assez longue durée (environ 10000 mesures avec des paramètres différents pour la fréquence de la porteuse et l'amplitude de la modulation) j'aurais besoin d'automatiser le déclenchement de ces événements.
Je suis nouveau dans le monde de labview et je me suis plongé dans ce code pour essayer de le comprendre. C'est chose faites dans les grandes lignes.
Cependant j'ai du mal à trouver l'outil qui me permettrait d'automatiser ces changements de paramètres et de déclencher l'événement de validation de ceux-ci (valeur modifiée sur un booléen).
J'ai d'abord pensé le faire avec une structure séquencée mais je n'arrive pas à imbriquer les structures de façon à ce que le changement de valeur du booléen dans la structure séquencée se répercute dans la structure à événements.
J'ai aussi pensé à retirer la struture d'événements puisque l'aspect IHM ne m'intéresse plus mais cela implique une restructuration du code assez longue dont je ne suis pas sûr de me sortir.
En fouillant un peu sur le net j'ai trouvé des choses intéressantes telles que "enregistrement dynamique à des événements", "VI callback d'événement" ou "Automation dynamique" avec lesquelles je pourrais peut-être m'en sortir mais ça m'a l'air assez compliqué de premier abord et j'avoue ne pas avoir exploré ces pistes en détail pour le moment.
Donc voilà, j'aurais aimé savoir si une de mes pistes vous semble plus pertinente que les autres ou si vous en voyez une autre qui pourrait convenir à mon besoin.
Je peux bein sûr donner plus de détails et essayer d'être plus clair si ça ne l'est pas assez.
Matt59
le 02-12-2013 09:31 AM
Bonjour,
Pour déclencher un événement par exemple sur un booléen de type valeur changer, il faut utiliser par programmation le noeud de propriété valeur(signalisation).
Si tu souhaites garder ta structure événement, tu peux peut être créer en parallèle une machine d'état (avec les tempo nécessaires) en utilisant pour chaque changement de commande le noeud de propriété décrit au dessus.
Cdlt,
le 02-12-2013 10:42 AM
Merci des explications.
Le nœud de propriété valeur(signalisation) correspond bien à ce que je veux faire.
Cependant quand je le teste dans un VI tout simple (joint) le comportement est assez étrange :
j'utilise une structure séquencée pour modifier alternativement deux booléens qui correspondent aux deux cas de la structure événement, mais alors qu'il n'y a pas de problème pour le premier cas, le deuxième ne se déclenche jamais alors qu'ils sont identiquement construits.
Quelqu'un saurait dire d'où peut venir ce comportement ?
Je vais maintenant jeter un coup d'œil à la réalisation d'une machine d'états.
Cordialement
Matthieu
le 02-12-2013 10:50 AM
Le comportement étrange est normal.
La structure événement ne s'exécute qu'une seul fois.
Au démarrage du vi, la structure événement attend. On indique un changement de valeur sur le boolléen n°1 -> la structure événement s'exécute.
Puis on envoie l'événement sur le bouton n°2, mais la structure événement n'est plus en attente, elle est terminée !
Essayez le même vi en insérant une boucle while autour de la structure événement, et ca fonctionnera !
Cdlt,
le 02-12-2013 10:50 AM
La structure évènement n'est pas dans une boucle. Elle va donc s'executer une fois et c'est tout.
En, la mettant dans une boucle elle pourra voir d'autres événement après le premier.
Par contre il faudra prévoir un moyen de l'arreter par exemple un bouton stop sur la face avant avec un cas value change qui écrit la valeur du bouton dans le terminal de la boucle.