9401 sur cDAQ9178 acquisition de 2 codeurs

Bonjour,
J'ai un problème pour faire deux acquisitions bufferisées sur une carte NI9401 montée dans un cDAQ9178.
Si j'essaye de faire une tache (dans MAX) avec ctr0 et ctr1 de la 9401, j'ai un message qui me dit que je ne peux avoir seulement un compteur par tache.
Si je fais deux taches, à l'exécution de LabVIEW j'ai le message:
L'erreur -201133 s'est produite à : DAQmx Start Task.vi:10
Raisons possibles :
Le périphérique ne peut pas être configuré en entrée ou en sortie car des lignes ou des terminaux qui lui sont connectés sont utilisés par une autre tâche ou une autre connexion. Cette opération nécessite que toutes les lignes et tous les terminaux soient temporairement réservés à la communication, ce qui interfère avec l'autre tâche ou connexion.
Si possible, utilisez DAQmx - Contrôler une tâche pour réserver toutes les tâches qui utilisent ce périphérique avant de programmer ces tâches. Sinon, libérez ou déprogrammez l'autre tâche ou débranchez l'autre connexion avant d'essayer de configurer le périphérique en entrée ou sortie.
Périphérique: E_COMPTAGE
Port numérique: 0
Lignes: 4, 6
Nom de tâche : _unnamedTask<2C> 
En conclusion: Peut-on faire une acquisition continue et simultanée de deux codeurs sur la même 9401.
Merci pour votre aide. 
Solved!
Go to Solution.

Translation from french 
I have a problem to make two acquisitions buffered on a card mounted in a cDAQ9178 NI9401.
If I try to do a task (in MAX) with ctr0 and ctr1 of 9401, I have a message that says I can have only one meter per spot.
If I do two tasks, implementation of LabVIEW I have the message:
Error -201133 occurred at: DAQmx Start Task.vi: 10
Possible reasons:
The
device can be configured as input or output lines or terminals
connected to it are used by another task or another connection. This
requires that all lines and all terminals are temporarily reserved for
communication, which interferes with the other task or login.
If possible, use DAQmx - Securing a job to book all tasks that use this device before programming these tasks. Otherwise,
release or deprogram the other task or disconnect the other connection
before you try to configure the device input or output.
Device: E_COMPTAGE
Digital Port: 0
Lines: 4, 6
Task Name: _unnamedTask <2C>
In conclusion: Can we make a continuous and simultaneous acquisition of two coders on the same 9401.
Thank you for your help

