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 :

[LabVIEW 8.5.1] Comment geler un indicateur?


Sujet :

LabVIEW

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [LabVIEW 8.5.1] Comment geler un indicateur?
    Bonjour,

    Je met au point un programme labview qui récupèrent des signaux, les affichent dans un graph XY et dérive les courbes obtenues.

    J'aimerai que mon programme soit en mesure de déterminer un couple (X,Y) de valeurs correspondant à une valeur seuil fixée par le programmeur et renvoie automatiquement le couple à l'utilisateur.

    J'utilise Labview Base Development 8.5.1, le PCI NI 6221 37 pins, le bloc connecteur FLKM-D37 SUB/B.
    J'ai essayé en utilisant le vi Comparison; je ne peux travailler qu'avec une seule "voie" (je choisi la voie Y). En mode "data point", "greater or equal", en comparant par rapport à une valeur, avec "one result per data point", j'obtiens en sortie du vi un double qui passe de 0 à 1 comme prévu mais je n'ai pas la valeur en abscisse correspondante.
    J'ai essayé avec un curseur, en choisissant l'option "single plot". Ainsi, je dispose d'un curseur qui reste sur la courbe.
    En rajoutant le "property node" "Cursor.Cursor Position: Cursor Y" en mode write, j'aurais pensé que le curseur "chercherait" à être dans la mesure du possible aux alentours de la position fixée, tout en étant lié à la courbe.
    Ce n'est pas du tout le résultat obtenu, si quelqu'un pouvait m'expliquer ce qui ne va pas, ça serait bien cool!
    En attendant, bonne journée et merci d'avance!

  2. #2
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    1 144
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 144
    Points : 1 973
    Points
    1 973
    Par défaut
    Salut,

    Pour resumé, tu obtiens une courbe y=f(x) avec un certain nombre des points representatif.
    Par tes calculs, tu determines alors un point Y et tu veux le X correpondant.

    Tu ne peux avoir cette valeur directement car ce couple (X,Y) ne fait pas partir des couples qui ont servis à creer la courbe.

    Si tu veux le X, tu dois faire de l'interpolation pour estimer la valeur de X.
    Par exemple, si tu as comme points (1,3) et (3,5), un Y=4 donnera X=2.

    Il y a pas mal de methodes mathematiques pour faire cela. Une des plus simple est de considerer que ta courbe est du type Y = A X + B. A partir, de 2couples (X,Y) proches de ton point, tu determine les coefs A et B. et ainsi tu obtiens finalement ton X voulu. Il y a d'ailleurs une fonction LV dans la palette math qui fait cela ( mais je n'ai plus le nom).

    Bon courage,

    a+
    L'urgent est fait, l'impossible est en cours, pour les miracles, prévoir un délai et un bon thermos.
    Quant aux MP techniques, autant les poster sur le forum approprié car, là, ils auront des réponses.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Pour préciser, je dispose d'une diode, je contrôle le courant la traversant via sa tension d'alimentation. Lorsque j'augmente le courant, la diode devient passante pour I>Ith (qui varie en fonction de la diode, de sa température de fonctionnement...).

    Dans mes dérivées, cela se traduit par l'apparition d'une demi-droite verticale de y=0 à y=inf pour I=Ith et il s'agit de la valeur dont j'aimerais disposer.

    C'est pour ça que j'ai pensé qu'avec un curseur cela ferait l'affaire en fixant le seuil à une valeur pertinente.
    La valeur de mon seuil est donc complètement arbitraire.

    Je connais les différentes méthodes d'interpolation mais cela me parait bizarre d'interpoler une demi-droite verticale (je trouve même cela bizarre à dire!). Je vais me replonger dedans pour me rafraîchir la mémoire

    En ce qui concerne la fonction d'interpolation LV, je l'ai effectivement trouvée mais elle ne fait pas partie de mon package...

  4. #4
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    1 144
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 144
    Points : 1 973
    Points
    1 973
    Par défaut
    C'est vrai qu'il est impossible d'interpoler une demi droite verticale...
    Je n'avais pas tout pigé au probleme ... Faut que j'arrete de bosser, cela me fatigue ;-)


    Peux-tu poster une ch'tite copie ecran et indiquer le point que tu cherche a voir?

    merci
    L'urgent est fait, l'impossible est en cours, pour les miracles, prévoir un délai et un bon thermos.
    Quant aux MP techniques, autant les poster sur le forum approprié car, là, ils auront des réponses.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Ah ça, faut dire qu'on a pas des métiers faciles...!

    Alors ci joint 3 copies d'écran, une avant Ith, une ou j'ai estimée Ith manuellement, et enfin une dernière ou l'on remarque que la droite verticale se déplace lorsque la tension d'entrée continue d'augmenter (cela correspond au nombre fini de point il me semble). Je ne l'avais pas précisé mais je n'ai donc besoin que de la première valeur d'abscisse qui me permet de dépasser mon seuil! (A force, j'arriverais à bien exprimer mes problèmes moi aussi!)
    Pour les 3 cas, j'ai demandé au property node d'imposer y=100 pour le curseur.

  6. #6
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    1 144
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 144
    Points : 1 973
    Points
    1 973
    Par défaut
    Oki, j'y vois un peu plus clair mais je n'ai pas trop d'idée à part deriver la courbe et prendre le point pour laquelle ca part a l'infini.
    L'urgent est fait, l'impossible est en cours, pour les miracles, prévoir un délai et un bon thermos.
    Quant aux MP techniques, autant les poster sur le forum approprié car, là, ils auront des réponses.

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    J'ai déjà essayé de dériver encore une fois, cela ne change pas significativement la donne si ce n'est que la courbe "partira plus vite" à l'infini mais toujours à partir du même point. J'observe déjà ce comportement en obtenant la dérivée seconde à partir de la dérivée première.
    Et comme dit, cette droite verticale se déplace avec le dernier point d'acquisition. Il faut que je puisse déterminer la première abscisse Ith qui entraine l'apparition de la demi-droite.
    Je vais chercher encore un peu mais je vais aussi voir pour un autre moyen d'obtenir la-dite valeur, il doit bien y en avoir un autre!

    En attendant, merci quand même (et encore!) Scyrius et bonne journée.
    Cordialement.

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Ok alors j'ai contourné mon problème en échangeant les axes X et Y. Je compare ensuite à mon seuil arbitraire, puis j'extrais la valeur désirée (à un coefficient près) dans un indicateur numérique. Donc ça commence à devenir intéressant!
    J'ai mis un booléen histoire de bien visualiser le seuil; Le souci étant que mis à part avec le VI "STOP" qui arrête complètement l'application, je n'arrive pas à geler mon indicateur; J'ai essayé avec un property node en rendant "disabled" l'indicateur, la valeur qu'il contient change encore. Le problème avec le "STOP", c'est que j'ai besoin de dépasser la valeur critique pour d'autres analyses (je peux toujours laisser la possibilité à l'utilisateur de l'activer ou non).
    Je me disais qu'une boucle pourrait faire l'affaire, j'ai commencé à chercher hier mais s'il y a une propriété ou vi qui fait l'affaire sans boucles, je suis preneur!?!
    En attendant, bonne journée!
    Cordialement.
    MC.

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Ok, j'ai continué à chercher de mon côté, et j'ai résolu le problème en créant une "Case structure" à laquelle j'ai lié la condition de seuil.
    Pour le moment, cela fonctionne comme attendu!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/04/2008, 15h55
  2. Réponses: 3
    Dernier message: 28/04/2008, 11h19
  3. Comment faire un indicateur type bargraph ?
    Par tAKAmAkA dans le forum Access
    Réponses: 2
    Dernier message: 09/02/2007, 15h45
  4. Comment "geler" des données ?
    Par pierre65 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/07/2006, 15h42
  5. Comment geler le repaint d'un TPageControl ?
    Par qi130 dans le forum Composants VCL
    Réponses: 19
    Dernier message: 20/12/2004, 23h30

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