Comment créer une source de cadencement à 1MHz dans une boucle cadencée?

Comment créer une source de cadencement à 1MHz dans une boucle cadencée?

Bonjour Julie,
Je ne comprends pas très bien votre question.
Tout d'abord, à l'avenir, préférez recréer votre propre post sur le forum, celui-ci datant de 2006, vous pouvez être quasiment sûr que les gens qui y ont participé ne sont plus aussi disponible pour vous répondre.
D'autre part, le module 8451, qui gère la communication SPI peut gérer des horloges jusqu'à 12MHz, je ne vois pas où est votre problème d'horloge à 1MHz.
Le problème qui se posait dans le poste d'origine était d'avoir une boucle logicielle qui allait à plus d'1MHz, ce qui est très dur et qui demande du matériel particulier. C'est déjà une limite quasiment inatteignable avec un environnement RT, et il faudra plutot se tourner vers de la technologie FPGA.
En revanche, si votre besoin est de gérer une comm SPI à 1MHz, vous pouvez très bien avoir le module 8451 qui fait le codage et décodage SPI, et votre programme qui lui tourne à quelques ms pour récupérer ou envoyer de nouvelles données sur le bus!
J'espère vous avoir éclairé!
Cordialement,
Olivier L. | Certified LabVIEW Developer

