Controler une voie embraquée dans une tache

Bonjour,
J'ai créé sous Max une tache statique embarquant 2 voies de sortie analogique d'une carte PCI 6229.
Est-il possible, via la tache, de ne controler qu'une seule de ces 2 voies (pour mettre a jour une tension de sortie par exemple) ?
J'ai mis en piece attachée un exemple de ce que je voudrais faire, mais j'ai toujours l'erreur -200428 à l'écriture des données...
Egalement, une copie d'écran du régalge de la tahce en question sous Max...
Pièces jointes :
Extraire une voie from une tache.jpg ‏16 KB
Tache MAX.jpg ‏172 KB

Bonjour,
En écriture vous ne pouvez pas modifier une seule voie d'une tâche qui contient plusieurs voies.
De mémoire ce noeud de propriété ne peut être utilisé qu'en lecture pour sélectionner les voies que l'on veut lire. A vérifier.
La seule solution serait d'utiliser un registre à décalage qui contiendrait la valeur des différentes voies et ainsi de ne modifier que celle que vous voulez.
Cordialement,
Da Helmut

Similar Messages

  • Mise en oeuvre d'une tache d'acquisition analogique sur plusieurs cartes (6321/6323) et de plusieurs taches de génération analogique sur ces memes cartes (LabWindows CVI10 sous Windows SEVEN)

    Objet : Impossibilité de faire tourner une tache de mesure analogique sur deux cartes 6321, lorsque une ou plusieurs tache(s) de génération analogiques sur ces mêmes cartes existe(nt)…
    Configuration NI :
    Dev1 = Dev2 = carte 6321
    Code de création de la tache de mesure analogique :
                DAQmxCreateTask("",&AIRecordingtaskHandle);
           DAQmxCreateAIVoltageChan(AIRecordingtaskHandle,chan,"",DAQmx_Val_NRSE,min,max,DAQmx_Val_Volts,NULL);
           DAQmxCfgSampClkTiming (AIRecordingtaskHandle, "", rate, DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, sampsPerChan);
           DAQmxGetTaskAttribute(AIRecordingtaskHandle,DAQmx_Task_NumChans,&gNumChannels);
    Chan vaut : "Dev1/ai0, Dev1/ai1, Dev1/ai2, Dev2/ai1"
    Code de création des taches de génération analogique :
           DAQmxErrChk (DAQmxCreateTask("",&AOtaskHandle_C1_DAC0));
           DAQmxErrChk (DAQmxCreateAOVoltageChan (AOtaskHandle_C1_DAC0, chan, "", min, max,DAQmx_Val_Volts, ""));  // chan vaut Dev1/ao0
           DAQmxErrChk (DAQmxCreateTask("",&AOtaskHandle_C1_DAC1));
           DAQmxErrChk (DAQmxCreateAOVoltageChan (AOtaskHandle_C1_DAC1, chan, "", min, max,DAQmx_Val_Volts, "")); // chan vaut Dev1/ao1
           DAQmxErrChk (DAQmxCreateTask("",&AOtaskHandle_C2_DAC0));
           DAQmxErrChk (DAQmxCreateAOVoltageChan (AOtaskHandle_C2_DAC0, chan, "", min, max,DAQmx_Val_Volts, "")); // chan vaut Dev2/ao0
    Au premier ReadBinary, le système sort en erreur avec le message suivant : voir pièce jointe
    Notre compréhension de cette erreur : dans le cas où on met en œuvre une tache de mesure analogique sur plus d'une carte, couplée à une ou plusieurs tache(s) de génération analogique sur ces mêmes cartes, il est impossible d'utiliser l'horloge interne pour le cadencement des CAN/CNA.
    Nous avons effectué plusieurs tests :
    Modifications des horloges interne lors de la configuration des taches : "/Dev1/ai/SampleClock" pour la tache de mesure et "Devk/ao/SampleClock" pour les taches de génération analogique : erreur.
    Abandon d'une des taches de génération analogique : même erreur
    Abandon de l'ensemble des taches de génération analogique (la tache de mesure analogique couvre des voies issues des cartes Dev1 et Dev2): pas d'erreur
    Suppression des voies de la carte Dev2 dans la tache d'acquisition analogique : plus d'erreur
    Merci d'avance
    Pièces jointes :
    MsgErreur NIDAQmx.JPG ‏38 KB

    Bonjour Sisyphe42, 
    Les exemples en PJ montrent comment faire du multi-tâches et du multi-cartes sous CVI.
    Cordialement 
    Sabri JATLAOUI - Certified LabVIEW Developer
    Pièces jointes :
    ContAI-ReadDigChan.c ‏8 KB
    SynchAI-AO.c ‏9 KB
    ContinuousAI.c ‏11 KB

  • Activer désactiver un channel associé à une tache DAQmx

    Bonjour,
    Je débute dans l'utilisation de DAQmx sous Labwindows. Après avoir créer une tache DAQmx, je sais créer des channels spécifiques en utilisant la fonction DAQmxCreateAIVoltageChan. Mais dans mon application, il est possible que l'utilisateur n'ai pas à utiliser toutes les entrées disponibles, il y a donc des slidering on/off sur le panneau d'utilisation.
    Ma question est selon les channels qui seront utilisés ou non, existe-t-il une fonction du genre KillAIVoltageChan ou bien est ce que je dois faire à chaque fois  un DAQmxClearTask pour ensuite recréer entièrement une nouvelle tâche DAQmx avec la nouvelle configuration des channels
    Merci

    Dès que vous allez créer la voie, elle fera forcément partie de la lecture, même si vous n'utiliser pas les valeurs (absence de la fonction Read). Ainsi, c'est lors du démarrage de la tache que des ressources vont être allouées pour cette voir sans que vous puissiez récupérer les valeurs de la voie.
    Je vous conseille donc de mettre votre structure condition avant la fonction DAQmxCreatAIVoltageChan.
    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...

  • Je voudrais savoir comment baissè l intensitè du pinceau retouche qui me fait un cou tout noir l orsque je veut l appliquè pour enlevè une tache de lumière sur le cou je sais pas m en servir

    bonjour j aimerais enlevè une tache de lumière sur le cou de mon fils mais je n arrive pas a me servir de l outil pinceau retouche qui me fait un cou tout noir je sais pas comment faire pour baisser l intensitè est que quelqu un pourrais m aider svp?

    Une question à la fois :
    4 états d'objets qui doivent fonctionner chacun séparément
    Précisez un peu, je ne suis pas sûr de vous suivre.
    à l'intérieur de l'un deux l'utilisateur peut taper un bouton et ça lui ouvre une vidéo qu'il doit pouvoir fermer
    Cette vidéo pourrait être dans un autre état de ce même objet à états multiples, non ?
    (vidéo intégrée dans une mise en page).
    Qu'entendez-vous par "intégrée à une mise en page", si on la place sur un autre état du même OEM, ce souci n'existe plus…
    J'ai cru voir qu'on pouvait insérer un fichier html qui se trouverait dans le dossier final mais je ne sais pas le faire (quel logiciel et données url pour le bouton). Du coup j'ai fait un second fichier avec un navto, problème l'article est visible dans la barre de navigation dans Adobe Viewer. Quelle serait le solution ?
    La partie ressources HTML est expliquée ici et détaillée là, mais vous ne pourrez contourner le paradigme 1 article = 1 entrée dans la navigation, puisqu'on est dans l'équivalence avec le papier (vous ne pouvez pas empêcher le lecteur de feuilleter jusqu'à la page qui l'intéresse)
    D'où l'idée des OEM…

  • Execution d'une tache NIDAQmx issue de Max dans une application c++

    Bonjour,
    Je cherche à exécuter des taches NIDAQmx définies dans l'utilitaire Measurement & Automation Explorer dans une application développée avec VisualStudio 2010, en C++ MFC.
    La tache crée, qui génère un sinus à 50Hz, utilise le port OI1 d'une carte NI6221.
    Quand je l'execute sous MAX, mon signal est bien généré.
    Pour gérer les tache dans mon application, j'utilise les fonctions suivantes :
    DAQmxLoadTask : je récupère bien un handle de la tache MAX
    DAQmxStartTask : la fonction s'execute sans erreur mais en fait n'est pas démarrer car je n'ai aucun signal sur ma sortie
    Est-ce que quelqu'un a déja fait ce genre de chose et peut m'expliquer mon erreur ?
    Merci d'avance pour vos réponse.

    Bonsoir,
    Est-ce que votre programme fait appel à un DAQmxWrite? La tâche peut tout à fait être active sans pour autant que vous ne lui ayez envoyé de données à génerer.
    Par ailleurs, de quel type de génération s'agit-il? Software timed, c'est votre logiciel qui est en charge de fournir "a temps" les échantillons à écrire en sortie. Hardware timed, votre logiciel doit fournir régulièrement de quoi alimenter le driver en échantillons à générer, mais c'est la carte qui cadence le boulot.
    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  

  • Vitesse d'exécution d'une tache sous Windows

    Bonjour,
    Je programme sous LabWindows 7.0, j'utilise un timer assynchrone (NewAsyncTimer) cadencé à 10ms, ce timer appel une fonction qui fait clignoter une sortie digitale.
    J'ai testé 2 hardware differents : 1 PCI 6519, puis 1 Carte PCL724, dans les 2 cas le programme fonctionne, mais le comportement est légèrement diffèrent.
    Explication : je mesure la sortie concernée avec un scope, sur la PLC724, pas de soucis j'ai des créneaux bien régulier de 10ms, et ceux quoi que je fasse avec le PC, accès disque, analyse antivirus ou autre.
    Par contre, avec la PCI6519, j'ai bien des créneaux de 10ms, mais leurs régularités est très vite perturbé dés que je sollicite un peux le PC, en lançant un scan avec l'antivirus, j'obtient des créneaux pouvant aller jusqu'à 150ms !!! puis derrière un tel créneau, j'en ai peu être 10 en 20ms, comme s'ils avaient été stocké par Windows puis tous exécutés d'un coup.
    Voici la ligne utilisé avec la PCL724 : outp( S_B1CN0PB, SortieTest );
    Voici 2 méthode différentes utilisées avec la PCI6519 :
    DAQmxWriteDigitalLines (TaskSortiesPort1, DAQmx_Val_Auto, 1, 10.0, DAQmx_Val_GroupByChannel, TabSorties, &Nb_S, 0);
    DIG_Out_Line (Board1, 3, SortieTest, Etat_S_Test);
    Mon problème est que la carte PLC724 est une carte ISA, et je dois travailler avec des PC qui n'ont pas de port ISA, je suis donc obligé d'utiliser un carte du type PCI6519 mais je ne vois pas comment faire pour ne pas être dérangé par Windows.
    Merci de vos réponses.

    En fait je vais poser le problème autrement, en vous décrivant ce que j'aimerais réaliser.
    Mon but est de pouvoir piloter une sortie numérique dans un programme en C sous LabWindows CVI (Version 7.1).
    J'ai une zone mémoire qui est l'image de mes sorties, avec laquelle je travail dans mon programme, et un timer qui vient, à intervalle de temps régulier, copier l'image de mes sorties sur mes sorties, afin de les actualiser.
    Je n'ai aucune problème avec le timer, les intevalles de temps sont très précis et très réguliers.
    Mais lorsque j'ai une sortie qui change d'état en mémoire, elle devrait etre mise à jour physiquement au coup de timer suivant, hors dans mon cas il y a un délai, qui peut aller jusqu'à plus de 150ms, alors que mon timer tourne à 20ms. Ceci avec une carte digital I/O PCI, lorsque j'utilise le même soft avec une carte digital I/O sur bus ISA, il n'y a pas de problème, les sorties sont mises à jour au coup de timer près.
    J'aimerais donc savoir s'il est possible de réaliser la même chose avec une carte PCI ou si du fait de la conception, c'est impossible.
    Encore merci pour votre réponse.

  • Controler une manette PS2 avec LabView

    Bonjour,
    Je souhaiterai contrôler une manette joystick PS2 via LabView.
    Je travaille sur un ancien programme avec LabView2009 et je souhaiterai utiliser la manette PS2 pour contrôler le déplacement XY de deux platines de translations ( gérer direction et vitesse)
    Sans doute que cela a déjà été fait, mais mes recherches tout azimut!! sur le Web ont aboutie à me "chopper" un virus!! Donc je préfère passer via le forum NI !!
    En vous remerciant,

    Peut-être ces deux liens (ensemble) peuvent-ils t'aider.
    on y parle de " HID Devide " ... perso, j'irais dans cette direction.
    A  et   B

  • Acquisition des paramètres d'une carte d'acquisition

    Bonjour, 
    Après avoir fait des recherche sur internet et recherché par moi même dans les fonctions LabVIEW et n'ayant pas trouvé ce que je cherchais je vient vous demander votre aide.
    Je suis a la recherche d'une fonction qui me permettrai, sur LabVIEW, d'avoir les caractéristiques de ma carte d'acquisition ( nom de la carte, nombres de voies, fréquence d'échantillonnage ).
    Cordialement
    Résolu !
    Accéder à la solution.

    Si vous voulez éviter à votre utilisateur de faire le paramétrage, il faudrait que vous puissiez au moins détecter le type de carte. A partir de là, en fonction de ce type de la carte, de ses performances et de ses voies, vous pouvez appliquer les bons paramètres à votre appli.
    Avez-vous essayé ces fonctions?
    Elles sont accessibles depuis la palette "DAQmx - Acquisition de données" - "DAQmx - Avancé" - "DAQmx - configuration du système". Le premier noeud de propriété permet par exemple d'obtenir le nom des périphériques, les voies, tâches et échelles définies dans max. Le second permet de configurer ou d'obtenir des infos sur un périphérique donné, comme son type, et ses voies physiques. Dans le cas des voies, la fonction renvoie un tableau par type d'E/S. Ce tableau peut être vide, mais sinon vous pouvez lire sa taille et agir en conséquence.
    Francis M | Voir mon profil
    Certified LabVIEW Developer

  • Relancer une boucle while

    Bonjour, 
    est ce que quelqu'un sait comment controler une boucle while a l'aide d'un bouton poussoir : position pour arreter la boucle et l'autre bour la relancer.
    Merci d'avance 
    Résolu !
    Accéder à la solution.

    Salut,
    Je te joins ce que j'aurais fait naturellement. Ce n'est peut-être pas la façon la plus propre de faire mais c'est fonctionnel. A adapter à ton projet évidemment
    Maxime
    Certified LabVIEW Associate Developper
    Pièces jointes :
    PauseWhile.vi ‏14 KB

  • Utilisatio​n de threads dans labview?

    Salut,
    Il est vrai que j'ai tendance a programmer en labview de la même manière que le c/c++, j'ai vu que les sémaphores trainer sur la pallette des fonctions. Alors je crois fort qu'il doit y avoir un équivalent pour les threads que je n'ai pas trouvé . J'ai deux boucles while que je souhaite faire fonctionner en parallèles. Et la donc ma deuxième boucle est appellé par la première mais quand la deuxième s'éxécute la premiere doit toujours fonctionner et ne pas être bloqué.
    Voila en espérant que quelqu'un puisse me dépanner. @+
    EDIT : si le post peut-être déplacé dans le forum français, désolé je me suis planté.
    Message Edité par nfk le 04-12-2006 03:53 AM

    Il est presque toujours plus facile de programmer en LV qu'en C.
    Le multithreading est natif dans LV. Il n'y a rien à faire puisque LabVIEW s'occupe de tout. C'est implicite dans l'idée même de programmation par flux de données : une tache est exécutée dès que les données sont disponibles.
    Un exemple simple consiste à créer un boucle while, temporisée  à l'aide d'une fonction wait (500 ms), et qui affiche le compteur de boucle (index). Ensuite, on la duplique par copier/coller, on change la tempo de la deuxième boucle (1000 ms), et on lance l'exécution. Nice isn't it ?
    Le compilateur est suffisamment évolué pour gérer de façon transparente pour le programmeur l'exécution sur les systèmes multi-processeurs.
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        

  • 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

  • Platform services PCI 6733

    Bonjour,
    Après avoir installé un carte PCI 6733,sous Measurement and Automation, je peux faire l'auto test de la carte (résultat OK), je peux accéder au panneau de test et l'utiliser avec succès, je peux  créer une tache type génération de tension sur l'une des voies disponibles, mais dès que je veux l'utiliser en cliquant sur le bouton exécuter cela me renvoi l'erreur -50400, NI platform services : le transfert n'a pas pu être achevé dans la période de timeout ou le nombre spécifié de tentatives. je précise que je n'ai modifié à ce stade aucun des paramètres fixés par défaut lors de la création de la tache. Le problème reste le même lorsque je cherche à utiliser l'un des exemples fournis avec labview. Je pense à un problème d'installation. Je suis sous seven pro 64 bits, et j'ai testé avec le NIDAQ9.0.2 fournit sur le cd de la carte, avec la version 9.1.7 et 9.2.2.
    Comment trouver l'origine de mon problème qui doit être du à une mauvaise utilisation de ma part (pour info, je n'ai jamais eu de soucis avec XP SP2 et la version 4.4.1f0 de measure and automation).
    Merci pour vos éclairement ou suggestion de test.
    Cordialement,

    Bonjour,
    Il s'agit surement d'un service qui n'a pas du s'installer correctement, je vous invite à réaliser les mêmes opérations que dans ce post:
    http://forums.ni.com/t5/Discussions-de-produit-de-NI/Probl%C3%A8me-de-carte-NI-PXIe-6672-timing-modu...
    Cordialement,
    Da Helmut

  • Daqmx howto stop trigger on timeout

    Hello,
    I've got a problem on a trigger.
    When my signal doesn't arrive, the trigger doesn't occur. My task has also a time-out, so when the timeout arrives, I want to sto the task. But then in the "RemoveHandler" function an exception is raised. In fact I want to stop the trigger when
    a timeout occurs.
    Could you help me ?
    Thanks.

    Bon ne voyant pas de réponse, j'essaie de préciser le pb :
    * je fais une acquisition qui démarre sur triggerde la voie AI1
    * la lecture se fait de manière asynchrone sur la voie AI1
    * j'attends l'arrivée d'un evenement posté sur réception handler
    m_P_O_toolBox->F_acquisitionTrigger
    m_P_O_toolBox->startTension
    * Attente fin de la mesure pedant 10s maxi
    F_waitingForDataReadyTension (m_P_O_toolBox->F_getEventDataReadyTension(), (DWORD) 10000)
    * Arret mesure
           F_stopperTrigger;
    Tout va bien lorsque le signal de trigger arrive.
    En revanche si le signal de trigger n'arrive pas, je sors en time-out dans la fonction "waitingForDataReadyTension"et lorsque je fais un arrêt de la tâche j'ai l'erreur -200284.
    Après quelques recherches je pense que c'est parce que le trigger attends toujours le signal de déclenchement . Et apparemment on ne peut pas arrêter une tache quiest bloquée sur un trigger ...
    Donc ma question est simple :
    Comment faire pour stopper un trigger ?
    j'ai un semblant de réponse avec le code suivant "F_stopperTrigger (true)":
    * stopper la tache  CDaqmxTask
    * stopper le trigger 
    * relancer la tache
    mais cela ne semble pas fonctionner , j'ai parfois toujours l'erreur -200284  ...
    Quelqu'un a-t-il une idée car là je sèche depuis un bon moment.
    Merci.
     je joins le code source des classes pour infos.
    Attachments:
    pb_stop_trigger.txt ‏16 KB

  • Acquerir et générer en meme temps labwindows

    Bonjour
    Je suis sur un projet ou je controle une carte d'acquisition.  Via cette carte d'acquisistion je dois d'une part acquerir des données et d'autre part pendant l'acqusition généré un signal de sortie.
    J'ai utilisé MAX pour créer les taches d'acquisistion et de génération de signal.
    J'ai donc une initialisation de mes taches dans des sous fonctions et dans mon programme principal, je fait ceci:
       Error= DAQmxStartTask(Acquisition);
      //Generation pulse
      Error= DAQmxStartTask(Pulse_pressure);
      //Arret pulse;
      //Error= DAQmxStopTask(Pulse_pressure);
      //Arret aquisition
      Error= DAQmxStopTask(Acquisition);
    J'obtiens alors cette erreur:
    NON-FATAL RUN-TIME ERROR:   "Sous_fonctions.c", line 110, col 16, thread id 0x00001D7C:   Function DAQmxStartTask: (return value == -200479 [0xfffcf0e1]). Specified operation cannot be performed while the task is running. Task Name: Pulse_card  Status Code: -200479  
    Comment puis-je resoudre mon probleme, merci
    Résolu !
    Accéder à la solution.

    Bonjour Julien,
    Je vous conseille de suivre ce tutoriel: http://www.ni.com/white-paper/4650/en
    De plus, voici un exemple, ou les taches sont en plus synchronisées: http://zone.ni.com/devzone/cda/epd/p/id/879
    Cordialement,
    Benoit S. - Field Sales Engineer
    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;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • Probleme de commande Vérin en parrallèle?

    Bonjour à tous,
    je travaille sur la mise en ouvre d'un asservissement de vérins électriques.
    j'utilise une carte PCi 6229 (série M) de National instrument que je programme sous Labview 7.0 et pC embarqué écran tactile.
    Je veux réaliser un programme de commande de vérins électriques ( au total 4 tous indépendants les uns des autres).
    j'ai réalisé le programme pour un vérin et tout fonctionne à merveille.
    en utilisant un autre vérin et mes les 3 autres, mes vérins font  n'importe quoi.
    La structure de mon programme est elle bonne?
    quand je mets des boucles séquences cela fonctionne mais le probleme
    c'est que je ne veux pas commander un vérin aprés l'autre mais tous en
    meme temps.
    Pouvez vous me rensigner?
    ci joint le vi "commande de 2 vérins " qui me génère l'erreur.
    Comment dois je faire ? Est possible de commander les vérins sur des voies différentes en meme temps avec cette carte?
    Pour mon application je veux absolument commander mes vérins en meme temps.
    le principe de l'asservissement est simple.
    j'ai fais un Sous Vi: si CONSIGNE > RETOUR  donc SORTIE DE VERIN
         si CONSIGNE < RETOUR donc ENTREE DE VERIN
         si CONSIGNE = RETOUR systeme STABLE
    Merci d'avance 
    Pièces jointes :
    commande_4vérins_paralleleV2.vi ‏276 KB

    Bonjour,
    NI-DAQmx est basé sur les tâches. Une tâche DAQmx est un composant logiciel qui regroupe des informations sur les voies physiques, des paramètres sur les voies physiques, des paramètres de timing et des paramètres de triggering. Il est courant de regrouper toutes les ressources physiques d'une même famille (AI, DO, AO) au sein d'une même tâche pour limiter le nombre d'appel aux fonctions d'E/S. Au lieu de créer 4 tâches pour écrire sur 4 lignes numériques différentes, il est préférable de créer 1 tâche comprenant les 4 lignes numériques en mode écriture. Ceci permet de réduire la taille du diagramme d'une part et de réduire les temps d'exécution. Un appel "DIO Write" permettra ainsi d'écrire en même temps sur les 4 lignes numériques comprises dans la tâche "Ecrire sur une ligne numérique".
    Le VI Control doit contenir le code permettant d'effectuer la régulation propre à votre système. A partir des acquisitions analogiques, le VI Control détermine quels sont les commandes à envoyer sur les lignes numériques (qui pilotent vos vérins je suppose). Si vous basez votre régulation sur des comparaisons, vous devez intégrer ce code dans le sous VI Control.vi. Le VI Start permet de créer les 3 tâches (AI, DO et AO) et de les configurer avant de rentrer dans la boucle de process. une fois la boucle terminée, le VI Stop permet de libérer les ressources allouées pour chaque tâche. La tâche AI contient 2 voies analogiques, donc dans la boucle, a chaque appel du VI "DAQmx read", un point pour chaque voie est renvoyé (sous forme de tableau de 2 éléments). Idem pour la tâche DO, on envoie à la fonction "DAQmx DIO Write" un tableau booléen de 4 éléments dont chaque élément correspond à l'état d'une ligne numérique de la tâche. La tâche A0 ne contien qu'une seule sortie analogique. Donc pour cette tâche seul un scalaire numérique est câblé sur la fonction "DAQmx Write". Lorsque vous écrivez +5V sur la sortie analogique dans le VI Start, la sortie reste à + 5V tant que vous n'appelez pas de nouveau le fonction "DAQmx Write" avec une valeur différente pour la tension de sortie. A la fin dans le VI Stop, on écrit un 0V pour remettre la sortie à 0 avant l'arrêt définitif du programme.
    Cet exemple n'est certainement pas la réponse exacte à votre application. Vous pouvez vous en servir comme base de développement.
    En espérant que ceci vous aidera dans vos futurs travaux.
    Cordialement.
    Matthieu G.
    National Instruments France

Maybe you are looking for

  • Can I transfer music bought in the Irish itunes store onto my new computer even though my account is now registered to a UK credit card?

    I am from Ireland and bought the majority of my itunes library in the Irish store before I moved to the UK. The account is still the same however the country in which I am using itunes store is now different (e.g. I was using the Irish store with an

  • I am stupid and may not see how to put music on iphone

    To make my question bit mor clear, I have two accounts on my Mac and each has its own iTunes library with bought content from iTunes store. Each bought content was bought with different iTunes store accounts. And here comes the trouble in my case: I

  • Hyperlink to iWeb Page not working

    I have created an iWeb page. I have a hyperlink to the page on a document. The hyperlink takes me to a mobile me error page ie "We can't find the page you requested. Please make sure the URL is spelled and capitalized correctly, and try again." Yet i

  • Problem with swapDepth with press event

    Hi guys, Im getting confused with swapDepth for navigation buttons. I have a button mc's that use this for stacking but something weird happens on just the press event. I have tried to take away the press event but the problem makes it more difficult

  • Looking for Dallas area RoboHelp

    Good afternoon everyone, My name is Tonya Smith and I represent Volt Technical Resources. We are actively recruiting for a Techinical Writer with RoboHelp in Dallas, Tx. If you, or someone you know are interested, please contact me at 972-669-0458 or