Discussions au sujet de NI LabVIEW

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

Machine à états VS séquence évènements

Résolu !
Accéder à la solution

Bonjour à tous,

je prépare la CLAD et dans ce but, je revois tout ce qu'on m'a appris, et bien d'autres choses encore 🙂

J'en arrive à force à un peu tout essayer, les documents existants de préparation à cette certification vont dans ce sens, je ne me fais pas prier et c'est "explorations tous azimuts" (et j'en ai appris des choses en quelques jours 🙂 )!
J'ai donc revu de plus près la machine à état, mais je me demande si ce ne searit pas plus opportun d'utiliser une séquence évènement qui à mon sens et plus facile à mettre en oeuvre sachant déjà qu'on n'est pas obligé de mettre les commandes dans un cluster, les ordonner ... blabla!

Je cherche des avis sur le sujet pour me conseiller et m'éviter de me tropmper!
Merci pour vos éclairages futurs 😉

0 Compliments
Message 1 sur 16
4 422 Visites

@PhilB58 wrote:


J'ai donc revu de plus près la machine à état, mais je me demande si ce ne searit pas plus opportun d'utiliser une séquence évènement qui à mon sens et plus facile à mettre en oeuvre sachant déjà qu'on n'est pas obligé de mettre les commandes dans un cluster, les ordonner ... blabla!


Hello,

 

J'ai beau essayer, je comprends pas. Les séquences événements késako? Une images ou une mise en situation peut-être ? 🙂

Pour le niveau CLAD la compréhension de la machine à états est une bonne chose, pas besoin d'aller plus loin sauf par envie ou curiosité bien sûr.

 

--Eric

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

0 Compliments
Message 2 sur 16
4 402 Visites

autant pour moi, sous la pression au boulot (trop de travail et tout seul pour assumer 😞 ), je me suis mélangé les pinceaux 😞
Je voulais dire "structure évènements" et non séquence évènements!!!!
Dans une boucle while, tout comme une machine à état, il est (à mon avis) plus simple de gérer les actions sur l'IU dans une structure évènement; alors je me demande l'intérêt de la machine à état (sinon, un exercice de style 😉 )

Vitesse d'exécution? Utilisation mémoire réduite? Facilité de lecture du code? Je cherche!!!

C'est comme en pneumatique, la cascade Martonair, c'est génial, mais on à fait mieux depuis!!! (Fin du hors sujet).
Pour le CLAD, j'ai pas encore le niveau, même si je maintient du code (depuis plus de 4 ans) que je n'ai pas mis en œuvre , LabVIEW, c'est pas évident 😞 mais c'est plaisant 🙂

Si tu veux, je te filerai le code que je maintient, tu verras à quel point j'affronte 🙂 🙂 j'ai le SSP et j'ose même pas contacter NI pour avoir de l'aide tellement c'est "hors sujet" 🙂

0 Compliments
Message 3 sur 16
4 381 Visites

étonnant !

Sans le concept de machine à états, comme implémentes-tu un quelconque automate fini, et pour prendre un exemple plus concret, comment implémentes-tu un quelconque algorithme basé sur une logique séquentielle. Explique moi !

 

En fait, je ne comprends pas ton cheminement qui te fait aboutir sur l'inutilité de la Machine à Etats.

Pourrais-tu développer ton raisonnement ? un exemple peut-être ?

 

Révélation
oui, il y aurait "peut-être moyen" de réaliser une machine à état avec une While et une Structure Event (mais en se tordant certainement pas mal l'esprit) ... sur le principe qu'en programmation on peut tout faire, même l'absurde. Mais quel est l'avantage de prendre une Architecture "A" et de la déformer / détourner au point qu'elle en devienne une Architecture "B".
0 Compliments
Message 4 sur 16
4 368 Visites

merci Ouadji, c'est tout à fait le genre de remarque que j'attends 🙂 même si je ne comprends pas tout ce que tu dis (je ne suis pas informaticien de base, même si j'ai des notions).
Alors, loin de moi l'idée de critiquer la machine à état et de prétendre son inutilité, mais à l'usage, j'ai une préférence pour la "STRUCTURE évènements" qui me parait plus simple à mettre en œuvre pour la gestion de l'IU (mais je peux me tromper, c'est le but de ma question, éclairer ma lanterne)!
Je vais tâcher de faire deux petit VI explicatifs faisant la même chose, histoire d'être plus clair, mais pas certain que ce soit aujourd'hui 😞
Mais mon but est de savoir ce qu'apporte de plus la machine à état par rapport à une autre approche de la gestion de l'IU!!!
Au risque de passer pour un noob 😉 (mais c'est pour m'améliorer 🙂 )

0 Compliments
Message 5 sur 16
4 356 Visites

qu'est-ce que tu entends (pour toi) par "gestion de l'Interface Utilisateur" ?

Tous les VIs, quels qu'ils soient "gèrent" l'IU ... je parlerai plus facilement "d'interaction", l'un agit sur l'autre et réciproquement. Une Machine à états est un automate fini (va voir sur Google, la notion d'automate est un monde en soi), c'est un modèle mathématique qui permet de résoudre des problèmes complexes ... sans réelles limites de complexité du moment que le nombre d'états possibles est fini. Un exemple d'école d'utilisation d'une machine à états est la résolution et le séquencement des feux de signalisation dans un carrefour, les voitures (x routes), les piétons, le tram en plus, et toutes les contraintes supplémentaires que tu aurais envie d'ajouter ... un casse tête chinois ... avec une machine à états (et un bon programmeur Smiley heureux ) on peut résoudre ce type de problème. (et une infinité d'autres).

 

"Je vais tâcher de faire deux petit VI explicatifs faisant la même chose, histoire d'être plus clair"

vas-y (quand tu auras le temps), j'aimerais jeter un coup d'oeil.

 

Un "noob", ça n'existe pas sur le forum ... ici, il n'y a que des programmeurs.

J'ai posé mille questions "ultra-basiques" avant de pouvoir implémenter un petit quelque chose sous LabVIEW.

Une question n'est jamais idiotes ... seule une réponse peut l'être.

0 Compliments
Message 6 sur 16
4 348 Visites

je n'ai pas encore eu le temps d'aller voir ce qu'est un "automate fini", mais j'y vais rapidos 😉
J'entends par gestion de l'IU, la gestion des actions que l'utilisateur y fait (action sur un bouton, entrée de données ... ) et la réponse qu'on doit donner à ces actions (commande de machine via carte in/out, affichage de valeurs numériques ....)!
Je viens de faire deux court Vi, une machine à état (de mémoire 😉 ) et une structure évènements. Les deux Vi font exactement la même chose sauf que pour la structure évènements, je n'ai pas englobé les boutons dans un cluster.
Dans ce cas précis, j'ai eu plus facile de faire la structure évènements (plus simple à mon avis, pas de cluster, pas d'ordre dans le cluster, pas d'Enum ... ), et j'ai même l'impression que c'est plus rapide en terme de réponse à l'exécution (mais je peux me tromper)!
Maintenant, ces deux Vi sont simplistes, peut-être qu'un Vi plus complexe gagnerait a être réalisé avec une machine à état, mais alors, faut qu'on m'explique 😉 d'où ma question d'origine!!

Tout télécharger
0 Compliments
Message 7 sur 16
4 335 Visites
Solution
Accepté par l'auteur du sujet PhilB58

Dans ton exemple ... bouton x > action x ... c'est de l'événementiel à 100%. Tu n'as pas réellement d'algorithme. Enfin si, il y a "toujours" un algorithme ... ici il est simpliste, pas de calculs particuliers, pas réellement de logique et encore moins de logique séquentielle. Dans un cas comme celui-ci, la Structure Event s'impose. Tu as également résolu le problème via un automate fini et donc une machine à état ... ok, c'est "bien". En utilisant une machine à états pour résoudre ce genre de chose, tu as utilisés un bulldozer pour tuer une mouche. Ceci dit, tu pourrais avoir mille boutons et mille actions correspondantes, cela resterait une mouche. Ton diagramme des états ressemble à ceci:

 

yyyyyy.png

 

 

voici à quoi pourrait ressembler un diagramme "un peu plus complexe", et franchement, il est encore malgré tout relativement abordable. Nous avons parlé de la "machine à états" (simple), il existe également une architecture de machine à états à pile (queued state machine) encore bien plus puissante en terme de résolution d'algorithme.

diag_1.gif

 

Commences-tu à "sentir" un peu à quoi peu servir une machine à états ?

 

Message 8 sur 16
4 319 Visites

merci Ouadji pour cette fort belle réponse 😉
Tu confirmes donc bien mon sentiment vis à vis de la structure évènement, plus adaptée pour des programmes simples comme ceux que j'ai proposés, juste pour sa simplicité de mise en œuvre 🙂
Donc, la machine à état a bien sa raison d'être dans les cas plus complexes, même si, comme un bulldozer, elle fait aussi les cas simples (d'où l'utilité de bien la connaitre 😉 )
Je vais approfondir la question, essayer de trouver un exemple de programme complexe basé sur une machine à état, ou imaginer d'en faire un moi-même!!!

0 Compliments
Message 9 sur 16
4 294 Visites

Ok, je viens de faire quelques essais, j'ai compris la limite de l'utilisation de structure évènements par rapport à la machine à états!
Bingo, j'avance 🙂

Message 10 sur 16
4 286 Visites