Qu'est-ce qui limite la vitesse d'excécuti​on d'une boucle while?

J'utilise Labview 7.0 avec une carte PCI-6024E (à 12bits à 200Kéch/s en entrée et 12bits à 10Kéch/s en sorties). Mes VI sont essentiellement basé sur des boucles "while" dont je règle la temporisation et contrôle la période d'excécution. Mon PC n'est pas capable d'excécuter ces boucles à des périodes inférieures à 150-200ms.
Qu'est-ce qui limite la période d'acquisition des boucles while: les performances du PC ou la carte?
En gros, est-ce qu'il suffirait que je change de PC?
Merci...
PC: Pentium II, 392760 Ko de RAM

Je viens de jeter un oeil aux deux VIs que vous utilisez. Voici ce que je vous recommande :
Si tel n'est pas le cas, reliez le compteur d'itération de la boucle à l'entrée iteration (init:0) de AI Read One Scan.
Créez une copie de AO Update Channel et modifiez celle-ci de manière à ajouter l'entrée iteration count (0:initialize) du sous-VI AO Write One Update à son connecteur.
Utilisez la copie modifiée et reliez également le compteur d'itération de la boucle à l'entrée ajoutée.
Ceci devrait sensiblement réduire le temps d'exécution de la boucle puisque les tâches d'écriture et de lecture seront ainsi configurées uniquement lors de la première itération.
Une alternative à ces opérations serait d'utiliser des fonctions DAQ plus avancées qui vous permettront de séparer la configuration de la lecture/écriture selon mon précédent message.
Message Edité par JB le 07-09-2008 03:27 PM

