04-21-2016 06:40 AM - modifié 04-21-2016 06:42 AM
Ma réponse était "bête" mais comme ca marchait j'ai pas cherché plus loin...
J'ai remplacé tous les "val sgnl" par ton noeud de méthode qui restaure les valeurs par défaut sur l'ensemble du VI.
Je n'arrive toujours pas à mettre une boucle for pour les boutons radio... As tu une piste à me donner?
@pbelles: Merci, j'ai deja télécharger le 2012_LV_Core_1_FR
le 04-29-2016 03:20 AM
Bonjour,
Après la lecture du livre conseillé, je vais essayer de faire mieux en utilisant une machine d'états et des shift register pour les variables.
Je suis reparti de zéro, c'était trop compliqué d'essayer d'adapter l'ancien VI.
Puis je savoir si je commence bien comme il faut?
De plus, j'ai un soucis lors de la mesure. J'envois la commande "G" à l'appareil qui doit me répondre $EOT si tout est bon ou $KO s'il y a un problème.
Si tout est bon $EOT, je récupère les valeurs de la mesure.
Si c'est $KO il faut relancer la commande.
J'ai donc fait fait un sous Vi "Liris mesure" qui envoit la commande G et qui s'arrete en cas de $EOT ou $KO. Ce sous-vi est utilisé dans le vi "Liris mesure NaN" qui relance l'envoi de la commande G tant que je n'arrive pas à avoir les valeurs de mesures. Sauf que cela ne fonctionne pas correctement, j'ai l'impression qu'en cas de $KO il ne relance pas l'envoi...
Pourquoi?
Merci d'avance
le 04-29-2016 10:28 AM
J'ai regardé ... c'est assez "rare" (de voir une évolution comme celle là) ... mais là .... je dis : "Respect" !
Au niveau du code, on change complètement de planète par rapport à tes codes précédents.
C'est quand même autre chose .. une véritable architecture, c'est propre, des SR, plus de locales, un flux d'erreur ... clap, clap, clap
Un gros Bravo !
Pour ton soucis :
Ce sont des fonctions VISA ... je n'utilise pas du tout ce genre de choses.
Ceci dit, cela reste "du code" ... pourrais-tu me "pointer" exactement la boucle qui est censée relancer la commande G en cas d'échec.
Car dans "Liris mesure" je ne vois pas l'envoi d'une commande "G" ... je ne vois que l'envoi d'une commande "R".
05-01-2016 09:24 AM - modifié 05-01-2016 09:37 AM
Salut, je débarque… je n’ai pas vu le premier code que tu as posté, mais j’ai vu les commentaires et je me suis fait une idée. Je regarde la nouvelle structure, et je suis d’accord avec ouadji : c’est une véritable architecture, avec une gestion d’erreur, des SR.
Personnellement je ne suis pas pour la « machine d’états » (avec SR sans File d’attente) ou « state machine », mais pour débuter et surtout comprendre les bases, c’est bien.
Je vais me faire un peu de pub (oui je suis un des auteurs du livre que ouadji a conseillé) mais ton « objectif » de code est un des exemples du livre. La gestion des données sous LabVIEW (éviter locale, globale) utiliser les FGV, la gestion des erreurs, la structure de programme, architecture Machine à états vers QMH. La réalisation d’un driver VISA est abordé (aussi IVI, carte DAQ). Le livre va expliquer comment faire une application (dans les règles de l’art, type QDMH) pour piloter un instrument de mesure (driver VISA réalisé dans le livre), analyser les données, et générer un rapport Excel. Pour info tu peux télécharger le code du livre.
Par rapport à la gestion des données sous LabVIEW, je te conseille un document.
Darwin appliqué à LabVIEW : l’évolution de la gestion des données
J’en suis l’auteur et je peux passer pour un mégalo (cela est surement vrai), mais je pense qu’il te permettra à comprendre la gestion des données avec LabVIEW. De plus, il traite des problèmes liés à l’utilisation des nœuds de propriété (lenteur), et de remplacer par des variables partagées (FGV). Si tu es vraiment motivé, tu as la version Anglaise, qui est beaucoup plus technique, précise et complète.
Darwin applied to LabVIEW: The evolution of the data management
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-01-2016 09:29 AM
Sinon tu devrais faire un driver dans les règles :
Sur ta fonction init, j’ai quelques remarques (le plus important, tu as activé le "termination Char" dans la fonction VISA Init. >>>> Donc pas besoin de faire une boucle de Wait. VISA Read va "sortir" lorsque caractère de fin Ou TimeOut (ne répond pas).
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-01-2016 09:35 AM
extrait du livre LabVIEW : Programmation et applications
Lecture des données dans l’instrument
Pour la lecture des données retournées par l’instrument, nous utilisons VI VISA Read. Il est très important de comprendre que cette fonction retourne les données contenues dans le buffer dès qu’une de ces 3 conditions est présente :
Il se peut donc que la fonction VISA Read renvoie un nombre d'octets inférieur au nombre requis si la fonction atteint un caractère de terminaison ou si un timeout se produit.
Il est conseillé, par ordre de préférence, d’utiliser la fonction de lecture configurée avec un caractère de terminaison (si le matériel le permet), puis en définissant un nombre d’octets fixe. Si ce dernier est inconnu, une dernière méthode consiste à transmettre une commande à l’instrument, puis attendre et lire le nombre d’octets retournés dans le buffer. Une propriété de l’API VISA permet de connaître ce nombre d’octets.
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-01-2016 09:46 AM
Marcelito a écrit :
De plus, j'ai un soucis lors de la mesure. J'envois la commande "G" à l'appareil qui doit me répondre $EOT si tout est bon ou $KO s'il y a un problème.
Si c'est $KO il faut relancer la commande.
Sauf que cela ne fonctionne pas correctement, j'ai l'impression qu'en cas de $KO il ne relance pas l'envoi...
Pourquoi?
Merci d'avance
si je comprends bien la gestion est réalisée par "Chaine ABC et Firmware.vi"
il n'a pas de gestion d'erreur, donc si erreur? que faire?
peux-tu donner un exemple des paramètres d'entrées de cette fonction, lorsqu'il y a KO? cela permettra de comprendre pourquoi il n'y a pas de reprise.
Je pense que le code qui permet de savoir s'il faut faire une reprise devrait être dans un sous-vi (param entrée "Réponse instrument" - sortie "reprise")
A+
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-01-2016 10:11 AM
@ Luc : " Personnellement je ne suis pas pour la « machine d’états » (avec SR sans File d’attente) "
Bonjour Luc,
Je suppose que tu parles de la state machine "simple" ... par rapport à une state machine "avec" une Queue.
Si oui, tu sembles déconseiller l'utilisation de la machine à états "simple" (sans l'utilisation d'une Queue) ... Pourquoi ?
Personnellement je dirais que cela dépend des besoins
... si cela se justifie, alors oui (évidemment) ... dans le cas contraire, pourquoi alourdir le code (dans ce cas inutilement)
Mais ... je doute que le mot "inutile" ait une queconque place dans ta réflexion ... tu as donc tes raisons !
Peut-être pour conserver au maximum le potentiel évolutif du code ?
Pourrais-tu développer ta pensée, à savoir : " Personnellement je ne suis pas pour la machine d’états, avec SR, sans File d’attente "
Un grand merci Luc,
le 05-01-2016 04:16 PM
salut ouadji,
oui, la "state machines" est par définition la simple, la standard
http://www.ni.com/tutorial/7595/en/
Je conseille d'utiliser le modèle QMH (Queue Driven Message Handler) ou modèle Gestionnaire de messages dans une file d'attente (GMF) en Français
http://zone.ni.com/reference/fr-XX/help/371361H-0114/lvhowto/creating_vis_from_templates/
Les modèles de conception d'application représentent les architectures et les techniques de LabVIEW qui offrent des solutions à des problèmes spécifiques de conception logicielle. Ces modèles de conception sont disponibles dans la catégorie VI»VI à partir d'un modèle»Structures sous Modèles de conception.
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-01-2016 04:27 PM
Desruelle_luc a écrit :Je conseille d'utiliser le modèle QMH (Queue Driven Message Handler) ou modèle Gestionnaire de messages dans une file d'attente (GMF) en Français
pourquoi?
sinon pour aller plus loin, dans la présentation Darwin applied to LabVIEW: The evolution of the data management
présentation en téléchargement You can download the presentation Darwin applied to LabVIEW V2.2.pdf attachment and LabVIEW examples code.
p63
mais page 66 : Source CLAD exam: What is one disadvantage of using the State Machine VI architecture?
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group