2 Structure événement dans machine à état
Bonjour ,
J'utilise 2 structures événements dans une structure d'état mais je n'arrive pas à affecter 2 actions différente (par 2 fois) avec le même booléen .
Les action arrivent simultanément sans que j'ai pu faire les deux actions l'une après l'autre.
J'ai mis en fichier attaché ,un résumé de mon application
Comment faire , une idée ?
PS je veux garder deux structures évenements car j'ai plusieurs pages
merci
Michel
Pièces jointes :
Two_event.vi 13 KB
Bonsoir,
Regarde si s'est ce que tu veux faire.
Bon courage.
Philippe B.
Certified Associate Developer / Dépt Moyens d'essais
www.ingenia-system.com
Pièces jointes :
Two_event.vi 12 KB
Similar Messages
-
Structure Événement dans un sous-vi
Bonjour,
Je cherche à optimiser mon programme en mettant toutes mes fonctions sous forma de sous-vi.
Néanmoins, j'ai remarqué qu'une structure événement exécute uniquement la condition de timeout lorsque qu'elle se trouve dans un sous-vi.
Pouvez vous me confirmer le fait qu'une structure événement ne fonctionne que si elle est directement dans le programme principale.
Citation: http://forums.ni.com/t5/Discussions-de-produit-de-NI/Structure-evenement-dans-un-sous-vi/m-p/1119267...
une structure événement peut être considérer comme des interruptions dans d'autres langage. il doit être dans un programme principal. Seul ce qui est à l'intérieur peut être fait en sous vis.
Cordialement
L.MICOU
Labview 8.2 version étudiante
Sound & Vibration Toolkit
Résolu !
Accéder à la solution.Bonjour,
Le timeout d'une structure évènement fonctionne aussi bien dans un VI principal que dans un sous VI à partir du moment ou vous avez indiqué une valeur de timeout à la structure ( par défaut -1).
La structure évènement permet de monitorer des évènements générés par la face-avant / les composants de la face-avant du même VI. Cependant une structure évènement peut être utilisée pour monitorer des évènements utilisateurs (créés par vous) et dans ce cas elle peut être utilisée dans un VI principal comme dans un sous VI.
Cordialement,
Da Helmut -
Bonjour,
J'ai un petit problème concernement l'utilisation de la stucture évènement. Ce que je souhaiterai faire c'est d'afficher une boite dialogue en fonction d'un changement de variables. Pour être plus précis j'ai 2 variables que l'on nomera X et Y que l'on peut modifier manuellement et je voudrais afficher un message dès que l'une d'entre elle à été changé. Mais le porblème est que je ne suis pas sûr qu'on puisse utiliser une structure évènement en fonction de 2 variables et j'ai lu sur le forum que mettre 2 structures évènements dans le même VI n'est pas conseillé. Donc je suis un peu bloqué. Tout aide de votre part serai la bien venue
Merci d'avance.Oui Nathand a raison
Suis ses instructions
Je te mets un exemple
A+
Charly
It's always sunny in California! Certified LabVIEW Associate Developer!
Attachments:
EventStructure.vi 11 KB -
Peut-on "désactive​r" des événements dans une structure Evénement?
Bonjour,
J'ai dans mon VI une structure événements dont les conditions d'événements sont reliées au changement de valeur de certaine de mes données.
Ces conditions me permettent de ne pouvoir valider l'utilisation d'un interrupteur que lorsque l'utilisateur à rempli certaines informations sur la face avant (valeurs d'initialisation de mon VI).
Une fois l'utilisation de cet interrupteur devenu valide, je désire que mes conditions d'événement ne soit plus valide: je ne désire plus que lorsque mes données changent effectuer les actions de certaine de mes conditions d'événement.
Je cherche donc à faire un peu comme pour un microcontroleur:
- Valider interruption X,Y,Z
- si interrupteur basculé dévalider interruption X et Z
X,Y,Z correspondant à mes conditions 1, 2 et 3 de ma structure d'événement.
Es ce possible à réaliser?
Résolu !
Accéder à la solution.Bonjour à vous et à toi ! comme son nom l’indique nœud de propriétés « Register Events » : enregistrement des évènements…. Dynamique.
Sur une structure évènementielle il y a des évènements enregistrés en dur (à la main dans le code par l'édition de la structure) et des évènements dynamiques. Le « Register Events » permet un enregistrement des évènements de façon programmatique dans le code.
Seulement les évènements dynamique sont modifiables et sont annulables.
L’intérêt ? Par exemple l’enregistrement d’évènement d’un XControl (en dehors de lui-même), plus intéressant ? si tu as un exécutable « générique » (noyau) mais avec une IHM spécifique à des clients, sur laquelle tu veux gérer des évènements alors tu récupères les références des objets et tu les enregistres.
Il y a un enregistrement d’évènement qui ressemble, se sont les ActiveX avec des vi Callback
Luc Desruelle | Voir mon profil | LabVIEW Code & blog
Co-auteur livre LabVIEW : Programmation et applications
CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW -
Machine à états et noeuds de propriété
Bonjour,
je suis en train de réaliser un programme qui permet de "piloter" un moteur.
Il s'articule de la manière suivante:
- une boucle qui gère une machine à état et qui traite, entre autre, l'envoi d'une commande de pwm qui imposera la vitesse de rotation du moteur.
- une seconde boucle qui permet l'acquisition de données destinées à la gestion des erreurs
- une troisième boucle qui gère les différentes phases de pilotage du moteur.
Tout fonctionne très bien à une chose près. C'est le changement de valeur du bouton ON qui détermine l'envoi ou l'arrêt de l'envoi du pwm (boucle 1). Cependant, dans la boucle 3, lorsqu'une erreur est détectée, le moteur doit s'éteindre, et c'est ce qui se produit. MAIS, malgré le fait que lors de la dectection d'une erreur, j'impose par noeud de propriété, au bouton ON de reprendre la valeur faux, ça n'a pas d'impact dans ma machine à état et la commande du pwm ne repasse pas à zéro comme je le souhaiterais.
Comment faire pour imposer que le pwm repasse à 0 quand une erreur est détectée?
Si quelqu'un a une solution, ça m'aiderait beaucoup.
Je vous mets en pièce jointe mon programme, en espérant qu'il soit assez lisible et compréhensible.
merci d'avance
Anne
Résolu !
Accéder à la solution.
Pièces jointes :
Dossier WESTTsev 11 02 2011.zip 776 KBBonjour,
Plusieurs possibilités:
1. utiliser votre sous VI de gestion du moteur dans la condition erreur pour l'arreter
2. le noeud de proriété valeur ne sera pas géré comme un événement utilisateur dans votre structure évenement ne le gère pas, dans ce cas utilisez le noeud de propriété Valeur (signalisation) et cela revient à créer un événement utilisateur donc géré par la structure événment.
Cordialement
Greg S.
CNRS
LV 7.1 8.2 8.6 2009 2011 2012 2013
LPMC - CNRS
N'oubliez pas de complimenter cela fait toujours plaisir. -
bonjour,
s'il vous plait je souhaite avoir une idée plus claire sur le principe d'une machine à état donc ma question est la suivante:
le passage d'un état à l'autre se fait automatquement ou bien avec un évènemet utilisateur? sachant que j'ai une structure condition avec 3 état (énum) et j'ai insérer la structure condtion dans une boucle while.
merci pour vos réponsesDuplicate post.
-
Structure à évènement: problème de coordination temporelle
Bonjour,
Ce VI nécessite l'intervention de l'utilisateur pour fonctionner. L'utilisateur a le choix de cliquer sur 2 ronds de coté qui lui donne accès après un temps variable (et suivant un clic lorsque le délai est écoulé) à 1 point.
Il peut répondre sur un rond et changer pour l'autre mais pour ceci je souhaite qu'il réponde au préalable un certain nombre de fois sur un autre rond qui est placé lui au milieu. Prenons un exemple: il clique 1 fois à droite, le bouton de gauche doit disparaitre. Si il veut cliquer à gauche, il doit cliquer n fois sur le bouton de centre et ensuite le bouton gauche apparait et le droit disparait.
Là mon vi ne fonctionne pas comme ça. Déjà je n'arrive pas à programmer l'exigence d'appuyer plusieurs fois sur le bouton de centre. Ensuite, je dois appuyer sur le bouton centre + sur le bouton droit pour faire disparaitre ce bouton et apparaitre le bouton gauche.
Merci d'avance pour votre aide et en espérant que mes explications soient claires.
Pièces jointes :
Choose_Left_Or_Right COD essai.vi 27 KBTape machine à état dans l'aide LabVIEW, et tu as pas mal d'explication sur le sujet.
Concrètement, tu définis un modèle dans lequel tu créés des états et des transitions entre les états. Le mieux est de commencer par faire un schéma avec tous tes états et leurs propriété, ensuite tu définis les transitions (les conditions pour passer d'un état à l'autre), et ensuite tu passes au codage.
Cordialement
Benoît C.
Certified LabVIEW Associate Developer -
Bonjour !
Pour la deuxième fois de l'année, je viens faire un tour sur le forum, parce qu'il m'a bien aidé, mais là je suis bloquée... Je vous explique.
Ce que je fais
Je réalise une application qui va contrôlé, à distance, un petit robot capable d'effectuer divers actions (déployer un bras, le rentrer, etc). Au niveau de mon IHM, mon travail consiste à constituer une trame d'ordre (avec le mouvement à réaliser, ses données - de combien de °, combien de temps, ... - , etc), de l'envoyer sur une RS232 reliée à la radio, et de receptionner deux trames : l'une étant l'accusé de réception (si l'ordre était conforme au protocole établis, si les données sont hors limites des possibilitées du robot etc) puis l'accusé de réalisation, une fois que l'ordre a été effectuer.
Ce que je veux
Maintenant, le plus important sans doute, est l'ajout un bouton gérant un arrêt d'urgence. En effet, je veux que quelque soit ce qu'est entrain de faire mon programme, il l'abandonne pour sortir des différentes structures et envoyer l'ordre d'arrêt d'urgence.
Ce que j'ai tenté
J'ai mis en place une structure d'évènement, avec pour condition un changement d'etat sur mon arrêt d'urgence
Mon problème
Ca a marché, lorsque pour tester je faisais juste afficher une constante dans un indicateur (comme "Arrêt d'urgence envoyer). Par contre, maintenant que j'utilise carrément des fonctions pour lire/écrire sur la RS232, lorsque je lance mon programme et appuis sur le bouton ... Tout plante. Quand je dis planter, c'est que je ne peux plus cliquer nul part, que l'ordre n'a pas été envoyer, et que labview est quasiment entrain de me dire "a cesser de fonctionner".
Pour vous donner un apperçu de mon programme, j'ai fais un squelette simplifié que je joins en PJ, parce que mon appli est assez conséquente.
En vous remerciant d'avance !
Pièces jointes :
Squelette.png 73 KBHello,
La boucle while dans la boucle while gérée par événement, c'est plutôt moyen ça... je soupçonne ta structure événement de détecter l'arrêt, mais l'autre continue de tourner...
Je sortirais la boucle while interne. Le mieux est d'utiliser une VGF (un simple booléen avec lecture/écriture) pour gérér le stop. Lorsque ta structure événement détecte AU, tu écris vrai dans ta VGF. Tu utilises la VGF en lecture pour piloter l'arrêt de la boucle while que tu as sorti.
Si tu ne connais pas, il y a pas mal d'exemples de VGF qui trainent ici et là...
Sinon, il faut bien penser à correctement fermer test sessions visa lorsque tu utilises le RS232, pour ne pas "bloquer" les ressources lors de l'utilisation suivante.
@ +
Francis M | Voir mon profil
Certified LabVIEW Developer -
Structure événement et sous vi
Bonjour à tous,
Mon problème à peut être déjà été traité mais je n'ai rien trouvé dans les exemples et les forums.
Je souhaite lancer un sous vi avec face avant visible à partir d'un vi principal utilisant une structure événement et pouvoir continuer à interagir sur le vi principal pendant que le sous vi s'exécute.
Le sous vi doit afficher une donnée générée par le vi principal.
Je joins un exemple ou le vi principal est bloqué :-( tant que le sous vi s'exécute. Donc la donnée affichée n'évolue pas.
J'ai essayé d'utiliser une exécution dynamique du sous vi, je pense que ça fonctionne mais la face avant du sous vi ne s'affiche pas.
Merci d'avance pour vos suggestions.
Solved!
Go to Solution.
Attachments:
Main.vi 11 KB
SubVI.vi 10 KB
Variable globale.vi 5 KBBonjour Syned,
Je pense qu'il faudra deux boucles indépendantes pour gérer ce comportement asynchrone. Je suis parti sur un modèle "producteur/consommateur de messages" en reprenant le même exemple (variable globale + sous-VI).
Laurent V.
Application Engineer - National Instruments (France)
http://france.ni.com/support
http://www.ni.com/support
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
Journées techniques : du contrôle d'instruments aux bancs de test
Du 4 au 13 juin : Grenoble - Pari...
Attachments:
ProducerConsumerEvents.vi 24 KB
SubVI.vi 12 KB
Variable globale.vi 5 KB -
Est-il possible d'avoir un exemple plus détaillé de l'utilisation d'une structure évènement?
Je cherche à piloter une charge programmable de type Prodigit 3254 series grace à Labview sous Windods XP. Une démo était fournie avec le matériel mais comporte beaucoup de bug et surtout surcharge l'UC à 100%. J'ai essayé d'utiliser une structure évènement pour palier à ce problème mais je perd le controle de la charge. Mon programme d'origine me permet de la controler, de faire évoluer sa config mais dès que l'ajoute la structure évènement je perds le controle de tout. Est-il possible d'avoir des détails sur la manière d'utiliser une structure évènement? sur son mode de fonctionnement? Rien ne figure dans le livre de programmation de Francis Cottet pour la version 6.1. Merci d'
avanceBonjour, vous pouvez trouver les infos concernant la structure évènement ici :
Loops and Structures : http://zone.ni.com/devzone/devzone.nsf/webcategories/E27D46969B82A7FD86256A23005B6947
Plus précisément dans :
- Event-Driven Programming in LabVIEW
- Use the Event Structure in LabVIEW to Capture a Panel Close Event
- Inside LabVIEW : Event-Driven Programming
N'hésitez pas à me dire si cela répond à votre besoin.
Cordialement
Nicolas François
National Instruments France -
Utilisation de la structure évènement (débutant)
Bonsoir,
J'ai fait une boucle for. J'ai donc ma condition "vraie" et ma condition "faux" et tout fonctionne.
Mais maintenant, j'aimerai qu'une fois la condition vraie rencontrée, qu'il ne quitte plus la boucle et fasse toujours cette opération quelque soit la condition d'entrée. Une fois la condition vraie rencontrée, "tu" continues toujours de faire la condition vraie.
Je me suis alors tournée vers la structure évènement, mais je n'arrive pas du tout à comprendre comment elle fonctionne. Pensez-vous qu'elle est la solution à mon problème?
Si non, avez-vous des idèes vers lesquelles m'orienter?
Merci d'avance.
Cordialement,
Laetitia M.Bonjour Laetitia,
Poster un exemple nous aiderait à comprendre ce que tu as déjà fait... sa a l'air un peut confus
La structure évenement s'utilise plutôt dans une boucle while.
vOICI UN PETIT TUTORIEL SUR LES EVENEMENTS/ http://www.youtube.com/watch?v=8eO64fo3Pho
SInon j'ai mis un petit exemple avec les boucles for qui me semble correspondre à la demande: j'ai mis une condition de fin de la boucle FOR de haut niveau, dans le cas VRAI, on execute le code le nombre de fois restantes... es ce cela qui est recherché?
Cordialement,
Rodéric L
Certified LabVIEW Architect
Pièces jointes :
for loop ex.JPG 25 KB -
Bonjour,
Utilisant l'architecture d'une machine à états pour traiter mes données d'acquisition de Température, je rencontre un problème pour ne pas réexécuter tout mes états à chaque itération.
Dans mon cas, je souhaite que lorsque l'état "Palier" est vraie, les états "Palier" et "T_Réelle = T_C Palier_bas"ou "T_Réelle = T_C Palier_haut" ne se répète pas jusqu'à ce que le minuteur dans l'état "Stabilisation_étuve_Palier_bas" renvoie condition vraie.
Cdt
Pièces jointes :
Alarme_Alerte_bis.vi 28 KBD'accord, je crois avoir compris... (Mais je ne suis pas sur ^^)
La première idée qui me vient à l'esprit est de passer par une variable globale booléenne "T_Réelle=T_Consigne" pour pointer vers différents états dans la machine à états en fonction de sa valeur.
Lorsque T_Réelle=T_Consigne, la variable passera à True pour shunter les états qui réalisent ce test. Une fois le "minuteur" écoulé, il suffira de faire passer la variable globale à False pour repasser par l'état qui réalise ce test.
Ca semble rudimentaire, mais fonctionnel.
Pièces jointes :
variable_glob.jpg 17 KB
shunt.jpg 42 KB -
Problème d'ajout structure événement+vista
Je vient d'initialiser avec labview 9.0 et j'ai rencontré un problème lors de l'ajout des événements et des conditions dans la structure événement. Notant que je utilise windows Vista.
In English here.
-
Dps bouton dans un état d'objet
Bonjour
J'aimerais coller dans un état d'objet un bouton qui lit une vidéo
mais lorsque le bouton se trouve dans l'état je n'ai plus accès à la vidéo (sans vidéo) dans la palette bouton.
Si c'est réalisable. Pouvez-vous me dire comment faire. merci
UlysseCe que vous essayez de faire ne fonctionne pas.
Vous pouvez avoir jusqu'à 3 niveaux d'imbrication d'objets interactifs, sauf pour les états d'objets et boutons dans un état d'objet où l'action sera annulée.
Par contre, vous pouvez, je pense, remplacer votre bouton par un hyperlien et mettre une image du bouton. -
Itnues : clé non valide pour l'utilisation dans l'état spécifique
Bonjour,
Actuellement je rencontre un problème pour réinstaller iTunes, l'erreur a l'installation est :
clé non valide pour l'utilisation dans l'état spécifique.
j'ai désinstaller la vers 11.3 et souhaite réinstaller la dernière version.
Avez vous une idée pour résoudre mon problème ?
Pour information mon système d'exploitation est Windows 8.1
Merci.
PatinatorCurrently I have a problem to reinstall iTunes, the error is the installation:
Key not valid for use in specified state.
I have to uninstall 11.3 and would reinstall the latest version.
Do you have an idea to solve my problem?
Information for my operating system is Windows 8.1
Translated by Google
For "Key not valid for use in specified state" errors try moving the folder RSA from C:\Users\<User>\AppData\Roaming\Microsoft\Crypto\RSA to say C:\RSA (just in case there should be a need to restore it) then try installing again. This folder appears to act as a cache and should be rebuilt automatically as required.
Pour "Clé non valide pour l'utilisation dans l'État spécifiées" erreurs Essayez de déplacer le dossier RSA à partir de C:\Users(?)\<utilisateur>\AppData\ Roaming\Microsoft\Crypto\RSA à dire C:\RSA (juste au cas où il devrait y avoir un besoin de restaurer), puis relancez l'installation. Ce dossier semble agir comme un cache et doit être reconstruit automatiquement selon les besoins.
Certains noms de dossier peuvent ne pas avoir traduit correctement
Traduit par Google
For further advice if needed see Troubleshooting issues with iTunes for Windows updates
tt2
Maybe you are looking for
-
i am running MS Windows XP Pro with SP2, when i fully install quicktime and itunes(any version), the software completes the installation. But when i try to open either program.....error messages pop up saying there was a error and the program had to
-
When I import in string format and after try to convert to number sometimes my procedure fails. I see that sometimes database need number string decimal symbol to be '.' and I replace ',' with '.' . But time after I find that I must change my procedu
-
Have a large project going live next week and having a problem with font embedding - specifically the font Avenir. I have seen many references to this particular font not being Flash compatible, but it's my cilients font and I need to try everything
-
Field STDAZ of R/3 Table PA2010
I would appreciate AND surely reward if anybody could let me know of the extractor for the Field STDAZ of R/3 Table PA2010. Thanks Mani
-
Suppress the session data in URL display
we have afrLoop=401202924205955&afrWindowMode=0&_adf.ctrl-state=zpx91q8vg_4 appended to the url http://host1.example.com/sbat_int/faces/Main.jspx?_afrLoop=401202924205955&_afrWindowMode=0&_adf.ctrl-state=zpx91q8vg_4 We want to show only this part: ht