Boucle cadencée sur horloge AO

Bonjour,
Je génére sur une voie analogique un signal Finit sans régénaration à une fréquence compris entre 10 et 200 Hz
En parallèle de la génération je voudrais pouvoir démarrer ("Trigger") une boucle cadencée ayant la même frequence que celle de ma génération (10 à 200 Hz).
En effet je cherche à synchroniser des taches en fonction de ma position dans le buffer AO.
J'ai bien tenté de cablé sur ma boucle cadencée le VI "Daqmx creat timming source" en mode 'boucle de controle à partir d'une tache" seulement une erreur apparait indiquant  que ce n'était pas supporté pour ce type de materiel PXI 6251. 
Est il possible de cadencé une boucle en fonction de l'horloge AO ?
D'avance merci pour votre aide.

Bonjour,
J'ai essayé en partant d'un exemple simple.
J'ai toujour l'erreur -200452.
J'ai en fait une chaine de caractère vide en sortie du VI "boucle de controle à partir d'une tache".
Quelqu'un a une idée pou y remedier ?
Merci.
Slts.
Pièces jointes :
Face_Avant.png ‏46 KB
Diagramme.png ‏67 KB

Similar Messages

  • 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

  • DAQ USB 6341 et boucle cadencée plante après un temps d'éxécution

    Bonjour,
    J'ai un souci avec un code (voir fichier joint Labview 8.6)
    Je réalise sur un DAQ 6341 une sortie horloge laquelle est reliée sur une entrée numérique qui me sert d'horloge à une boucle cadencée (cadencement à 250ms). Dans cette boucle je ne fais qu'afficher le temps écoulé en comptant le nombre de top qui sert au cadencement de ma boucle. 
    Lorsque j'exécute tous ce passe bien jusqu'à environ 247 seconde ou tout s'arrète:
    Je n'ai plus mon signal d'horloge que j'ai créé sur le DAQ, et le code Labview semble planté.
    Lorsque j'effectue plusieurs foi l'exécution du code le plantage intervient toujours aux alentours de de 247 secondes!!
    Je ne comprend pas ce qu'il se passe, voyez vous quelque chose dans mon code qui ne colle pas????
    Merci
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Test_sequence-cadence.vi ‏29 KB

    J'ai trouvé d'ou vient le problème!
    Pour ceux que cela intéresse il faut pour le VI DAQmx Cadencement câbler l'entrée "mode d'échantillonnage" avec "Echantillons continus".
    Dans la doc de Labview il est indiqué nul par la valeur par défaut de cette entrée si on ne la câble pas!! Par contre je ne comprend pas pourquoi c'est seulement au bout de 247 secondes que la tache s'arrète???????
    Ci joint le VI fonctionnant (Labview 8.6).
    Pièces jointes :
    Test_sequence-cadence.vi ‏39 KB

  • Boucle cadencé myrio, le temps ne respecte pas

    Bonjour,
    J'utilise la carte myrio pour faire une acquisition de données.
    Je voudrais faire une acquisition toutes les 1 ms.Pour savoir le temps exact pour chaque boucle, j'ai utilisé 2 méthodes.
    1ère méthode: utiliser count(ms) et shift register pour chaque boucle
    2ème méthode: utiliser node output(period)
    Les 2 méthodes ne donnent pas le même résultat. J'aimerais bien savoir laquelle est correcte?
    Les résultats de 1ère méthode ne donne pas 1ms par boucle, la plupart est de 1ms, mais il y a aussi 2ms, 3ms,4ms etc.
    Pourriez-vous éclaire un peu sur ce sujet?
    Merci d'avance.
    Lily
    Pièces jointes :
    RT D4WIND.vi ‏237 KB

    Bonjour,
    Votre deuxième méthode accède à un nœud de la boucle cadencée pour récupérer la valeur désirée pour la période.
    En d'autre mot, ce n'est qu'un point d'accès pour récupérer la période théorique. Il se peut très bien que votre boucle soit en retard et c'est ce qui semble se passer.
    C'est la première méthode qui renvoie la période effective. Vous pouvez aussi monitorer si la boucle s'exécute avec du retard grâce au nœud "Finished late?"
    Cordialement
    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

  • Boucle cadencé, normale et utilisation des cores.

    Bonjour,
    J'ai plusieurs questions sur l'utilisation de boucles cadencées et notament sur le partage de core :
    J'ai réalisé un VI type producteur/consommateur. Dans ce VI j'ai 4 boucles consommatrices (4 files d'attentes) qui gèrent un appareil chacune. J'ai un Ordinateur 4 cores. Je souhaite donc attribuer un core pour chacune des boucles.
    1) Ce que je veux savoir est par quel core sera gérée la boucle productrice qui elle, n'est pas cadencée ?
    2) Est-il recommandé de cadencer la boucle productrice pour justement contrôler le problème et cibler un coeur ?
    Dans le modèle producteur/consommateur proposé par labview, la destruction de pile intervient lorsque l'on sort de la boucle évènement dite productrice. Malheureusement il arrive que cette destruction intervienne avant l'éxécution du dernier évènement des boucles consomatrices (exemple : la déconnection des appareils), surtout si les boucles consomatrices sont cadensées.
    3) Dans ce cas, avez vous une solution optimale pour gérer ce problème ? (ou l'utilisation de séquence est la seule solution ?)
    En vous remerciant d'avance.
    Cordialement, Harti.
    Résolu !
    Accéder à la solution.

    Bonjour,
    1) si tu laisse l'option de gestion du coeur par défaut à ta boucle cadencée productrice, ou que tu utilises une simple boucle While, tu laisses l'OS gérer le coeur sur lequel cette boucle va s'exécuter, tu ne peux pas prédire à l'avance.
    2) tout dépend ce qui est produit ds ta boucle productrice, mais personnellement j'aurais plus tendance à cadencr la boucle productrice et pas les consommatrices! Tes consommatrices doivent être cadencées par tes files d'attente (soit par l'arrivée d'un nouvel élément, soit par un timeout)
    3) Ce que tu peux faire, c'est utiliser la fonction "obtenir l'état d'une file d'attente", et attendre que toutes tes files soient vides avant d'appeler la fonction de destruction.
    Ai-je répondu à toutes tes interrogations?
    Cordialement,
    Olivier L. | Certified LabVIEW Developer

  • Boucle cadencé

    Bonjour à tous,
    J'ai un soucis avec une boucle cadensé sur sytème rt.
    En effet, celle-ci ne s'incrèmente que sur un message... Et je ne vois pas du tout ce qui dysfonctionne...  Je mets la capture d'écran en lv 2014 et en 2013 en pièce jointe.
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    soucis version précédente.zip ‏240 KB

    Hello noir_desir, 
    Tu peux toujours mettre un timeout à zéro
    Soit il y a quelque chose dans la pile à dépiler et tu récupères l'élément, soit tu as une erreur en sortie de la fonction (et connaissant le code d'erreur) tu l'as gère convenablement.
    A+
    Flo
    Open Diagram First

  • Démarrer acquisition données sur horloge

    Bonjour,
    Je désire effectuer des tests sur un capteur angulaire ayant une sortie série simple, 14bits de données exclusivement (aucun bit de parité ou autre...). Le capteur est conçu de manière à envoyer les données selon une horloge externe qui a à un moment un état haut 2fois plus long, ce qui donne le top.
    Je n'arrive pas à faire l'acquisition de mes données ainsi.
    J'ai essayé d'utiliser le DAQmx horloge d'échantillonnage mais ca ne fonctionne pas, un message d'erreur m'indique que les lignes utilisées ne supportent pas les actions bufferisé.
    Je travail sous LabView 8.2 et je fait l'acquisition grâce à une PCI 6250.
    Merci d'avance pour votre aide.

    Bonjour.
    Il vous sera impossible dans votre cas de vous servir de ce signal externe comme de l'horloge de la carte puisque l'échantillonnage se fera à chaque front et ne tiendra pas compte du fait que l'état haut a duré 2 fois plus longtemps.
    Je vous conseillerais peut être de faire l'acquisition simultanément avec la 6250 de votre signal externe ainsi que du signal issu du capteur, puis logiciellement ou en post-traitement, d'éliminer les points qui ne vous intéressent pas.
    Cordialement.

  • 6143 trig sur horloge externe sur des front montant et descendant ?

    bonjour,
    je me pose la question s'il est possible de sychroniser l'aquisition d'une PCI-6143(carte d'aquisition simultanée) sur des front montant et descendant
    je suis en possession de de carte PCI-6143 et d'une carte PCI-6602(4 timer) relier via le bus RTSI
    merci
    Pièces jointes :
    Sans titre.JPG ‏50 KB

    Bonjour,
    Pouvez-vous donner plus de détails sur la synchronisation que vous voulez réaliser?
    L'exemple "E/S matérielles/DAQmx/Entrée analogique / Tension entrée continue" (dans Aide/Recherche d'exemples) montre comment fonctionne une acquisition avec déclanchement numérique. Je vous invite à jouer avec pour tester votre matériel.
    Cordialement,
    Jovan N. - Application Engineering

  • Comment faire pour synchroniser une sortie numérique sur une horloge?(pci6602)

    Bonjour,
    je voudrais faire des sorties numériques sur une ligne donnée (carte PCI 6602), ces sorties étant réalisées pour chaque front descendant d'une horloge. En clair, je voudrais synchroniser la sortie d'une valeur numérique sur le front descendant d'une horloge : comment faire ?

    Bonjour,
    Générer des mots numériques ou une valeur binaire (sur une ligne ou un port) avec un cadencement matériel (horloge compteur sur front montant ou descendant) n'est pas possible avec une carte 6602 seule car elle n'a pas été conçue dans ce but. La carte possède 8 compteurs mais n'a pas de ligne ou port programmable en acquisition ou génération (cadencement logiciel ou matériel). Pour ce type d'opération d'E/S numériques, les cartes PCI-DIO-32-HS, PCI-6533 et PCI-6534 ont été spécialement conçues. Elle permettent de faire de la génération sur 8, 16 ou 32 bits (1,2, ou 4 ports) jusqu'à 20 Mo/S (pour la 6534) et avec un cadencement matériel (horloge interne ou externe avec choix du type de front déclenchant le transfert). L'horloge peut provenir par exemple de votre carte compteur PCI-6602.
    Enfin, une bonne solution serait d'utiliser une carte Serie M qui intègre à la fois des compteurs (génération d'horloge) et un port 8 bits (génération numérique sur une ligne ou le port entier). Le cadencement numérique matériel est possible avec les cartes Série M. Ce type de carte serait donc un bon compromis pour ce que vous souhaitez faire.
    Cf "Correlated I/O" dans le tutorial ci-dessous:
    * M Series – The New Data Acquisition Standard – Frequently Asked Questions
    http://zone.ni.com/devzone/conceptd.nsf/webmain/9c71859eb70d6e2586256ed7007ccf7f?OpenDocument
    Bonne continuation
    Matthieu Gourssies
    National Instruments France

  • Déclenchement mesure sur entrée de comptage

    Bonjour,
    j'ai besoin de faire l'acquisition de deux valeurs analogiques cadencées sur une entrée de comptage avec une carte 6220 sous .net (VB ou c#)
    Un codeur incrémental me donne des impulsions et toutes les x impulsions je veux acquérir les deux valeurs. Le système est lent (fréquence d'acquisition 8hz, mais je voudrais pouvoir monter à 80Hz).
    J'ai bien vu un exemple permettant de trigger l'acquisition d'une valeur analogique à partir d'un top sur une entrée digitale, mais là je voudrais pouvoir synchroniser sur une entrée de comptage.
    Merci d'avance

    Bonjour,
    Vous pouvez synchroniser votre acquisition analogique sur la sortie de votre compteur, en l'utilisant comme horloge de cadencement externe. Ainsi, votre compteur va compter vos x impulsions et vous allez générer un front toutes les x impulsions DAQmxCreateCOPulseChanTicks. Cette fonction vous renverra un tick dès que vous souhaitez faire votre acquisition analogique.
    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...

  • BOUCLE CADENCEE

    Bonjour,
    J'utilise une boucle cadencée à 20ms sous Labview 7.1 pour envoyer une trame CAN.
    Par un dispositif à compteur d'impulsions d'horloge je mesure le temps d'excecution de la boucle cadencée.
    En règle générale le temps de cadencement et bien respecté, par contre si j'utilise la sourie ou/et iconise des fenêtres
    (en fait utilise des resources du PC) le temps de cadencement est multiplié par 5 à 6 et passe entre 100ms et 120ms.
    Comment faire pour respecter ce cadencement quelque soit la charge du PC ?
    Merci d'avance pour vos sugestions.
    Fabrice MAUROUX
    Conception et Développement MICHELIN SA
    Suisse

    Je crains que ce comportement soit inévitable avec un OS non temps réel !
    J'ignore si vous avez connaissance de cette fonctionnalité, mais l'interface CAN est à même d'envoyer un message périodiquement. En procédant ainsi, la période d'envoi dépend non plus du système d'exploitation mais de l'interface CAN. CAN Transmit - periodic.vi qui se trouve dans les exemples LabVIEW pourra vous servir de base pour réaliser cette tâche, du moins si vous utilisez le Frame API. Je joins un VI que j'avais réalisé qui est une adaptation de cet exemple.
    Marche à suivre :
    Exécuter une fois en mode Démarrer et en spécifiant la période. L'interface envoie alors périodiquement le message. 00 par défaut dans mon cas.
    Exécuter en mode Actualiser chaque fois que le message envoyé périodiquement doit être modifié. Dans ce cas le contenu du message est défini par Position.
    A la fin, exécuter en mode Arrêter pour stopper l'envoi.
    Ceci vous permettra d'obtenir une période beaucoup plus régulière.
    Attachments:
    Envoyer périodiquement consigne position.vi ‏39 KB
    Nom bus CAN.ctl ‏8 KB

  • Problème file d'attente FIFO RT

    Bonjour j'ai une boucle for ( attribuésur 4 processeur ) qui récupère une horloge (généré par un FPGA ) incrémenté toutes les 10ms,l'insere dans une fifo RT et cette boucle génère une notification toutes les 10 ms quand elle reçoit la nouvelle valeur d'horloge.
    Ma deuxième boucle (boucle cadencé à 100us) attend une notification avec un time out de 10ms et des qu'elle reçoit la notification elle récupère la valeur de l'horloge. (récupération horloge Cadencé sur 1 processeur periode 100us )
    Sauf que des fois la deuxième boucle ne récupère pas la bonne valeur elle saute des incrémentations d'horloge:-(
    La FIFO RT dans la lecture ne tombe pas en time out.
    C'est comme si de temps en temps les valeurs ne sont pas insérés dans la FIFO
    D'ou mon problème
    Une idée pour résoudre ce problème ?
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Generation horloge.JPG ‏930 KB
    Récuperation horloge.JPG ‏431 KB

    Bonjour Lunik,
    Merci d'avoir posté sur le forum National Instruments.
    Il est difficile de répondre sans avoir le code de votre application. Je vous invite à contacter directement le support technique afin qu'un ingénieur d'application puisse vous aider.
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/

  • Ne pas remplir un tableau avec les valeur par default

    Bonjour
    Voila mon problème.
    L'utilisateur doit selectionner une zone sur une image et l'ajouter à une liste.
    Il peut aller jusqu'à 3 zones. Il peut également choisir le mode de traitement de l'ensemble des zones.
    Lorsqu'il démare l'acquisition, on entre dans une boucle cadencé while, puis on regarde le boléan correspondant au mode, ensuite on entre dans un boucle for dont n est lié à la taille de la liste des zones.
    Le tableau est un tableau de cluster de 2 éléments.
    Dans certaines conditions, je ne veux pas remplir le tableau.
    le seul moyen que j'ai trouvé pour remplir le tableau selon ces conditions est grace au variables locales.
    Problème, cela prend trop de RAM et je suis limité ensuite.
    je joins un VI tres simplifié de mon probleme
    Merci
    Attachments:
    exemple.vi ‏85 KB

    Voila le VI.
    J'ai oublié de préciser que j'ai simulé un signal dent de scie avec un bruit blanc pour effectuer les essais et que les thermocouples seront cablées par la suite et reliées à un DAQ.
    Pièces jointes :
    exemple filtre 2.1.vi ‏74 KB

  • Lire waveform

    Bonjour,
    J'aurais aimé savoir comment convertir un fichier waveform (issu du vi "écrire des waveforms dans un fichier") en simple texte afin de pouvoir le lire sous matlab par exemple. Il y a bien le vi "exporter des waveform dans un fichier tableur", mais ce n'est pas ce que je veux.
    J'en profite pour poser une seconde question : est-il possible de faire une boucle cadencée à moins d'une milliseconde sous Labview ?
    Merci d'avance.

    Bonjour Cyco,
    Pour ton premier point, je te propose de t'inspirer du snippet suivant qui expose 2 méthodes : soit le texte émanant de la waveform est mis dans un tableau, soit dans une chaine de caractères simple avec tabulations.
    Pour la seconde question, la réponse est non. 1ms correspond à la période de l'horloge logicielle de Windows et est donc la plus petite unité de temps pour une boucle cadencée, sauf si on utilise une horloge matérielle (voir les exemples dans LabVIEW). Néanmoins, il faut savoir que Windows ne réagit pas précisément dès lors qu'on descend sous les 10ms. On a alors de variations importantes du temps d'exécution, dépendantes notamment de l'utilisation processeur, des interruptions dues au clavier, à l'écran, etc... En gros on a beau mettre 1ms en temps de boucle, il se peut que Windows rame et mettre 4ms (par exemple) à exécuter le code.
    Cdt,
    Eric
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • Demande aide pour LabVIEW

    Bonjour tout les monde !
    Je suis actuellement en BTS électrotechnique et j'ai besoin de votre aide pour LabVIEW.
    C'est la première fois que je l'utilise.
    Le matériel :
    Un automate cRIO-9073.
    Des modules NI 9217,9203,9403,9476.
    Un PC avec LabVIEW
    But de mon projet:
    Élaborer avec LabVIEW un programme test pour chaque module.
    (Je dois faire des programmes qui testent chaque entrées,sorties ou voies de ces modules pour voir si ils fonctionnent bien)
    Problèmes rencontrés:
    Je ne comprend pas à quoi sert la fonction "TIME LOOP" et je ne sais pas comment la configurer (en effet je l'ai insérer mais le prof m'a dit que je devais la configurer)
    Aussi je ne sais pas comment configurer mes modules dans "l'exploreur de projet" (je pensais que le module se configurais automatiquement) 
    Par exemple ma carte NI 9217 collecte les informations de 4 sondes PT100, donc j'ai fait le programme mais mon prof m'a dit que je devais configurer le module dans l'explorateur de projet et que je devais configurer le TIME LOOP.
    Merci d'avance pour vos réponses.
    Cordialement,
    L'ETUDIANT

    Bonjour L'ETUDIANT,
    Pour donner quelques pistes :
    - J'imagine que tu parles des boucles cadencées (Timed Loop). Ces boucles se configurent en double-cliquant sur l'entête de la boucle en haut à gauche. Tu pourras ainsi fixer le cadencement de ta boucle, mais aussi sa priorité entre autres. Ces boucles sont largement utilisés dans les VIs Temps Réel car elles permettent de mieux maitriser l'exécution.
    - Les module se configurent effectivement dans ta fenêtre de projet. Une fois ton cRIO ajouté au projet, tu as la possibilité de "découvrir" tes modules. Une fois ceci effectué, tu auras accès à tous les modules connectés sur ton cRIO, et leurs propriétés pourront être modifiées.
    Un petit tour sur ce tuto pourra probablement t'aider.
    Cordialement,
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

Maybe you are looking for