Similar Messages

  • Mettre en pause boucle while qui comporte une attente

    Bonjour,
    Je cherche à interrompre une attente qui est dans une boucle while.
    A l'aide d'un bouton pause par ex. je voudrais interrompre l'attente et en enlevant la pause, reprendre l'attente où elle en était.
    Merci pour vos idées.
    Manu

    Bonjour Manu,
    Tu trouveras un exemple ici :
    https://decibel.ni.com/content/docs/DOC-10792
    Cdlmt,
    Pierre
    Pierre V, Application Engineer
    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;}
    LabVIEW Tour
    Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014

  • Comment crée une boucle qui ce répète le même nombre de fois que le nombre d'impultions que reçoit l'entrée compteur de ma carte NI USB-6009 ?

    Bonjour à tous,
    Je cherche à relever la tension aux bornes d'un capteur en fonction de la position de celui-ci donc en fonction du nombre de pas du moteur qui le déplace.
    Pour celà je cherche comment créer une boucle qui ce répète le même nombre de fois que le nombre d'impultions que reçoit l'entrée compteur de ma carte NI USB-6009.
    Le problème c'est que lorsque j'utilise pour cela une boucle while, la mesure ce fait en continue même si je n'ai aucune impulsion sur mon compteur (que le moteur ne tourne pas).
    Alors que je voudrais que la mesure ne se fasse que quand me moteur tourne et s'arrete lorsque qu'il s'arrete.
    Je suis vraiment débutant avec LabView j'ai donc beaucoup de peine malgré plusieurs heures d'essai infructueux.
    Ci-joint le .VI actuel.
    Merci d'avance à tous pour votre temps et votre aide.
    Cordialement,
    Alpine13
    Attachments:
    Presque.vi ‏166 KB

    Bonjour Alpine 13,
    Pour créer une boucle qui ce répète le même nombre de fois que le nombre d'impultions de compteur, il faut utiliser le boucle "for" qui prend les impulsion de votre compteur comme l'entrée.Je vous suggère de commencer avec un simple exemple. Regardez l'exemple suivant:
    LabVIEW >> Help >> Find Examples >> Hardware Input and Output >> DAQmx >> Counter Measurements >> Count Digital Events >> Count Digital Events.vi
    Vous pouvez modifier cet exemple, de façon suivant. Mettez un boucle "for" dans le boucle "while" et branchez le sortie "Data" dans le nombre d'itérations de votre boucle "for", de cette façon votre boucle "for" va executer  le même nombre de fois que le nombre d'impultions de votre compteur. Aussi pour devenir plus à l'aise avec la programmation LabVIEW,  je vous recommande les articles suivants:
    Learn 10 Functions in NI-DAQmx and Handle 80 Percent of Your Data Acquisition Applications
    Getting Started with NI-DAQmx: Main Page
    Synchronize Encoder Counter Input and Analog Input
    Mikhail
    RF Toolkits, Product Support Engineer
    National Instruments

  • Comment dans un évènement exécuter une boucle qui s'arrête avec un bouton stop?

    Je travaille sous LabVIEW 7.1.
    Sur l'exemple "Wave file payer" dans le répertoire E/S/sons, dans l'évènement [2] PLAY une boucle while s'exécute. A l'intérieur de cette boucle while des booléens stop et pause peuvent ête lus.
    Lorsque je crée un diagramme similaire, pendant l'exécution de la boucle while tout la face avant est inaccessible. Le programme se bloque sur la boucle while puisque le bouton stop l'arrêtant est inaccessible.
    Que manque-t-il à mon code?
    Merci.

    Comme je le pensais, c'est un "petit truc à savoir"
    En faisant un clic droit sur la structure Event, on peut aller dant "Edit event handled by this case..."
    Dans cette fenetre, en bas il faut décocher l'option "lock front panel until the event case for this event completes"... cette option parle d'elle même pour peut qu'on y prête attention et qu'on comprenne l'anglais
    J'espère que cela résoudra tes problèmes.
    When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"

  • Boucles while parallèles qui ne se lancent pas

    Bonjour !
    Je réalise un programme pour un processus de calibration de capteurs dans lequel j'ai décidé d'utiliser des boucles parallèles ; cette calibration ne peut se faire que lorsque les capteurs sont stabilisés. 
    Pour chaque capteur, le programme regarde donc s'il est stabilisé, puis fait l'acquisition des points de mesure qu'il range ensuite dans un fichier excel.
    Il y a quatre boucles qui tournent :
    - la première fait l'acquisition des données de chaque capteur et les range dans un tableau affiché en face-avant. Trois données m'intéressent pour mon test : T, Q et F, que je range dans un tableau.
    - une seconde boucle fait le test de stabilité. Si, par exemple, la température ne varie pas de plus de 0.3°C pendant une minute, alors le capteur est considéré stable en température et le booléen correspondant pas à VRAI (même principe pour Q et F).
    - la troisième boucle, si le capteur est stable, fait l'acquisition d'un certain nombre de points de mesure considérés vallables que l'on range dans un nouveau fichier excel.
    - quatrième boucle permet d'afficher les valeurs renvoyées par le capteur sur un graphe déroulant.
    Mon problème est le suivant : la troisième boucle ('Enregistrement des points quand le capteur est stabilisé") n'est jamais lue par Labview, malgré toutes mes tentatives (j'ai bien essayé de placer un rendez-vous mais ça ne fait qu'aggraver le problème puisque le rendez-vous ne question ne se fait jamais...). 
    Comment résoudre le problème ?
    Je ne peux pas vous envoyer le VI, puisqu'il fait appel à tout un tas de sous-VIs et que vous ne pourrez donc jamais le lancer, mais je vous envoie un extrait du passage qui pose soucis (désolé pour la taille, je n'ai pas réussi à la faire plus compact que ça...)
    Merci d'avance pour vos réponses ! 
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Extrait Boucles Parallèles.png ‏691 KB

    Bonjour,
    Un conseil complementaire est d'eviter de mettre autant de code dans une boucle de gestion d'évenement pour que l'application soit la
    plus réactive possible au niveau de l'IHM.
    Paolo_P
    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;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Bonjour à tous, je viens d'installer windows 7 avec bootcamp.L'installation semble s'être bien passée.Au demarrage du mac quand je choisis window7, alors j'obtiens un ecran noir avec un trait qui clignote et la machine redemarre sans cesse. Une solution?

    bonjour à tous, je viens d'installer windows 7 avec bootcamp.L'installation semble s'être bien passée.Au demarrage du mac quand je choisis window7, alors j'obtiens un ecran noir avec un trait qui clignote et la machine redemarre sans cesse. Une solution?

    But at startup when I choose windows 7 I get a black screen with a clignottant dash and mac starts ever.
    If You Have Problems Installing the Device DriversIf it appears that the Boot Camp drivers weren’t successfully installed, try repairing them.To repair Boot Camp drivers:
    1 Start up your computer in Windows.
    2 Insert your Mac OS X installation disc.
    3 If the installer doesn’t start automatically, browse the disc using Windows Explorerand double-click the setup.exe file in the Boot Camp directory.
    4 Click Repair and follow the onscreen instructions.
    If a message appears that says the software you’re installing has not passed WindowsLogo testing, click Continue Anyway.If you need to reinstall specific drivers, you can install one driver at a time. For example,if your built-in iSight camera isn’t working, you can reinstall just the iSight driver.
    Individual drivers are in the Drivers folder on the Mac OS X installation disc.
    To reinstall a specific driver:
    1 Insert your Mac OS X installation disc.
    2 Quit AutoRun if it opens.
    3 Using Windows Explorer, locate the driver that you want to reinstall.
    4 Open the driver to start the installation.
    https://discussions.apple.com/thread/3301234 
    OS X Lion: About Lion Recovery
    https://support.apple.com/kb/HT4718
    https://support.apple.com/kb/HT5034 
    Boot Camp 4.0, OS X Lion: Frequently asked question
    http://support.apple.com/kb/HT4818
    http://manuals.info.apple.com/en_US/boot_camp_install-setup_10.7.pdf
    create a Windows support software (drivers) CD or USB storage media
    http://support.apple.com/kb/HT4407 
    Installation Guide Instructions for all features and settings.
    Boot Camp 4.0 FAQ Get answers to commonly asked Boot Camp questions.
    Windows 7 FAQ Answers to commonly asked Windows 7 questions.
    http://www.apple.com/support/bootcamp/

  • Peut-on se servir de l'écran du iphone 4 comme moniteur, est-ce que l'on peut entré un signal provenant d'une caméra Gopro ( un live feed)

    Est-ce que l'on peut se servir du iphone 4 comme écran moniteur. J,ai une caméra Gopro et est-ce que je pourrait entré un Live Feed et me servir de mon écran comme moniteur.
    Merci!
    Alain Turcotte

    Your initial post deals with the iPhone warranty.  Forum participants have no control over Apple warranties.
    You then relate a problem with your cursor which you state that could not be resolved by the Apple genius bar.  If they cannot solve it, certainly forum participants are not likely to succeed either.
    Then you bring up an issue that of an appointment, whether it took place or not, with Apple.  We cannot intervene or assist you in that issue because we are not Apple employees.  We are Apple customers just like you.
    All I can advise you is to escalate your issues to the higher levels of Apple management.  We are not in a position to assist you.
    Ciao.

  • Il existe une application qui permet d'envoyer des msg tout en utilisent une autre aplication

    Je voudrais savoir si il existe un application qui permet d'utiliser les msg tout en utilisent un autre aplication apr exemple je regarde une vidéo et je recoit un msg et je voudrais pouvoir le lire sans quiter mon aplication. Voila merci de vos réponce

    Hello Kevin@VALEO,
    You're in a English section of the forum. Please write in English is you expect an answer. Otherwise, you can post your question in the French section here.
    Regarding your question, why don't you use the Create Task function in order to test if a task already is using the digital channels? If the function sends the specific error which indicates your digital channels are already in use, you'll know it.
    Please don't hesitate to post a simple example which demonstrates the error you meet, eventually attach a screenshot and give us details if you wish more help.
    Regards,
    Jérémy C.
    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;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Débutant: comment faire clignoter une led?

    Bonjour, je viens de débuter avec labview et je souhaiterais faire clignoter une led à une fréquence de 1hz, simplement avec un bouton ok qui me permettrais de lancer le clignotement.
    Je vous remercie d'avance pour votre réponse.
    Résolu !
    Accéder à la solution.

    Bonjour,
    C'est assez simple. Il suffit de mettre la led dans une boucle while cadencée à la fréquence désirée. A chaque itération, faire un non logique avec l'état précédent pour inverser le led. Il suffit de faire un ET logique avec le bouton OK pour qu'elle ne s'allume que si OK est vrai. L'état précédent est obtenu avec un registre à décalage.
    Francis M | Voir mon profil
    Certified LabVIEW Developer

  • Il y a toujours une fenetre pour i Cloud qui s'affiche sur mon écran qu'est-ce?

    Pourquoi une fenêtre concernant i <cloud s'affiche toujours sur mon écran en disant que mon Mac ne peut fonctionner si ce problème n'est pas résulu ?

    Bonjour Maxime,
    Merci beaucoup pour votre solution, j'ai adapté à mon VI, ça marche bien, seulement dans le sous-VI "fenetre.Image" il y a une boucle While qui ne s'arrête pas quand j'exécute mon VI pricipale, je voudrais mettre une commande (Booléen) à la face avance de mon VI principale pour arr^ter le VI quand on veut mais je ne sais pas faire comment pour lier cette commande avec la commande d'arrêt dans le sousVI fenetre.Image. Pourriez-vous m'indiquer la solution s'il vous plait.
    Merci beaucoup Maxime. TuongLinh. Cordialement.
    Pièces jointes :
    Creation_Image.vi ‏24 KB
    fenetre.Image.vi ‏23 KB
    vi.Premier.Plan.vi ‏30 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...

  • Programme à étapes

    Bonjour à tous,
    Je travaille depuis quelques mois sur Labview 8.2. J'ai écrit un programme qui gère différents instruments (générateur de courant DC, générateur micro-ondes, débitmètres...) J'ai un raque NI Compact DAQ, des cartes d'acquisitions et des relais.
    Le programme actuel est séquencé en 3 parties. 1ere partie : ouverture des voies, 2eme partie : actions (lecture; écriture...) avec une boucle While, 3eme partie : arrêt des taches.
    Mon programme fonctionne correctement mais n'est pas terminé.
    Je voudrais à présent créer une fonction qui me permettrait d'exécuter mon programme plusieurs fois en intégrant une cellule temps.
    Je donne en exemple mon programme, j'ai plusieurs paramètres configurables (des consignes et des interrupteurs pour activer les consignes).
    Je clique sur une icône 'Étape 1" (que je n'ai pas encore) et je règle les paramètres dans les cellules de consigne. Je souhaiterai que ma première étape soit l'allumage de mes débitmètres et l'allumage du chauffage pendant 10 minutes (fonction temps qui n'est pas encore intégrée) . 
    Je fais de même pour l'étape 2, je clique sur "Etape 2" et configure le temps de l'étape, les débitmètres, le chauffage mais j'ajoute une consigne pour les micro-ondes.
    Je clique sur étape 3 et ainsi de suite. Je souhaite au total avoir 10 étapes.
    Donc après la configuration, je reviens sur "étape 1" et je clique sur "start" (que je n'ai pas encore) et là, le programme se lance, un compteur se met en route (que je n'ai pas également). Seuls les instruments que j'ai configuré démarrent. Au bout de 10 minutes, le programme passe à l'étape 2 etc...
    Quel(s) outil(s) me permettrait de faire se genre de programmation? Est ce qu'il serait possible d'avoir un exemple d'un programme de ce type? Je peux également poster une version simplifiée du programme pour vous donner une idée de ce que j'ai déjà fait.
    Je vous remercie d'avance pour votre aide

    Bonjour;
    Je travaille toujours sur mon projet et je ne trouve pas une machine à états qui correspond à ce que j'ai besoin.
    Ma version de Labview me limite car il y a des exemples que je ne peux pas lire (version supérieure à la mienne)
    J'ai joins un document Word de mon programme avec les cases qui me manquent, un start et stop du programme selectionné, le temps de chaque étape à définir et le nombre d'étapes également à définir. Toutes les autres cellules sont des paramètres que je souhaite modifier pour chaque étape. Exemple, poule l'étape 1 je veux un débit total de gaz égale à 100 sccm et l'étape 2 uniquement 50 sccm.
    Est ce que l'on peut me proposer un exemple simple svp?
    Merci d'avance pour votre aide
    Pièces jointes :
    Programme à étape.doc ‏145 KB

  • Machine à états et noeuds de propriété

    Bonjour,
    je suis en train de réaliser un programme qui permet de "piloter" un moteur.
    Il s'articule de la manière suivante:
    - une boucle qui gère une machine à état et qui traite, entre autre, l'envoi d'une commande de pwm qui imposera la vitesse de rotation du moteur.
    - une seconde boucle qui permet l'acquisition de données destinées à la gestion des erreurs
    - une troisième boucle qui gère les différentes phases de pilotage du moteur.
    Tout fonctionne très bien à une chose près. C'est le changement de valeur du bouton ON qui  détermine l'envoi ou l'arrêt de l'envoi du pwm (boucle 1). Cependant, dans la boucle 3, lorsqu'une erreur est détectée, le moteur doit s'éteindre, et c'est ce qui se produit. MAIS, malgré le fait que lors de la dectection d'une erreur, j'impose par noeud de propriété, au bouton ON de reprendre la valeur faux, ça n'a pas d'impact dans ma machine à état et la commande du pwm ne repasse pas à zéro comme je le souhaiterais.
    Comment faire pour imposer que le pwm repasse à 0 quand une erreur est détectée?
    Si quelqu'un a une solution, ça m'aiderait beaucoup.
    Je vous mets en pièce jointe mon programme, en espérant qu'il soit assez lisible et compréhensible.
    merci d'avance
    Anne
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Dossier WESTTsev 11 02 2011.zip ‏776 KB

    Bonjour,
    Plusieurs possibilités:
    1. utiliser votre sous VI de gestion du moteur dans la condition erreur pour l'arreter
    2. le noeud de proriété valeur ne sera pas géré comme un événement utilisateur dans votre structure évenement ne le gère pas, dans ce cas utilisez le noeud de propriété Valeur (signalisation) et cela revient à créer un événement utilisateur donc géré par la structure événment.
    Cordialement
    Greg S.
    CNRS
    LV 7.1 8.2 8.6 2009 2011 2012 2013
    LPMC - CNRS
    N'oubliez pas de complimenter cela fait toujours plaisir.

  • Keithley 2400 Meter Read dans une boucle - probleme de status byte read

    Bonjour,
    j'utilise un Keithley 2400 pour mesurer un potentiel. J'ai débuté en utilisant le modèle Read.vi du driver. Dans mon cas, la portion "read single" se trouve dans une boucle for et après un certain nombre de mesures (cela semble aléatoire), la fonction gèle et en remontant les étapes, on découvre qu'il s'agit de la lecture de "status byte" qui ne reçoit aucune réponse en amont. Il faut alors redémarrer complètement le programme. Celà survient à chaque fois et après un nombre d'itérations variable.
    J'ai même tenté de mettre une boucle while directement dans l'exemple "read single" (le .vi) et le problème est exactement le même, même si on ajoute un wait à la boucle. Après un certain temps, ça gèle et c'est le status read qui ne reçoit aucune réponse.
    Merci.

    Bonsoir PG123,
    Ce que je vois directement dans votre VI c'est le fait que vous exécutiez à la vitesse maximum votre boucle While sans le moindre cadencement ne laissant ainsi jamais de temps disponible au processeur pour effectuer d'autres tâches. Il est propable de plus que l'instrument ne supporte pas un nombre de requêtes aussi élevée saturant peut être son buffer ou ne laissant pas le temps à l'instrument d'écrire correctement les valeurs.
    De plus, je pense que vous n'avez pas besoin de récupérer à la vitesse maximum toutes les valeurs possibles provenant de votre instrument. C'est pourquoi je pense qu'une lecture toutes les 200ms suffirait déjà amplement.
    Voici donc à quoi devrait ressembler l'intérieur de votre boucle While :
    Essayez avec un cadencement d'1 seconde (1000ms en entrée de la fonction) dans un premier temps et voyez si le problème de gel se produit. Si ce n'est pas le cas, vous pourrez alors progressivement diminuer la valeur de cadencement (jusqu'à 200ms minimum, celà devrait suffire comme déjà dit au dessus.
    Cordialement,
    Jérémy C.
    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;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Comment sortir d'une boucle

    Bonjour,
    comment je peux sortir d'une boucle while dans mon vi.
    dans "controle du moteur.vi" je dois changer la vitesse de rotation. vu que j'ai besoin d'une vitese qui soit variable, j'ai utiliser le vi pulse widith modulation. le problème c que dans ce vi je ne peux pas sortir de la boucle while tant que je n'ai pas appuyé sur stop.
    comment je dois faire pour que à chaque fois que je change la vitesse dans "controle du moteur.vi" automatiquement la fréquence change.
    Attachments:
    biblio.llb ‏911 KB

    Bonjour Salima,
    Je ne sais pas ci vous avez resous votre problem mais je vais asseyez. Je sais ce que vous voulez faire avec votre program. Le problem est que le subVI que vous utilizer (Pulse Width Modulator Revised.vi) a un boucle (loop) qui ne sort pas excepte quand le "Stop" est appuyer. Alors dans votre program principal (Control du Moteur.vi) vous finiras jamais le premier boucle parceque le program sera toujours entrains de finir le subVI Pulse Width Modulator Revised.
    La meilleur facons de resoudre ce problem c'est d'utilizer des "Global Variable". Pour apprendre comment utilizer global variables vous pouvez regarder les example qui viens avec LabVIEW. Alors dans votre program principal vous pouvez changer la frequence du moteur qui change le
    global variable qui change la frequence pendans que le subVI fonctionne. Vous devez aussi changer le proprete (property) du subVI pour que la boucle principal n'attend pas que le subVI finis avend quel la boucle tourne a la prochaine boucle (next iteration). Dans cette facon, vous pouvez controller les controles sur le subVI qui cours pendant que votre program principal cours.
    Vous devez excuser mons francais. J'espere que ca vous aide un peu. Bonjour.
    Ron

Maybe you are looking for