Similar Messages

  • Perturbation of counter value with NI 9401

    Hello,
    I send this message because I have a problem with a counter on an NI 9401on cDAQ-9178.
    I measure an angular position with two pulse signals (increment on channel A and decrement  on channel B). There is one signal and it is a relay that directs the signal to channel A or B.
    You can see details on the attached file.
    I purchased a sample of the counter every 10ms.
    Everything works fine except when an AC motor of the machine starts or stops.
    When the AC motor starts or stops the counter value change by an offset (see attached file). If the counter is counting, I observe a negative offset. If the counter is counting down, I see a positive offset.
    If they are electrical noises, why will not offset in the direction of signal?
    How to fix the problem?
    Thank you for your help.
    Bonjour,
    J'envoi ce message car j'ai un problème sur un compteur avec une carte NI 9401 sur un cDAQ 9178.
    Je mesure une position angulaire avec deux signaux impulsionnels (Incrémentation sur la voie A et décrémentation sur la voie B). Il y a un seul signal et c'est un relai qui oriente le signal vers la voie A ou B.
    Vous pouvez voir les détails sur la photo jointe.
    Je fais une l'acquisition d'un échantillon du compteur toutes les 10ms.
    Tout fonctionne très bien sauf quand un moteur asynchrone de la machine démarre ou s'arrête.
    Au démarrage ou à l'arrêt du moteur assynchrone le compteur prend un offset (voir fichier joint). Si compteur est en comptage, j'observe un offset négatif. Si le compteur est en décomptage, j'observe un offset positif.
    Si ce sont des parasites, pourquoi l'offset ne va pas dans le sens du signal?
    Comment corriger le problème?
    Merci pour votre aide.

    Bonjour,
    le sujet est en cours de résolution à l'adresse suivante :
    http://forums.ni.com/t5/Discussions-de-produit-de-NI/Perturbation-de-la-valeur-du-compteur-avec-NI-9...
    Bonne programmation à tous !
    MathieuT
    NIF AE
    Mathieu_T
    Certified LabVIEW Developer
    Certified TestStand 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;}
    LabVIEW Tour
    Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014

  • Disturbance of counter value with NI 9401

    Hello,
    I send this message because I have a problem with a counter on an NI 9401on cDAQ-9178.
    I measure an angular position with two pulse signals (increment on channel A and decrement  on channel B). There is one signal and it is a relay that directs the signal to channel A or B.
    You can see details on the attached file.
    I purchased a sample of the counter every 10ms.
    Everything works fine except when an AC motor of the machine starts or stops.
    When the AC motor starts or stops the counter value change by an offset (see attached file). If the counter is counting, I observe a negative offset. If the counter is counting down, I see a positive offset.
    If they are electrical noises, why will not offset in the direction of signal?
    How to fix the problem?
    Thank you for your help.
    Bonjour,
    J'envoi ce message car j'ai un problème sur un compteur avec une carte NI 9401 sur un cDAQ 9178.
    Je mesure une position angulaire avec deux signaux impulsionnels (Incrémentation sur la voie A et décrémentation sur la voie B). Il y a un seul signal et c'est un relai qui oriente le signal vers la voie A ou B.
    Vous pouvez voir les détails sur la photo jointe.
    Je fais une l'acquisition d'un échantillon du compteur toutes les 10ms.
    Tout fonctionne très bien sauf quand un moteur asynchrone de la machine démarre ou s'arrête.
    Au démarrage ou à l'arrêt du moteur assynchrone le compteur prend un offset (voir fichier joint). Si compteur est en comptage, j'observe un offset négatif. Si le compteur est en décomptage, j'observe un offset positif.
    Si ce sont des parasites, pourquoi l'offset ne va pas dans le sens du signal?
    Comment corriger le problème?

    Think you John,
    After some modifications, the problem has evolved. Now the offset signal (noise) is only on the signal connected.
    I'm downloading the NI-DAQmx version 9.40 to apply digital filtering on counting.
    The filter should be set in MAX or in LabVIEW? (my program uses Labview tasks set in Max).
    Could you give me more details on the configuration of the filter on the counter. (on image, the configuration of my task with DAQmx 9.2.3
    Best Regards
    Après quelques modifications, le problème a évolué. Maintenant l'offset de signal (le bruit) est seulement sur le signal connecté.
    Je télécharge la version Ni-DAQmx 9.40 pour pouvoir appliquer un filtrage numérique sur le comptage.
    Le filtrage doit-il être paramétré dans MAX ou dans Labview ? (mon programme Labview utilise des taches configurées dans Max).
    Pouvez-vous me donner plus de détails sur la configuration du filtrage sur le comptage. (en image, la configuration de ma tache avec DAQmx 9.2.3

  • Acquisition / VI

    bonjour
    Je travaille sur l'acquisition des signaux à travers le cRIO. J'ai réalisé un VI pour chaque signal et un VI principal dans le quel j'ai mis un bouton pour Chaque VI mon problème est que je veux que le Vi s'exécute méme s'il n'est pas ouvert , j'ai essayé avec ce programme mais le VI s'initialise a chaque fois que j l'apelle .
    voila ce que j'ai essayé de faire mais ça ne marche pas 
    Pièces jointes :
    Capture.PNG ‏6 KB

    Bonjour,
    Je pense que tu pourrais lancer dynamiquement ton sous vi, il pourra alors s executer en parallele je t'invite a regarder ce lien qui t explique :
    http://digital.ni.com/public.nsf/allkb/CB109EC8325252A18625735B0049830B
    Libre a toi d afficher la face avant ou pas avec une propriete, si tu fais cela pense a trouver un moyen pour quitter tes sous VIs.
    Nacer
    Nacer M. | Certified LabVIEW Architecte

  • Problème carte 34901A sur Agilent 34970A

    Bonjour,
    J'ai un problème sur l'acquisition en impédance de mes cartes 34901A des centrales d'acquisition Agilent 34970A. Lorsque j'utilise mon programme labview, la centrale me retourne une valeur d'impédance fausse. (pour une résistance connue 351Ohm, la centrale me renvoie 351 +/- 40Ohm).
    Ce problème est récurrent et cela arrive sur plusieurs de mes systèmes utilisant les cartes 34901A.
    Quelqu'un a t'il déjà recontré ce problème la?
    Merci,

    Bonjour Tomaks,
    Il semble en effet d'après votre retour que le problème soit matériel et non pas logiciel si celui-ci n'apparaît qu'avec certains systèmes.
    Peut-être serait-il plus bénéfique de vous tourner Agilent pour vérifier ces points et vous assurer qu'il n'y aurait pas de problèmes au niveau de vos systèmes.
    Par ailleurs, si en effet un autre utilisateur venait à avoir rencontré ce problème, son expérience pourrait être qu'appréciable.
    De mon côté, je ne peux malheureusement apporter plus d'aide car il ne s'agit pas de nos systèmes.
    Cordialement,
    Antonin G. Associated LabVIEW Developper
    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;}
    Communauté francophone des développeurs LabVIEW et des enseignants en STI2D
    Si vous souhaitez partage...

  • Problem triggering NI-9234 from 9401

    I am trying to trigger a 9234 from a 9401 connected to a PLC. There are 4 input triggers connected to the first 4 channels of the 9401, corresponding to 4 phases of a test. For each phase of the test, I am looking for a trigger on a different channel. The problem is that the acquisition is triggered from any of the 4 input channels, i.e. when I specify a trigger on the first channel, PFI0, a trigger from PFI1, PFI2 or PFI3 also causes the acquisition to launch.
    In using the NI example, “Acq&Graph Voltage-Int Clk-Dig Start.vi”, I am able to reproduce this behavior. I configure the trigger source to be PFI0, Rising Edge, on the 9401. The acquisition is triggered even if the rising edge is passed on channel 1, 2 or 3. Trigger signal level is 0-5V.
    LV2011, DaqMX V9.4, Windows XP
    Attachments:
    Acq&Graph Voltage-Int Clk-Dig Start.vi ‏28 KB

    I have figured out the problem and the solution. To simulate the triggers sent by the PLC, a box was made containing 4 switches supplied by a common 5V source. Apparently, electronic noise is generated when a switch is activated and fed back though the other switches. This was causing erroneous triggers to be detected. So, I added a trigger property node, enabled the digital filter on the trigger signal with a minimum pulse width of 0.1 milliseconds (0.0001 sec). This cured the problem of triggering from any channel.
    The filtering will also be useful to help eliminate false triggers caused by electronic noise in the production environment, which has also been a problem.
    Thanks for all those who viewed and I hope this can be helpful to someone in the future.
    Joe
    Attachments:
    Acq&Graph Voltage-Int Clk-Dig Start Dig Filter.vi ‏30 KB

  • Reset compteur 9401

    Bonjour, merci de prendre le temps de me lire et de me répondre..
    1) Comment effectuer le reset du compteur internet d' un module 9401 sur un cRIO ?
    2) Comment exporter son VI sur lle cRIO pour pouvoir effectuer des mesures embaquées, les enregistrées puis les lire.
    Merci beaucoup

    Bonjour Falkinou,
    Pour la première question, la réponse se trouve ici : http://forums.ni.com/t5/Discussions-au-sujet-de-NI/RAZ-compteur-9401/td-p/2177722
    Pour la seconde, je vous propose d'aller à l'adresse suivante : <link no longer exists>
    N'hésitez pas à poser des questions si jamais quelquechose semble obscure.
    Romain 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;}
    >> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense

  • Problème de ralentisse​ment sous LabVIEW 7.0

    Bonjour,
    nous rencontrons actuellement un phénomène de ralentissement sur une application développée sous LabVIEW 7.0.
    Description des ressources et de la configuration utilisée (pour info) :
    LabVIEW 7.0
    NI-DAQ 8.0.1
    2 cartes PCI-6229 avec :
    une acquisition analogique à 10 kHz - échantillons prélevés par bloc de 1000
    une acquisition de type codeur
    des entrées/sorties TOR
    2 cartes PCI-6528 (entrées/sorties TOR)
    1 carte MOXA C168H (carte ISA 8 ports série)
    2 cartes Exotest PCI pour dialogue LIN et Ligne K
    L'application tourne en mode debug (= il ne s'agit pas d'un exécutable)
    Application d'environ 350 VIs
    Utilisation (a priori à bon escient) de la réentrance, du parallélisme, de sémaphores, ... (en bref, il s'agit d'une application multi-tâches classique)
    Description des symptômes :
    Le ralentissment constaté n'est pas systématique. L'application tourne en général parfaitement, mais parfois, dès le lancement de celle-ci, parfois après 10 minutes, parfois après une heure, et parfois plus, nous constatons un fort ralentissement de l'application. Cela se traduit par le ralentissement du déroulement de notre séquenceur (il s'agit d'une application pour un banc de test).
    Nous ne constatons aucune augmentation du taux d'occupation du CPU, et aucune augmentation de mémoire.
    La difficulté principale de notre problème est que nous ne savons absolument ce qui peut provoquer un ralentissement si soudain, si imprévisible et qui ne se traduit pas par un taux d'occupation du CPU élevé.
    Actions déjà faites :
    Nous avons utilisé l'outil d'observation de profil des VIs (Outils > Avancé > Optimisation de VIs...) mais n'avons rien constaté d'aberrant.
    Nous avons lu (et appliqué) les principes de la documentation suivante : http://forums.ni.com/attachments/ni/250/7849/1/prf​rmnc.pdf
    La (les) question(s) :
    Un tel phénomène a-t-il déjà été rencontré ?
    Avez-vous des conseils particuliers (autres que ceux contenus dans le document ci-dessus) ?
    Pensez-vous à une action particulière à réaliser ?
    Merci par avance !

    Bonjour,
    Obtenez vous un code d'erreur? A quelle étape s'arrête la création de votre executable ?
    je vous envoie un lien qui traite de probleme d'executable avec les boitiers USB
    http://digital.ni.com/public.nsf/websearch/129BE1A90E522E3886256F24007606F4?OpenDocument
    Cordialement
    Alexandre D
    NIF

  • Boitier USB6211 et longue distance

    Bonjour,
    J'ai intégré un boitier USB6211 dans un châssis expérimental, mais les utilisateurs de ce châssis veulent pouvoir déporter l'équipement à plus de 35m du PC de pilotage!! (on me l'avait pas dit au début)
    Ils sont bien sur confrontés à l'affaiblissement des signaux USB. Je me suis tourné vers des répéteurs-amplificateurs de bus USB mais pour 35m cela devient compliquer.
    J'utilise le boitier USB6211 pour gérer l'acquisition de deux codeurs incrementaux et quelques lignes digitales pour des signaux de synchronisation.
    Auriez vous des pistes? des convertisseurs USB-série mais là on retourne à l'age des cavernes!! , convertisseur USB-Ethernet? mais est-ce compatible avec les produits DAQMx?
    En vous remerciant,
    Cordialement,

    Bonjour,
    sur lien lien suivant, il y a une méthode pour allonger jusqu'à 50m: http://www.wikihow.com/Extend-USB-Cable. méthode 2/4 est un USB extensible (cable RJ45 qui relie 2 boitier adaptant le type de connecteur  USB/RJ45). 
    Cordialement
    L.MICOU

  • Labview - paramétrage Assistant DAQ

    Bonjour,
    Je possède une carte 9401 montée sur un châssis 9172 et je souhaite brancher 2 codeurs en quadratures.
    Problème : L'assistant DAQ (dans labview), qui gère les deux codeurs en entrées, paramètre automatiquement le port A et B sur PFI0 et PFI2.
    Question 1 : Comment modifier ceci afin de pouvoir exploiter les deux codeurs sur des connexions différentes ?
    Question 2 : Quels ports utiliser ? ex : codeur 1 => PFI0 et PFI2 / codeur 2 => PFI? et PFI?
    Question 3 : Comment peut-on savoir sur quels pins brancher les codeurs ? Où peut-on trouver une doc technique qui montre sur quels pins de la carte on retrouve PFI0, PFI2, ... provenant du chassis ?
    Merci par avance,
    Cordialement,
    Eric
    Pièces jointes :
    labview.JPG ‏112 KB

    Bonjour,
    Voici deux exemples pour synchroniser vos compteurs:
    https://decibel.ni.com/content/docs/DOC-5706
    Malheureusement, vous ne pouvez pas faire de synchronisation avec du DAQ assistant. La synchronisation de voies entrée analogique/sortie analogique/Digital IO/compteur nécessite une programmation
    plus évoluée que l'assistant DAQ.
    De plus, la manière de programmer de la synchro diffère si vous voulez synchroniser des entrées analogiques ou des entrées numériques ou des compteurs.
    J'espère que les 2 exemples que je vous envoie aujourd'hui vous parleront. Il s’agit de la synchro de 2 compteurs.
    Dans le cas contraire, vous pouvez peut être demandé une formation (vu que vous êtes dans l'enseignement, vous avez des prix réduits)
    Cordialement,
    MatthieuR
    Matthieu RICORD
    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;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • How to add Basler acA2040-180km/kc as a target in VBAI?

    I am a newbie to Labview and VBAI, having a basler ACE model acA2040-180km/kc, how could I add it as a target in VBAI?
    I'm also having a IEEE1394 interface(AVT Guppy F-033B) camera, how could I add it as a target too?
    I'm using my own PC system, connecting both IEEE1394 and camera link camera to my PC's grabber.
    Does it work?
    I couldn't see any device detected in MAX.... Or do I need any extra configuration?
    Solved!
    Go to Solution.

    It doesn't look like the cameras are detected in MAX. They shouldn't be under the Serial and Parallel ports, but under the NI-IMAQ Devices and NI-IMAQdx Devices section. Here's a screenshot of what that looks like and you will see a Snap and Grab button in MAX to make sure your acquisition works well. Once you can acquire here, then VBAI will have no problems either.
    Here'ws a general link on installation/configuration troubleshooting.
    http://digital.ni.com/public.nsf/allkb/1452D2B3B565F62A862576F2005668B2
    Hope that helps,
    Brad
    Attachments:
    MAX View with Cameras.jpg ‏74 KB

  • Need advise for processing DAQmx waveform array

    Hello All,
    I am using following code to continuously acquire data from 2 channels, then export to a text file for analysis with Execel or Origin. The data file should contain four columns:
    t1   Y1    t2   Y2
    I know it is convenient to use Write Measurement File express VI, but since this express VI open and close file in each loop execution, I prefer to use low-level File I/O functions to save computer resources (I need to reserve resources for image acquisition and analyses).
    The following attached VI just show the overall frame of the code, but is not executable now. I hope to get some suggestions from this forum to finish it.
    Here, I have two main questions, thank you in advance if you can provide hints to any of them.
    (1) How to get correct t0 and dt values for the waveform data
     I am using 25Hz pulse signal to externally trigger DAQmx  through PFI0.  I set 100Hz for the rate input of the DAQmx timing VI  since  LabVIEW help  says "If you use an external source for the Sample Clock, set this input to the
    maximum expected rate of that clock. " .
     When I use Write Measurement File express VI,  I found in the resulting text file, the dt is 0.01 instead of 0.04, i.e., the value of dt in the waveform data is not determined by external PFI0 signal, but by the rate input for the DAQmx timing VI.  Also, I found t0 does not always start from  zero.  However, from the display of data plot, I am sure the acquisition is at 25Hz.
    Some people in this forum ever told me to use Get Waveform Component and Build waveform functions to manually rebuild the waveform data in order to get correct t0 and dt. I tried and no luck to succeed.  Anyone can give me more detailed hints?
    (2) How to write data of 'NChan NSample' at one time in a loop
    I have two channel DAQmx, and for each channel there are several data points.  I plan to use following method to export data:
    Suppose in one loop DAQmx Read VI read 10 samples from each channel, so I assume I will get four arrays of 10 elements:
    t_channel_1, Y_channel_1, t_channel_2, Y_channel_2.
    Then I use a loop structure of N=10 to concatenate t1, tab,Y1,tab, t2,tab, Y2,return in 'element by element' mode, i.e., do 10 times of string concatenate and write to text file.
    I don't know whether above method is effective. Anyone can advise a better one?
    (3) Convert from timestamp to elapsed time in milisecond
    In the final text file, the time column should be the values of elapsed time in milisecond since the start of acquisition. So, I think I need to get the timestamp of the first data point so that for later data points I can use Elapsed Time express VI  to extract elapsed time in milisecond. However, I don't know how to get the timestamp at the starting of acquisition. Please advise if you know it.
    Sincerely,
    Dejun
    Message Edited by Dejun on 08-30-2007 10:34 AM
    Attachments:
    code.jpg ‏86 KB
    code.vi ‏49 KB

    tbob wrote:
    Ravens Fan:
    Read his post again:
    "I am using 25Hz pulse signal to externally trigger DAQmx  through PFI0.  I set 100Hz for the rate input of the DAQmx timing VI  since  LabVIEW help  says "If you use an external source for the Sample Clock, set this input to the maximum expected rate of that clock. " .
     When I use Write Measurement File express VI,  I found in the resulting text file, the dt is 0.01 instead of 0.04, i.e., the value of dt in the waveform data is not determined by external PFI0 signal, but by the rate input for the DAQmx timing VI.  Also, I found t0 does not always start from  zero.  However, from the display of data plot, I am sure the acquisition is at 25Hz."
    He says in the 1st paragraph that he sets theDAQmx timing to 100Hz because that is his maximum expected clock rate.  In the 2nd paragraph he says that in his measurement file dt is 0.01 instead of 0.04.  This indicates that the dt value is determined by the DAQmx timing rate, not the PFI0 clock rate.  I am thinking that he should set the DAQmx timing to match the PFI0 timing, 25Hz.
    Maybe this would work.
    You're right, I did misread what he said. But, I still have questions about what he said.  " I set 100Hz for the rate input of the DAQmx timing VI  ".  The code shows a rate input of 25 to the timing VI.  And nowhere else do I see a setting of 100Hz.  I ran his code (used a simulated device) and put an indicator on the to dt's in the clusters.  The came up as .04 which is what i would expect.  It is hard to comment what is going on in the file since there is nothing being send to the write text file VI.
    Message Edited by Ravens Fan on 08-31-2007 12:18 PM

  • Timers Multithread sous CVI

    Bonjour,
    J'ai plusieurs questions concernant mon programme avec LabWindows CVI 9.0 et 4 cartes NI PCI 6229, sous Windows XP et dual core Intel 3GHz.
    Je souhaite réaliser un programme qui réalise une boucle d’asservissement et également un contrôle et affichage sur des acquisitions. Je n’ai malheureusement pas le choix sur l’OS et je ne peux pas m’orienter sur une solution temps réel.
    Pour cela, je souhaite réaliser
    -          une boucle qui gère l’asservissement (acquisition sur 20 entrées, calcul sur ces acquisitions, et génération sur 10 sorties, tout ceci en 10ms, c’est la BOUCLE CRITIQUE)
    -          une boucle pour le contrôle (simple contrôle sur ces acquisitions: comparaison à une valeur seuil, 10ms)
    -          une boucle pour l’affichage (affichage des résultats sur la face avant des contrôles OK ou non OK, toutes les 200ms)
    Je souhaitais à la base utiliser 3 timers asynchrones de CVI, mais je me suis aperçu qu’on ne pouvait utiliser qu’un seul Timer asynchrone à la fois.
    J’ai donc vu qu’il y avait une autre solution, le multithread en utilisant les thread pool. Cette solution m’intéresse, car je souhaiterai mettre la boucle critique dans 1 thread sur le 1er coeur, la boucle de contrôle dans un 2ème thread sur le 2ème coeur, et la boucle d’affichage dans un 3ème thread sur le 2ème coeur.
    La boucle d’asservissement est la boucle critique et doit être de 10ms à +/- 2ms.
    Les autres bouclent ne sont pas critiques et peuvent avoir un décalage de +/- 10ms, le but est de ne pas perdre de données et de contrôler toutes les acquisitions. Un affichage toute les 200ms suffit.
    Voilà j’ai alors 2 questions :
    -          est-ce que mon approche (timers en multithread et diviser sur les 2 cœurs) convient pour mon application ?
    -          et comment mettre un timer classique dans un thread spécifique ? J’ai vu qu’il fallait utiliser «CmtScheduleThreadPoolFunction (int Pool_Handle, ThreadFunctionPtr Thread_Function, void *Thread_Function_Data, int *Thread_Function_ID)” Mais cette fonction appelle une fonction de type “CVICALLBACK FonctionThread(void *functionData)” et mon timer classique est de type “CVICALLBACK Timer_Classique (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)” Comment donc appeler un timer classique avec une fonction CmtScheduleThreadPoolFunction ? Faut-il procéder d’une autre manière ?
    Je vous remercie de votre aide.
    Cordialement,
    Hédi.

    Bonjour,
    L'approche multi-thread est en effet la bonne, dès qu'il faut séparer plusieurs tâches. Je vous invite à consulter cet article du Rebel Site, qui traite du multithread et constitue une référence en la matière. Attention, le multithread n'implique pas obligatoirement une gestion multicoeur. Il faut pour le mettre en oeuvre passer par l'API de Windows.
    Est-il bien nécessaire de faire de du contrôle 10ms? (deuxième boucle) Au quel cas, je ne suis pas absolument sûr qu'il faille créer un thread séparé. Si cette tâche peut supporter un cadencement plus lent, il serait plus malin de venir la traiter dans le troisième thread.
    Il serait intéressant d'utiliser une Thread Safe Queue pour faire circuler les données d'un thread à l'autre. Ce mécanisme permettra de ne pas perdre de données. D'autre part, vous pouvez alors installer une callback sur un nombre d'éléments dans la TSQ (Thread Safe Queue) et venir déclencher la callback associée à cette TSQ dès que 20 éléments sont présents pour piloter le troisième thread depuis le premier.
    Dans cette configuration, il n'y a plus besoin que d'un timer, pour la partie temps critique - bien que sous Windows, on ne puisse pas garantir le déterminisme d'une boucle à 10ms - les autres thread étant 'esclave' du premier.
    Cordialement,
    .mrLeft{float:left} .mrInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898}
    Mathieu R.  
      CTD - Certified TestStand Developer / Développeur TestStand Certifié  
      CLAD - Certified LabVIEW Associate Developer  

  • Erreur dans ma boucle continue

    J'ai un programme qui fait deux type d'acquisition continue et fine, sur une interface à evenement.
    La struture fonctionne plutot bien sur l'acquisition fnie, même si une erreur survient, après correction (genre oublie de donnée la voie, ou parametre hors limite), la structure continue.
    Par contre en fonctionnement continue, celle ci ne fonctionne absolument pas correctement, des qu'une erreur est détecté celle ci, le programme ne répond plus du tout correctement le bouton d'arret de programme ne réagit plus, alors que j'ai décoché pourtant l'option qui fige mon interface pour cette condition, de plus une erreur récurrante intervient dans cette acquisition comme quoi j'utiliserai un caractère non toleré (erreur 1), hors je transmet aucun nom, juste un tableau avec le nom de mes voies (donc créer par le logiciel lui même).
    Je joins en fichier zip "mon projet"
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    version test 3.zip ‏537 KB

    En jetant un coup d'œil rapide à ton code, je dirais que le plus gros problème qu'il faut que tu règles c'est la structure monoboucle de ton application. Tu ne peux pas mettre le code de l'acquisition continue dans la boucle qui gère les événements utilisateurs.
    Il faut mettre en place une boucle en parallèle qui sera en charge de l'acquisition.
    Ta boucle de gestion des événements donnera l'ordre de démarrage et d'arrêt de l'acquisition.
    L'acquisition se faisant en parallèle, tu pourras gérer tous les événements utilisateurs que tu veux en parallèle.
    Dernier petit conseil, penses à faire des sous-vis, cela rendra ton code plus lisible et plus maintenable.
    Cordialement.
    Olivier JOURDAN
    SAPHIR | Certified LabVIEW Architect | Topaze on NI Community | LabVIEW add-ons on NI Community | Follow me on Twitter

  • Mesurer le bruit de fond, l'écart type et la stabilité d'un courant en fonction du temps

    Bonjour  
    Je travaille sur un petit projet sur l'acquisition d'un signal à l'aide de keithley 2700. J'ai besoin de mesurer le bruit de fond, l'écart type et la stabilité du signal en utilisant LabVIEW.
    J'ai trouvé un exemple pour mesurer la valeur du signal mais je n’ai pas pu trouver comment intégrer dans le programme les fonctions de l'écart type et la stabilité du bruit de fond du signal.
    Bonne soirée.
    Attachments:
    Keithley 2700 Single Measurement.vi ‏25 KB

    Bonjour,
    Tu as posté sur le forum international, donc si tu psoes ta question en francais, tu as peu de chance d'avoir un réponse.
    Le forum francophone ce trouve ici : http://forums.ni.com/t5/Discussions-au-sujet-de-NI​/bd-p/4171
    Tu peux t'aider des exemples LabVIEW Aide>>Recherche d'exemples.
    La fonction Variance et écart-type (VI) pourrait répondre à tes attentes.
    Bonne journée
    Valentin
    Certified TestStand Architect
    Certified LabVIEW 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;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

Maybe you are looking for

  • Clear query when i enter on the request page

    I have a page with some query field and a button ('execute query'). When i return on the page the was dispaly the old query, it is possibile to enter in the page and finf it clear ?? Thank's'.

  • Shut down (panic) during sleep?!

    This is very unusual for me and I wondered if anyone can make sense of the report below. The only thing that has changed recently is the addition of an airport extreme card. Thanks in advance. Jim panic(cpu 0 caller 0x000E7FF4): vnode_put(924a5ac): i

  • I have a Macbook Air.  What is the advantage of getting an Ipad?

    I would like to know if there is any advantage to getting an Ipad.  I have the Macbook Air....does this do everything that the Ipad would do?

  • Acknoledgement PI to PI not working

    Hello, an external partner sends a message to our PI 7.0 system. He sends via XI-Adapter (and Internet), and requests an acknoledgement. The normal message is routed via plain HTTP from our PI to another target system (I dont know if this is importan

  • Transferring mail boxes

    Just bought my wife a 2008 Macbook Pro. We have an Imac desktop and both are running the latest version of Snow Leopard. In Mac Mail my wife has several mail boxes under on my mac. How do I transfer the mail boxes from the desktop to the Macbook?