IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

LabVIEW Discussion :

Mise à jour d'un graphe déroulant pendant une pause.


Sujet :

LabVIEW

  1. #1
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut Mise à jour d'un graphe déroulant pendant une pause.
    Bonjour,

    je fais une acquisition de signaux NI-DAQ avec Labview. Je réalise une acquisition de signaux suivant cette procédure :
    -1- initialisation de l'entrée analogique grâce aux fonctions DAQ ;
    -2- dans une boucle je lis le contenu de cette voie et j'affiche les données sur un graphe déroulant ;
    -3- à la sortie de la boucle j'arrête la tâche
    -4- boucle d'attente avec l'objet "Attendre ms"
    -5- retour à l'étape 1

    Pendant la boucle d'attente je souhaiterais continuer à envoyer des données à mon graphe déroulant. Malheureusement l'attente est bloquante. J'ai pensé réaliser 2 boucles en me disant qu'elles s'exécuteront en parallèle mais sans succès.

    Comment je peux continuer à nourrir mon graphe déroulant pendant cette attente ?

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    J'ai trouvé une solution qui, à mes yeux, n'est pas très élégante mais qui fonctionne : j'ai ajouté une bouton qui passe à l'état false à la fin de la pause provoquant ainsi l'arrêt de la boucle. Le bouton est ensuite masqué sur la face avant. L'action mécanique du bouton est "Commutation à l'appui", les autres actions étant invalides.

    Mon graphe affiche bien ma constante (pour l'exemple) pendant la durée voulue.

    Est-ce qu'il y a une solution plus élégante ou est-ce la seule chose à faire ? Je pensais utiliser des threads mais sous LabView je ne suis pas familier avec ça.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 230
    Points : 352
    Points
    352
    Par défaut
    La finalité de ce que tu souhaites faire c'est d'actualiser le graphe tous les x temps ?

    J'avoue ne pas trop comprendre ce que tu souhaites en fait.

    Sinon, si l'objectif est de mettre à jour un graphe à certains intervalles de temps le mieux est d'utiliser la fonction "attendre un multiple de ...", de le déposer au sein de la boucle et de le câbler à la valeur en ms que tu souhaites avoir.
    Je ne réponds pas aux questions techniques via MP. Le but du forum est de permettre de trouver des solutions ensembles pour aider un ensemble de personnes.

    Loi du Chaos Informatique
    L’informatique, ça tient du chaos : une fois ça marche, une fois ça foire, tu sais pas pourquoi, c’est juste que tu viens de changer de lobe sur l’attracteur étrange.

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Après l'acquisition du signal à partir de ma carte NI, je souhaite ajouter une pause de x ms (ce temps est variable) mais continuer à envoyer une valeur à mon graphe pendant cette pause (ici j'ai mis des valeurs aléatoires mais en réalité ça sera la dernière valeur reçue par la carte).
    Le problème qui se présente est que la fonction d'attente est bloquante donc tant que l'attente a lieu je ne peux pas en même temps rafraichir le graphique. J'ai donc réalisé ces 2 boucles.
    - dans le 1er diagramme la sortie du comparateur est envoyé sur le stop des 2 boucles : la seconde boucle est, je ne sais pas pourquoi, bloquée tant que le temps n'est pas écoulé donc le graphe ne se rafraichit pas
    - dans le 2nd diagramme je passe par l'intermédiaire d'un bouton stop qui bascule après le temps écoulé.


    La fonction "attendre un multiple de ..." ne me convient pas car je souhaite précis à la milliseconde.


    Je ne sais pas si j'ai été plus clair Essaye le second diagramme qui est complètement opérationnel. Avant d'exécuter le VI indique une valeur en millisecondes dans le contrôle numérique et regarde ce qu'il se passe. Maintenant prend le graphe déroulant et place le dans la 1ère boucle et exécute le VI : le graphe reste figé.

  5. #5
    Membre éprouvé Avatar de reg64
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    959
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 959
    Points : 1 255
    Points
    1 255
    Par défaut
    Salut,
    Poste un exemple simplifié en format .vi.
    En ce qui concerne ton code posté plus haut,
    la deuxieme boucle n'est pas cadencé, donc elle tourne en plein régime et occupe 100% du CPU!
    Il faut savoir également qu'une precision de 1ms ne peut être garantie par l'OS, car tout va dépondre des tâches qui seront exécutées en parallèle et comment l'OS va gérer les priorités. à mon avis en dessous de 3 ou 4 ms, ça devient complètement aléatoire : voir l'OS+ matériel + processus.
    A+

    Edit: j'ai omis de dire que tu peux tout regrouper dans la même boucle et au lieu d'utiliser le Vi attente ms, tu fais une comparaison de l' horloge du système pour mettre à jour le graphe pendant la "pause". Le mieux c'est de poster un exemple.
    Reg
    CLAD

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Oui, je me doute bien que Windows n'est pas un OS temps réel et qu'être précis à la milliseconde est impossible

    Pour l'instant je vais laisser les choses tels quel, le programme doit encore évoluer (par exemple je dois enregistrer les données du graphe).

  7. #7
    Membre éprouvé Avatar de reg64
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    959
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 959
    Points : 1 255
    Points
    1 255
    Par défaut
    Citation Envoyé par Auteur Voir le message

    Pour l'instant je vais laisser les choses tels quel, le programme doit encore évoluer (par exemple je dois enregistrer les données du graphe).
    Dans ce cas, le mieux est de partir sur un modèle Producteur/Consommateur. Dans la boucle principale (boucle productrice), tu gère l'acquisition(Simulé ici par Vi Nombre aléatoire) et la valeur pendant la pause... la valeur à traiter va être introduite dans la file d'attente (FIFO) via le Vi Ajouter un élément à la fin d'une file d'attente. Dès qu'une donnée est disponible dans la file la boucle consommatrice rentre en jeu et dépile les données pour les traiter (Affichage, Sauvegarde...).
    Ci-dessous un Snippet de l'exemple Fichier>Nouveau>Modèle de conception Producteur/Consommateur(donnée) modifié.


    Je réitère ma demande , si tu poste un exemple je pourrai jeter un coup d'oeil et éventuellement le modifier

    P.S: Faire un glisser/déposer de l'image sur un diagramme vide pour convertir le Snippet en code LabVIEW (2014)
    Reg
    CLAD

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Ah pas bête, ton système Je vais y réfléchir.

    Sinon le diagramme que j'ai posté est la version simplifiée de mon problème, je ne peux pas te proposer mieux.
    Pour les contrôleur il y a juste un bouton stop et une entrée numérique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mise à jour de champs en fonction d'une liste déroulante
    Par kifouillou dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 09/04/2008, 16h37
  2. Mise à jour d'un champ texte via une liste déroulante
    Par dedein84 dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2008, 20h24
  3. Mise à jour des fichiers syst lors d'une installation
    Par Asdorve dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 03/07/2006, 15h27
  4. [VB.NET] Mise à jour d'un site à partir d'une application
    Par boulete dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/04/2006, 12h15
  5. [JSP] Mise à jour d'un menu déroulant en fonction d'un autre
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/12/2005, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo