Comment remplacer un registre à décalager par une variable globale

Bonjour tout le monde,
Je vous sollicite encore une fois par manque d'expérience....
Alors cette fois-ci j'ai un VI qui va acquérir une tension et faire la moyenne de celle-ci, mais mon problème est que j'utilise une boucle while avec un registre à décalage et d'après mon tuteur c'est à cause de cette boucle que je n'obtiens pas les résultats escontés.
Il m'a donc conseillé de supprimer ma boucle while et de mette une variable globale qui gère la période de moyennage à la place de mon registre à décalage. 
Le souci c'est que je ne connais ni d'adem ni d'eve cette variable...
Est-ce que quelqu'un aurait l'amabilité de m'expliquer un peu cmt ça fonctionne parce que je ne trouve pas mon bonheur dans les exemples et les autres sujets?
Et surtout est-ce la bonne solution?
REM: le VI a été créé par une autre personne je n'est fais que de modifier la partie moyennage, donc les autres variables globales ne sont pas de moi.
Merci d'avance!
Attachments:
VI_TEST2.vi ‏50 KB
VI_TEST2.vi ‏50 KB

Bonjour à toi,
Tu trouveras ci-dessous un exemple d'implémentation d'une variable globale fonctionnelle :
Basic Functional Global Variable Example
J'ai regardé ton programme mais je ne suis pas sûr d'avoir bien compris ce qu'il devait faire, aussi je ne peux pas te conseiller entre les deux solutions, essaye avec la variable globale fonctionnelle cela sera de toute facon un bon exercice d'apprentissage.
Pour le reste du programme, il est en principe fortement déconseillé d'utiliser des structures séquences déroulées. Il vaut mieux, si on veut s'assurer du bon déroulement de son programme, utiliser une structure de machine à état ou bien tout simplement le flux de données, principe natif de LabVIEW :
Programmation par flux de données dans LabVIEW
Machine à états simple
J'espère que cela t'aidera,
Bonne journée,
M-Junior

Similar Messages

  • Comment créer une variable globale

    Bonjour,
    Ca fait maintenant un moment que j'utilise Labview (1ans), et pour la première fois je pense avoir besoin d'une variable globale, mais je n'arrive pas a la maitre en oeuvre.
    Mon problème est le suivant. Je voudrais qu'en cliquant sur un bouton STOP de la face avant d'un de mes VI, sela est l'accion d'apuiller aussi sur le bouton stop d'un autre VI (sous-sous-vi). Je pensais donc mettre une variable global qui surveil à quel état est le bouton stop de mon VI, et faire surveiller cette variable globalle par mon sous-sous-vi pour l'aréter quand on apuis sur stop.
    J'ai donc ajouter une variable globale à mon VI, mais je n'arrive pas à la relier à mon bouton STOP. (jobtien un fil de liaison brisé).
    N'ayant jamais mis de variables globale en place, je ne comprend pas pourquoi, et ne trouve pas de solutions.
    Si quelqu'un pouvais m'expliquer pas a pas comment écrir dans une variable globale, puis comment lire une variable globale, cela m'aiderais grandement. ( je n'ai pas non plus compris pourquoi les variables globales ont une face avant???)
    Merci pour votre aide.
    Nico

    Bonjour,
    Il semblerait que vous ayez créé votre Variable Global en laissant le type par défaut. Du coup vous essayez d’écrire un booléen dans une variable de type Double.
    Je vous conseil de lire ce lien pour tout ce qui est utilisation de variable partagée.  
    Message Edité par BenjaminR le 05-26-2008 04:51 AM
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/
    Pièces jointes :
    VarGlob_Revolution.png ‏151 KB

  • Comment ça marche un registre à décalage qui remplace une variable globale

    Bonjour,
    L'utilisation des variables Globales n'est pas conseillée.
    Pour les éviter, il existe une méthode qui consiste à utiliser une boucle While composée d'un registre à décalage non initialiser.
    J'aurais besoin de comprendre comment LabView gère les registres à décalage. Lorsqu'on modifie la valeur du registre (pour remplacer la fonction écriture vers globale), comment et où LabView stocke-il l'information ?
    Merci pour vos nombreuses réponses.
    AKIRA.

    Bonjour,
    Lorsque l'on utilise un registre à décalage, la variable est stockée dans la RAM mais il n'est pas possible de savoir où exactement car cela permettrait de la changer, ce qui n'est pas le but d'un registre à décalage car il sert à protéger les valeurs stockées.
    Cordialement
    David S.| Certified LabVIEW Associate Developer
    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 LabVIEW 2012 : du 27 septembre au 22 novembre
    2 sessions en parallèle : Débuter a...

  • Evénement déclenché par une variable connectée par Datasocket à un serveur OPC

    Bonjour,
    J'utilise un serveur OPC pour lire et écrire des variables sur un automate. J'ai essayé de connecter les variables directement avec un connexion Datasocket et d'utiliser les VI en exemple. Dans les deux cas, les ressources de mon PC augmentent et les temps de réponse sont assez longs.
    Dans mon application, j'ai besoin d'"attendre" une valeur particulière d'une variable automate. Je voudrais donc dans un premier temps, vérifier que la variable n'est pas à la valeur souhaitée et si ce n'est pas le cas, avoir un événement qui se déclenche au changement de valeur de cette variable. Cette méthode de programmation fonctionne lorsque la connexion de la variable locale n'est pas activée, mais pas avec la connexion Datasocket.
    Est-ce normal? Y-at-il un moyen pour que ce soit le serveur qui informe le client Labview que la variable a changé d'état?
    Cécile

    Bonjour Cécile !
    Et bienvenue sur ce Forum ...francais
    Je ne vous apporterai pas d'élément complet de réponse car je n'ai jamais utilisé de process DATASOCKET .
    Cependant je pense pouvoir vous aider lorsque , je vous cite :
    "Dans les deux cas, les ressources de mon PC augmentent et les temps de réponse sont assez longs. "
    Je pense que vous utilisez des boucles contenant des tableaux ou des variables locales et pire encore ,pour l'espace mémoire, des fonctions concaténation, des fonctions de modification de tableau etc...
    En effet contrairement à certains languages de programmation utilisant des boucles (presque tous maintenant) Labview génére à chaque itération de boucle une allocation mémoire (différente si ce n'est pas le premier appel ) lors d'une lecture ou écriture de variable locale (imaginez alors si c'est un tableau de clusteur par ex...) l'utilisation mémoire augmente alors à chaque lecture ecriture des variables...
    Utilisez un registre à décalage (click droit sur la boucle for ou while) pour que votre variable soit transmise à la prochaine itération (même en arretant Labview, vous pouvez utiliser les valeurs précédents l'arret !) et ne soit plus réallouer à chaque itération
    vous pouvez avoir plus de détails en lisant l'Application note suivante...
    Labview Performance and Memory Management
    et un sujet (en anglais) qui définit bien la différence et le fonctionnement des variables
    locales et noeuds de propriété
    que vous pourrez retrouver dans le répertoire manuals de LAbview...n'oubliez pas de préciser à chaque sujet votre config et des infos précises sur votre problème , le monde des sytèmes electronique - informatique et vaste et varié...
    CordialemntMessage Edité par Ecosmose_CNRS le 05-26-2005 06:13 PM
    Julien
    Conception Informatique et électronique
    CNRS LCSR Web
    Orléans la Source FRANCE

  • Iphoto Library remplacée par une autre, plus ancienne

    Bonjour,
    Lors d'une mauvaise manip, j'ai remplacé ma bibliothèque iphoto par une plus ancienne, datant de décembre. Je pensais avoir donc perdu toutes mes photos mais je les ai toutes retrouvées dans "Masters" apres avoir fait "Ouvrir le contenu du paquet" en cliquant droit sur le dossier "Iphoto librrary"
    Dans ce dossier Master, j'ai toutes mes photos y compris celles qui se trouvent dans la bibliothèque actuelle, celle qui a remplacé l'autre, mais dans le "désordre".
    Comment refaire mon ancienne et vraie bibliothèque iphoto avec mes photos contenues toutes dans Masters?
    En sachant que pas mal d'entre elles sont en double, triple..
    Merci.

    You can't have downloaded the iphoto for 10.9 as it won't be offered to you on the App Store. Installing 9.5 would not corrupt anything. If you already had iPhoto 11 then no purchase was necessary. If you didn't already have iPhoto 11 then there is no way you could have downloaded iPhoto 9.5 - the iPhoto for 10.9.
    Further, upgrading iPhoto to a later version will never fix a corrupted library. Therefore, you didn't have a corrupted Library.  So, honestly. I'm not sure what you're asking here. The only software version issues around iPhoto and Mavericks is that iPhoto 11 requires a free upgrade, and you're told about that first time you try to launch it.

  • Variable ou Registre à décalage ?

    Bonjour à Tous,
    J'ai des questions sur le choix entre variable ou registre à décalage.
    Exemple :   
             Dans une boucle While, il y a une machine d'état comportant 10 Conditions. A la condition 1, vous générez un indicateur comprenant un résultat que vous voulez utiliser dans les conditions 8 et 9.
    Les questions à répondre sont les suivantes :
    - Vous choisissez quoi : registre à décalage ou variable ?
    - Lequel est le moins gourmand en ressource ?
    - Si vous choisissez la variable, a partir de combien de conditions dans lequelles vous avez besoin de ce résultat vous passerez à un registre à décalage ?
    Merci beaucoup, si possible répondre au trois questions
    Résolu !
    Accéder à la solution.

    Bonjour,
    Le concept majeur de la programmation sous LabVIEW est le concept de flux de donnees, le fait d'utiliser une variable locale va casser ce concept via les noeuds "lire/ecrire dans une variable locale...".
    L'utilisation d'un registre a decalage va permetre d'assurer la continuite de ce flux de donnees a travers la boucle while.
    C'est donc la meilleure methode a suivre et ne prendra pas plus de memoire au cours de l'execution du VI qu'une variable locale.
    Dans certains cas on pourra meme remplacer le registre a decalage par un noeud de retroaction.
    Cordialement,
    Da Helmut

  • Fonctionne​ment registre à décalage

    Bonjour,
    Pour éviter d'utiliser les variables globales, il est conseillé d'utiliser un VI composé d'une boucle While avec un registre à décalage non initialisé.
    Comment et où sont stockées les informations du registre à décalage ? En quoi finalement cette méthode améliore l'usage de la mémoire comparativement à la variable globale classique ? 
    Merci pour vos nombreuse réponses.
    Slts
    Solved!
    Go to Solution.

    Merci de ne pas soumettre plusiers copies de la meme question.  Vous avez poser la question en francais dans un forum qui est majorite anglophone; il existe aussi un forum francophone.
    En plus, votre question n'est pas completement logique.  La registre a decalage stocke des donnees en soi - c'est la fonction d'une registre a decalage.
    Une registre a decalage non initialise n'est pas forcement mieux qu'une variable globale - par exemple l'acces a une variable globale est plus vite.  L'avantage d'une registre a decalage est qu'il est possible de faire des actions plus complexe que lire et ecrire sans la risque d'une "race condition" (je ne connais pas la bonne traduction de cette phrase).  Une presentation sur l'usage des registres a decalage: https://decibel.ni.com/content/docs/DOC-21226
    Translation of the original question into English:
    Hello,
    To avoid using global variables, the use of a VI containing a While loop with an uninitialized shift register is recommended.
    Where and how is the data stored in a shift register?  How does this method improve memory use compared to a global variable?
    Thanks for your many replies.

  • Comment conserver les caractéristiques typo à une variable titre en continu ?

    Bonjour,
    Je réalise un livre avec plusieurs chapitres sur indesign 5.5. Le nom de chaque chapitre apparaît sur les pages de droite de ma maquette par une variable "titre en continu". Ces titres sont déterminés par un style de paragraphe.
    Dans l'un des titres de chapitre apparaît un exposant (style de caractère) qui disparaît dans la variable.
    Comment puis-je résoudre ce problème ?
    Merci d'avance pour votre aide
    Sophie

    I hope you can read English.
    Working from a Google translation I think you are asking about how to format the content of a variable when you want to have part of the text with a different style, in this case superscript. This may not be possible for you using variables.
    Variables are treated as single characters, as far as formatting and text flow are concerned. For that reason they cannot have multiple formats within the same variable string, nor can they break across multiple lines. You mentioned you are using a Paragraph Style based header variable. Depending on just where and how your multiple formats need to appear you may be able to accomplish your task using a series of Character Style based header variables instead, but it isn't always workable.

  • Comment doit on enregistrer un formulaire, afin qu'il puisse être rempli par une autre personne et qu'il puisse le renvoyer

    Comment doit on enregistrer un formulaire, afin qu'il puisse être rempli par une autre personne et qu'il puisse le renvoyer

    Bonjour,
    Formulaire PDF
    De : JR_Boulay 
    Envoyé : lundi 9 février 2015 21:30
    À : Michel GRANGEON
    Objet :  Comment doit on enregistrer un formulaire, afin qu'il puisse être rempli par une autre personne et qu'il puisse le renvoyer
    Comment doit on enregistrer un formulaire, afin qu'il puisse être rempli par une autre personne et qu'il puisse le renvoyer
    created by JR_Boulay <https://forums.adobe.com/people/JR_Boulay>  in Forums en français - View the full discussion <https://forums.adobe.com/message/7178381#7178381>

  • Boucle FOR dans une boucle while avec un registre à décalage

    Bonjour à tous,
    je rencontre un problème au niveau de l'indexation de l'execution de mes commandes.
    Lorsque j'exécute mon programme, seulement la dernière commande est prise en compte.
    Faut-il enlever mon registre à décalage? Changer le mode du tunnel ?
    Cordialement
    Pièces jointes :
    Boucle FOR, while.JPG ‏134 KB

    ça peut avoir son utilité lorsque le diagramme est conséquent et illisible
    alors c'est que tu "reprends en main" le diagram d'un autre .... 
    sinon... si c'est le tien ... il ne sera jamais illisible.
    Et si tu veux "gagner du temps" ... je t'assure ... cable "propre" du premier coup.
    Lisibilité, compréhensibilité, évolutivité ... tu seras gagnant à tous les coups. (à 1000%)
    Sans compter "le coup d'oeil" quand "un autre" ouvrira ton code.
    Avant d'aller plus loin et de comprendre quoi que ce soit dans ce que tu as fait ...
    la propreté de ton diagram sera "ta signature".
    Ah oui ... un diagramme aussi propre que ça ... ça ne peut être que Geoffrey !
    ça l'fait non ?  

  • Registre à décalage

    Bonjour,
    J'ai développé récemment une IHM dans le cadre de mes études d'ingénieur. Cette IHM devait envoyer des commandes de tensions vers une carte électronique via une liaison RS232. La carte électronique envoyant ensuite cette commande de tension sur une ou plusieurs voies (24 au totale) afin de polariser une antenne.
    J'ai donc mis 24 controls numérique (pour l'envoi de la valeur de tension/ un par voie) ainsi que 24 cases à cocher (pour la sélection des voies) sur mon IHM. J'ai ensuite mis une structure évenement (avec un évenement sur chaque sélection de la case à coché pour l'envoi de la valeur de la tension) je stock ensuite les 24 valeurs dans un tableau. Lorsque j'appuis sur le bouton "envoi", je "dépile" mon tableau dans le VI d'envoie sur la liaison RS232. Un programme sur la carte électronique se chargant ensuite du traitement des valeurs différentes de 0V pour envoie vers l'antenne.
    J'ai don du utilisé 24 registres à décalage pour avoir accés à chaque valeur dans tous les évenements de ma strucuture évenement. Je suis finalement arrivé à une IHM parfaitement fonctionnelle mais je me posais la question s'il n'existait pas d'autre alternative que le registre à décalage pour mon IHM (parce que j'en ai passé des heures à relier chaque ligne de mes registre à décalage). Même question pour l'utilisation du tableau.
    J'epère avoir été clair.
    Merci
    Benjamin
     

    " extraire un à un les éléments d'un Cluster" ... ?
    il n'est pas possible " d'indexer " un Cluster.
    par contre, si tous les éléments du cluster sont du même type, tu peux convertir ton Cluster en Tableau ("cluser to array" dans la palette cluster)
    et ensuite ... indexer le Tableau obtenu.
    attention, les éléments dans le Tableau se trouveront dans l'ordre dans lequel il se trouve dans le cluster
    Tu me diras .... bein oui, je m'en doute :-)
    attention ... l'ordre dans le cluster n'est pas oblibatoirement l'ordre avec lequel ils sont graphiquement visibles (dans le cluster)
    Au départ ... l'ordre dans un cluster est l'ordre suivant lequel tu introduis les éléments dans le cluster.
    ensuite .... tu peux réorganiser cet ordre ... clic droit sur le bord du cluster + reorder controls in cluster.

  • Lire la valeur retournée par une fonction (DLL) dans Pass/Fail test

    Bonjour,
    comme le titre l'indique je charche à tester une fonction en l'appelant d'une DLL (en C) en utilisant le Pass/Fail test. La fonction retourne la somme entre deux entier x et y.
    Quel sont les étapes à suivre et surtout comment je peux récupérer la valeur retournée et faire un teste sur elle!!
    Que dois-je écrire dans la rubrique "Data Source"...
    Vous trouvez ci-joint une idée de ce que j'ai fait..
    merci pour votre réponse
    Pièces jointes :
    PassFail.JPG ‏94 KB

    La question n'est pas très claire...
    Disons que si le but est de vérifier si la valeur est entre certaines bornes ex: 10<x<15 ou x<20 par exemple, alors il faut utiliser un "numericlimit test" 
    Pour réutiliser une valeur (variable) dans TestStand, le plus simple est de l'assigner à une variable locale dans TestStand. (Même méthode qu'en haut mais remplacer l'expression par Locals.MaVariable )
    Rodéric L
    Certified LabVIEW Architect

  • Registre à décalage et initialisation DMM

    Bonjour,
    Je developpe actuellement un logiciel permettant le contrôle d'étalonnage de capteur de pression avec des carte PXI 4065.
    La structure de mon programme est un registre à décalage, plusieurs étapes me permettant d'initialiser les matériels que j'utilise (générateur de pression étalon et cartes multimétre).
    Afin de réaliser des mesures de qualité, je dois respecter un temps de chauffe matériel et pour cela initialiser la communication quelques étapes avant de réaliser ma mesure.
    Malheureusement, je n'arrive pas à garder "fermé" le contact de ma carte au moment de la mesure, celle-ci se réinitialise de façon systématique au moment de l'acquisition de la valeur.
    Est-il possible de lire uniquement la valeur sans recharger la configuration hardware dans la carte d'acquisition. (Je suis obligé d'utiliser un bloc Initiate sinon j'ai une erreur "handle instrument error" avant le bloc read)
    D'avance merci!
    Cordialement

    Hello Pod_Bol,
    The issue is you're reinitializing the DMM.  I recommend wiring the DMM session handle from NI-DMM Initiate to a front panel indicator, so you can pass the session handle to the Mesure subVI.  It would look something like this:
    Of course, you could also accomplish this by closing the session in one VI and then reinitializing it in another without resetting the device, but this is sloppy coding:
    General comments:
    -Are you using the PXI-4060?  The PXI-4060 is the only PXI DMM NI sells that has a 200mV range.  If you're using any PXI-407x DMM, I recommend using the 100mV for better sensitivity (if your measurement is less than 100mV, of course) or specifically set the 1V range.  As your code is written, requesting the 200mV range on a PXI-407x DMM will coerce to the 1V range.
    -The flat sequence structure in Mode measure.jpg is unneccessary.
    -There is no reason to add a delay to the DMM while calling commit (ExpressVI inside Vrai case structure).
    -There's probably a better way to store the data than in the dynamic data array you're generating from each measurement. 
    Are you possibly trying to acquire multiple data points from the DMM?  If so, I recommend using the excellent NI-DMM Example VIs, located here:
    Example Finder»Hardware Input and Output»Modular Instruments»NI-DMM»Multi-Point Measurements
    Let us know if you have any other questions and I'm happy to clarify.  Have a great day!
    -John Sullivan
    Analog Engineer

  • J'ai importer des CD sur iTunes et entrer toutes les infos une par une sauf que quand je regarde le fichiers dans l'explorateur windows, il n'y a que le titre et rien d'autre

    J'ai importer des CD sur iTunes et entrer toutes les infos une par une sauf que quand je regarde le fichiers dans l'explorateur windows, il n'y a que le titre et rien d'autre. Comment faire pour que les infos des musiques iTunes sois les memes sur le fichiers en questions ?
    Mes musiques se trouvent dans un dossier sur mon bureau.
    Merci

    http://en.wikipedia.org/wiki/Comparison_of_audio_formats
    http://translate.google.com/translate?sl=auto&tl=fr&js=n&prev=_t&hl=en&ie=UTF-8& layout=2&eotf=1&u=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FComparison_of_audio_for mats&act=url
    http://fr.wikipedia.org/wiki/Format_de_fichier_audio#Caract.C3.A9ristiques_des_f ormats_audio
    I think the bit rate of 1023kbps as opposed to 1411kbps illustrates that the Apple Lossless file is 72% of the size of the original, however it sill consists of 16bit stereo sampled at 44.1KHz. You can also compare the lossy AAC formats to see if you can hear any difference at higher sample rates.
    Wav -> Apple Lossless -> Wav = original data
    Wav -> ACC -> Wav = degraded data
    Je pense que le débit binaire de 1023kbps contre 1411kbps illustre le fait que le fichier Apple Lossless est de 72% de la taille de l'original, mais il se compose de filon-couche stéréo 16bit échantillonnées à 44,1 KHz. Vous pouvez également comparer les formats avec perte AAC pour voir si vous pouvez entendre aucune différence des taux d'échantillonnage élevé.
    Wav -> Apple Lossless -> Wav = données d'origine
    Wav -> ACC -> Wav = données dégradées
    tt2

  • Registre à décalage, problème d'initialisation

    Bonjour,
    Sur l'image en PJ, j'ai réalisé un registre à décalage pour ma T_Consigne.
    Je souhaite l'initialiser avec la 1ère valeur relevée et ensuite comparer ma dernière valeur en mémoire avec ma nouvelle valeur.
    Néanmoins, à chaque itération, la valeur est à nouveau initialisée avec la nouvelle..
    Pourtant l'initialisation ne se fait qu'une seule fois?
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Registre à décalage.JPG ‏91 KB

    salut, j'étais en train d'écrire, et j'ai vu la réponse de ouadji, qui effectivement ouadji est bonne :
    le fond :
    > pour être utilisé dans la boucle, les contrôles doivent être dans la boucle
    > il te faut un case "init", au démarrage, qui va servir à lire la valeur des contrôles et initialiser les registres à déclages
    la forme : une image permet de regarder rapidement, un exemple permet de comprendre ton problème.
    A+
    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

Maybe you are looking for

  • Problem in displaying Japanese characters on the browser.

    Hi Friends, Hope one of you could help me in this!! We are using SHIFT_JIS character encoding in our jsps to display Japanese characters. <%@ page contentType="text/html; charset=SHIFT_JIS" %> Is there any other configuration required on server side

  • SoundDesigner 2 CD burning bug

    When I try to burn an audio CD with SDII audio files with iTunes 8.0.1, iTunes crops the first 2 seconds of audio. The audio files play fine in iTunes but are cropped on the Audio CD.

  • Oracle and UL 1.0

    Based on the latest news around UL , this is Oracle Official Position : Oracle will continue to work closely with UnitedLinux and provide customer support for UnitedLinux 1.0 (UL 1.0), throughout its life cycle. The products supported by Oracle, as p

  • Administrator account not recognized

    Trying to change settings and I've been typing in the administrator account name and password and this keeps coming up: "You must type an administrators name and password to make changes to system preferences". After multiple attempts I get the "too

  • WebUI Calendar. Is there any configuration around this?.

    When we display the WebUI Calendar there's an option to go backwards and forwards by month, but not by year, as most calendars show. They normally have "<"" and ">" pointers for month and a "<<" and ">>" pointers for year. Does anyone know if this ca