Similar Messages

  • 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 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

  • Comment créer une dll sous labview avec plusieurs fonctions venant du même VI et possédant un tabcontrol ?

    Comment créer une dll sous labview avec plusieurs fonctions venant du même VI et possédant un tabcontrol ?

    Bonjour,
    L’utilisation d’une « commande d’onglet », ou « tabcontrol », ne pose pas de problème pour la définition d’une DLL à partir d’un VI.
    Selon la version de LabVIEW que vous utilisez, le processus de création de DLL sera différent.
    Si vous utilisez une version antérieure à la v8, vous pouvez vous reporter à ce lien : Construire une DLL avec LabVIEW 7.0.
    Sinon, vous devez enregistrer votre VI dans un projet, puis définir le connecteur de votre VI avec les paramètres d’entrées/sorties (cette opération est indépendante des différentes « commandes d’onglet » que vous avez pu implémenter).
    Sélectionnez, dans le projet les « spécifications de construction » dans le projet (via un click droit), pour créer une DLL. Dans la boite de dialogue qui s’ouvre alors, à l’onglet « fichiers source », vous pouvez ajouter votre VI parmi les « VIs exportés » et configurer, en fonction des E/S câblées sur le connecteur de votre VI, les fonctions contenues dans la DLL.
    J’espère que ces quelques éléments auront pu vous éclairer.
    Cordialement,
    Guillaume H.
    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;}
    >> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense

  • Comment insérer une balise PA dans la dernière version de DW CC2014 ?

    Bonjour,
    Comment insérer une balise PA dans la dernière version de DW CC2014 ?
    "Traçage d'une seule balise div PA ou de plusieurs balises div PA à la suite
    Dans la catégorie Mise en forme du panneau Insertion, cliquez sur le bouton Tracer un div pour un élément PA ."
    Impossible de trouver la " catégorie Mise en forme du panneau Insertion " ?
    It's DW CC2014 and I don't find how i can insert tag PA. where is the command in "insertion" ?

    Bonjour Philippe,
    vous pouvez utiliser Adobe Dreamweaver * Utilisation des balises div. Contraire a «Choisissez Insertion > Objets mise en forme > Balise Div.» dans mon DW Allemande ce seulement «insérer >>> Div».
    Bonne chance
    Hans-Günter

  • Comment savoir si une fenetre Labview est au premier plan

    Comment savoir si une fenetre est Labview au premier plan ?
    Sans passer par l'API WIN32 (GetWindowInfo et WINDOWINFO)
    Sinon comment on fait pour recuperer la structure WINDOWINFO
    Merci

    Bonjour Lunik,
    Merci d'avoir posté sur le forum National Instruments.
    Il est possible d'utiliser le noeud de propriété VI>>Feneêtre face-avant>>au premier plan afin de savoir si la fenêtre LabVIEW du VI en question se situe au premier plan des fenêtres LabVIEW. Par contre pour savoir si la fenêtre est au premier plan par rapport à toutes les fenêtre Windows tu dois utiliser la fonction GetForegroundWindow (SetForegroundWindow pour la mettre au premier plan) de la DLL User32.dll.
    Voici un VI qui te montre comment utiliser ces différents éléments. Pour faire un test rapide ouvre le VI et click sur exécuter depuis la face-avant puis click sur exécuter depuis le diagramme. Le nom renvoyé change en fonction de la fenêtre qui est au premier plan.
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/
    Pièces jointes :
    GetForeground.vi ‏10 KB

  • Comment déclencher une mesure par bouton poussoir ?

    Bonjour,
    Je souhaiterais faire l'acquisition d'une mesure à chaque appui sur un bouton poussoir, et cela 10-20 ou 30 fois si il le faut. Cependant, je ne sais pas trop comment m'y prendre.
    Ma structure actuelle avec une boucle Condition ne fonctionne pas, je pensais utiliser une Boucle For mais je ne sais pas comment faire.
    Pouvez-vous m'aider svp ?
    Cordialement,
    Attachments:
    MicromètreKEYENCE.vi ‏28 KB

    Bonjour themick89,
    en plaçant votre boucle while autour de la struture condition, votre programme devrait avoir le comportement escompté (voir vi joint).
    Pour utiliser la structure évènement, il faut lié chaque sous diagramme de la structure à un évènement sur un indicateur (exemple : click gauche sur le bouton Démarrage/Arrêt2). Vous trouverez plus d'information sur cette structure aux deux adresses suivantes :
    http://www.ni.com/white-paper/3331/en
    https://decibel.ni.com/content/docs/DOC-5347
    Cordialement,
    Audrey_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;}
    Journées techniques : des fondamentaux aux dernières technologies pour la mesure et le contrôle/comm...
    Attachments:
    MicromètreKEYENCE-2Modify.vi ‏36 KB

  • 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

  • Comment créer une collection dynamique qui filtre les photos sans titre?

    Comment créer une collection dynamique qui filtre les photos sans titre?
    Il faudrait un critère de recherche vide, existe-il ? genre <vide>

    Comment créer une collection dynamique qui filtre les photos sans titre?
    Il faudrait un critère de recherche vide, existe-il ? genre <vide>

  • Comment fermer totalement une application sous ipod touch 4g ?

    Bonjour a tous ^^ voila mon probleme :
    J'ai chercher sur internet comment arreter completement une application sous ipod touch 4g, mais je n'ai trouvé pour seule solution de laisser appuyer sur le bouton home 3 secondes. Mais cette méthodes ne marche pas pour l'ipod touch 4g (appuyer sur ce bouton 3sec ouvre le controle vocale et ne ferme pas l'application). Je voudrais donc savoir si quelqu'un a une méthode pour m'aider.
    Merci d'avance :-)

    Devil1802 wrote:
    Merci beaucoup a toi !! j'ai fais cette manip' que tu ma dit, et j'ai pu voir que j'avais enormement d'application en meme temps en tache de fond appareil photo, appstore... est-ce normal ? puis-je désactiver le fait que les applications se lances d'elles même ? et derniere question, ces applications en taches de fond utilise beaucoup de batteries ? parceque jusque aujourd'hui j'ai trouvé que mon ipod perd vite de sa batterie :s
    Je te remercis d'avance une fois encore .
    « est-ce normal ?» Oui
    « puis-je désactiver le fait que les applications se lances d'elles même ?» Non. Pas par défaut
    «et derniere question, ces applications en taches de fond utilise beaucoup de batteries ?» en générale, non.
    «parceque jusque aujourd'hui j'ai trouvé que mon ipod perd vite de sa batterie :s» Malheureusement, beaucoup de monde a cette problème de batterie, surtout avec iOS 5.0.1.  On espère qu'Apple va l'améliorer par une nouvelle version de iOS, mais c'est seulement un espoir.

  • 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!"

  • Comment changer la tension de mon générateur par une boucle while

    Bonjour,
    Je débute sur Labview et voici mon problème.
    Une tension est rentrée manuellement sur mon générateur. Une intensité est calculée par un multimètre. Tout ceci est envoyé sur Labview qui calcul la résistance expérimentale par la loi d'Ohm. Or si la résistance expérimentale est différente de la résistance théorique (rentrée sur Labview auparavant) je veux que Labview calcul et envoie la bonne tension d'entrée pour obtenir une résistance expérimentale proche de la théorique.
    Je veux donc utiliser une boucle while qui ferait : while Rth différent Rexp faire U=Rth*I
    Sauf que je n'ai pas assez de connaissances sur Labview pour faire ce que j'ai souligné. Je pense que cela n'est pas très compliqué mais je ne trouve pas de tuto qui  explique ceci.
    Merci d'avance pour votre aide

    oups ... pas propre.
    aligner les fils, éviter les "escaliers" (un peu partout)
    les entrées et les sorties sur les "structures" ... sur les bords gauche et droit (si possible, pas au dessus, et ici cela est certainement posible)
    jamais de flux de données droite-gauche ... le flux doit toujours se propager de la gauche vers la droite.
    Je reviens sur votre code dès qu'il ne me fera plus mal aux yeux  

  • Probleme de decalage dans une boucle FOR

    Bonjour j'ai un petit probleme dans ma boucle j'ai un code source et je dois extraire des informations de temperature de vent ... voici les lignes où je dois extraire les infos : 
    <tr class="temp">
    <th scope="row">Temp. (&deg;C)</th>
    <td class="first-col">6&#176;</td>
    <td class="">6&#176;</td>
    <td class="">6&#176;</td>
    <td class="">6&#176;</td>
    <td class="">5&#176;</td>
    <td class="">5&#176;</td>
    <td class="">4&#176;</td>
    <td class="last-col">4&#176;</td>
    </tr>
    <tr class="realfeel">
    <th scope="row">RealFeel&#174;</th>
    <td class="first-col">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">4&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">4&#176;</td>
    <td class="">4&#176;</td>
    <td class="last-col">3&#176;</td>
    </tr>
    <tr class="realfeel">
    <th scope="row">Pr&#233;cipitations</th>
    <td style="border-right:solid 1px #EFECE4;" class="first-col" colspan="3">50%</td>
    <td style="border-right:solid 1px #EFECE4;" class="bggray" colspan="3">50%</td>
    <td class="last-col" colspan="3">40%</td>
    </tr>
    <tr>
    <th scope="row">Vent (km/h)</th>
    <td class="first-col">13 OSO</td>
    <td class="">11 OSO</td>
    <td class="">10 OSO</td>
    <td class="">8 OSO</td>
    <td class="">6 OSO</td>
    <td class="">6 OSO</td>
    <td class="">5 OSO</td>
    <td class="last-col">5 SO</td>
    </tr>
    <tr>
    <th scope="row">Humidit&#233;</th>
    <td class="first-col">80%</td>
    <td class="">81%</td>
    <td class="">82%</td>
    <td class="">85%</td>
    <td class="">87%</td>
    <td class="">90%</td>
    <td class="">92%</td>
    <td class="last-col">93%</td>
    </tr>
    <tr>
    <th scope="row">Indice UV</th>
    <td class="first-col">1</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="last-col">0</td>
    </tr>
    <tr>
    <th scope="row">Couverture nuageuse</th>
    <td class="first-col">83%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="last-col">100%</td>
    </tr>
    <tr class="last-row">
    <th scope="row">Point de ros&#233;e</th>
    <td class="first-col">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">4&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="last-col">3&#176;</td>
    </tr>
     Le probleme que c'est j'ai fais 2 boucle For imbriqué la premiere elle lit les données " les valeurs de la temperature..." et la deuxieme pour quelle passe à la prochaine donnée par exemple:  vent pour que je puisse lire ces valeurs ainsi de suite , mais ca marche pas !!! vu quelle reste toujours dans la premiere donnée "temperature " ensuite elle sort, et  au final j'ai juste les primiere valeurs  AIDER MOI PLZZZZZZ !!! MERCI
    PS : voici mon VI dans les pieces jointes  
    Pièces jointes :
    La total.vi ‏95 KB

    Bonjour,
    Pour ce qui est de récupérer tes valeurs, il suffit de récupérer  et de modifier le Vi que je t'avais envoyé dans le post suivant :
    http://forums.ni.com/t5/Discussions-de-produit-de-NI/remplir-un-tableau/m-p/1870401#M45083
    Il d'y ajouter une boucle For de modifier les fins de lignes et de faire un tableau 1D avec les en-têtes des blocs de mesures que tu veux récupérer, par exemple :
    <th scope="row">Temp. (&deg;C)</th>
    <th scope="row">RealFeel&#174;</th>
    <th scope="row">Vent (km/h)</th>

  • Modif de valeurs pour un sousvi dans une boucle while

    Bonjour, j'ai une question qui a surement l'air un peu idiote mais j'essaie de modifier une frequence de sinusoide en utilisant un sous vi. Ce sous vi est dans une boucle while et helas il ne prend en compte que la premiere valeur au demarrage du vi. Comment je peux modifier les vi de facons a ce que je puisse modifier la valeur de la frequence a mon gre. D'avance merci, je joins un projet exemple de ce que j'aimerais faire, merci de votre aide
    Pièces jointes :
    essai.lvproj ‏8 KB

    Bonjour,
    Vous pouvez utiliser les références pour contrôler votre sous-VI. Voici un exemple : Using Control References to Pass Access of Front Panel Controls to SubVIs
    Cordialement,
    Charlotte F. | CLAD
    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;}
    >> "Du 11 octobre au 17 novembre, 2 sessions en parallèle : bien démarrer - approfondir vos connais...

  • 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

Maybe you are looking for

  • Steps to upgrade HDD

    I'm going to take out my old hard drive tonight, and install a new one...actually it's my bro in laws former one, but it will be new to me. I already understand what needs to physically be done to remove the old one, and put the new one in, but what

  • How do I transfer data from 3S iPhone to new 4S iPhone?

    Have ATT and an iPhone 3s.  Am buying a 4s from Apple.  Want to transfer all data from the 3s to the 4s.  3s is backed up to my iCloud.  How do I do this? Thanks

  • Mass change in Vendor & Customer Master

    Hi All, Is there any Mass change available in Vendor & Customer Master? Thanks Pankaj Garg

  • My G4iphone will not MMS photos and video. Please help.

    My G4 iphone will not send photos or video via MMS. It was ok but has suddenly stopped sending. Please can any help advise on what I should do? Thanks

  • Application Authentication Similar to Web Dynpro JAVA

    Hi, I am developing a Web Dynpro ABAP application on the lines of existing Web Dynpro JAVA application. In WDJ, application is authenticated and user needs to provide his intranet id/password to login to application. (with same user-name and password