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...
Similar Messages
-
Bonjour,
Dans le cadre d'un projet, je dois acquérir plusieurs signaux en utilisant l'assistant DAQ. J'aimerai savoir si c'est possible d'activer/désactiver les voies que je veux acquérir, depuis la face avant. En d'autres termes choisir les signaux à acquérir.
Je vous remercie par avance pour vos réponses.
Configuration LABVEW 2011 ProHello backosty,
Pour les questions orientées LabVIEW, l'autre partie du forum est plus appropriée pour y trouver de meilleures réponses ;-)
En ce qui concerne votre souci, je suppose qu'on a pas 250 choix :
- Soit on ferme/redémarre la tâche en prenant en compte à chaque fois les différentes voies à acquérrir. Problème : la performance !
- Soit on acquiert sur toutes les voies, mais on trace/traite/enregistre uniquement les données voulues.
Pour l'affichage dans un graphe, on peut par exemple activer la case de visibilité des tracés (clic droit sur la légende du graphe -> Eléments visibles -> Case de visibilité du tracé).
Pour le traitement ou l'enregistrement, il faut découper/indexer le tableau contenant toutes les données acquises, ça nécessite de faire un bout de code plus ou moins compliqué selon les tâches voulues !
Enfin, l'assistant DAQ est pratique pour configurer rapidement une tâche, mais relativement statique (voire quasi impossible à reconfigurer dynamiquement!). Mieux vaut s'inspirer des exemples DAQmx de LabVIEW ou sur le site ni.com pour personnaliser un peu son code.
Cdt
Eric
Eric M. - Application Engineering Specialist
Certified LabVIEW Architect
Certified LabWindows™/CVI Developer -
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 KBBonjour 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 -
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 KBBonjour,
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 -
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… -
How to make a virtual channel in MAX using DAQmx ?
I want to measure the CJC temperature on the TBX 1328 ( attached to SCXI 1121). I want to create a virtual channel in MAX using DAQmx. I have right clicked on DAQmx but there is no option for virtual channel. Ther is the option of 'Traditional virtual channel' which i dont want.
I used the VI to make the virtual channel but i want to knowhow to doit inMAX.
thanksHere are 2 ways that you can create a DAQmx channel that appears in MAX.
1) In MAX, right click on "Data Neighborhood" and select "Create New...". Then click "NI-DAQmx Global Channel" (or "NI-DAQmx Task" -- a task contains the channel(s) and triggering/timing information) and click "Next". This launches the DAQ Assistant that will guide you in creating the channel or task.
2) In LV, place a NI-DAQmx Global Channel control on your panel or constant on your diagram. Right click on the control/constant and select "New Channel(DAQ Assistant)..." (Note: You can do the same from the NI-DAQmx Task control/constant to create a NI-DAQmx Task.)
Deborah -
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 -
Activer/désactiver automatiquement différents jeux de calques dans InDesign.
Bonjour,
est-il possible d'activer différents jeux de calques dans un seul et unique document indesign?
(tout ce que j'ai trouvé sur internet c'est: "il est impossible de créer des jeux de calques dans inDesign", mais je n'abandonnerai pas!)
Par exemple mon "Neutre-français": Et mon "Alimentation-français":
J'ai pas fini mon document, j'aurais encore plus de calques d'ici peu..., grâce à eux j'aurai 10 versions minimum de cette liste de prix pour mon client.
Le problème c'est qu'à chaque mise à jour des prix (grâce à une automatisation), je suis bonne pour refaire tous mes exports avec le risque de me planter de calques... J'aimerais donc sécuriser cette opération.
Je me refuse également à faire plusieurs fichiers, car il y a un risque d'oublier de faire des corrections sur l'un d'eux...
Quelqu'un aurait-il une idée?...
Je continue mes recherches de mon côté... Si je trouves une solution "magique" je vous en fait part.
Merci d'avance pour vos réponses.
rHL
PS: je suis sous CS6Pour le texte conditionnel je vais aller étudier ça... je connaissais pas...
Pour le Layer Comp... je viens de le trouver il y a 5 minutes... Il est payant, il faut que je demande l'autorisation... mais c'est exactement ce qu'il me faut.
Ils ont également le Layer Group qui peut être également très utile, surtout dans mon document!
Pour la petite explication ces listes de prix sont pour différents marchés (qui ont différentes conditions de ventes, différents prix), déclinées ou non en plusieurs langues... avec des couvertures différentes pour chaques marchés mais identiques quand il s'agit des langues, etc... on pourrait le faire en programmation... mais c'est un trop "petit" job pour s'embêter à programmer!
Voilà...
Merci de ton aide.
A+ . rHL -
Activation de mon iphone 3GS apres une restauration impossible
apple n'active pas mon iphone 3gs apres que je l'ai restaurer
Bonjour,
Il te faut refaire une restauration en choisissant l'option "Restaurer comme nouveau téléphone" (ou quelque chose du genre), attendre que la restauration soit terminée, puis refaire une restauration à partir de ta sauvegarde. Cela devrait régler ton problème, à condition que tu aies bien coché toutes les cases dans le menu Général de ton iPhone dans iTunes... Sinon, ne seront restaurés que les items que tu avais cochés (bookmarks, photos, applications, etc...). -
Activation/Désactivation Flash MX 2004
Hello,
I can't activate Flash MX 2004 on my pc.
I think it is activated on my hold pc (I have the HD),
thank you to tell me how to de-activate it?Unable to activate | Macromedia products - http://helpx.adobe.com/x-productkb/policy-pricing/macromedia-legacy-activation-error.html
-
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. -
Bonjour,
Je travaille actuellement sur une amélioration qui permet de vérifier l'etat des relais de puissance sur nos bancs de tests. Pour cela j'utilise du multi threads pour eviter de perdre du temps de test. Or dans certain cas le DAQMX ce met en défaut à cause d'un probléme d'utilisation des voies digitales. C'est pour cela que j'aimerai pouvoir insérer une fonction qui permet de vérifier si les voies digitales sont déja utiliser par autre task au lancement de mon thread. Cette fonction existe t'elle ?
Merci de votre soutien.
Cordialement
CHEVALIER KevinHello Kevin@VALEO,
You're in a English section of the forum. Please write in English is you expect an answer. Otherwise, you can post your question in the French section here.
Regarding your question, why don't you use the Create Task function in order to test if a task already is using the digital channels? If the function sends the specific error which indicates your digital channels are already in use, you'll know it.
Please don't hesitate to post a simple example which demonstrates the error you meet, eventually attach a screenshot and give us details if you wish more help.
Regards,
Jérémy C.
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
Travaux Pratiques d'initiation à LabVIEW et à la mesure
Du 2 au 23 octobre, partout en France -
Hi,
I have seen several discussion regarding this topic, however it seems that none of the solutions are working for me. Here is my situation, i am using LabView 7.1 which I use to generate my .EXE, when I generate my .EXE I use the Tab Intaller Settings to generate the Setup.msi. I then take the folder which contains the .EXE and the installer and bring it over to another machine which is running VM Ware with a freshly installed windows XP. (to make sure nothing is on the machine and then i get surprise at the custormer's site)
Once this was done, i would start by lauching the installer and then the .EXE the result was the following, I would get the following message:
Missing subVI DAQmx Create Task.vi in VI instance 1 3tst
.vi.
Missing subvI DAQmx Create channel (TEDS-AI-Voltage-Basic).vi
in VI Instance 1 3tst.vi.
Missing subVI DAQmx Create Channel( AI-Voltage-Basic).vi in VI
instance 1 3tst.vi
Missing subVI DAQmx Timing(Sample Clock).vi in VI instance
1 3 tst.vi
Missing subVI DAQmx Read(Analog 1D Wfm NChan nSamp).vi in
Vi instance 1 3tst
then as suggested in other discussions of this forum I download (537MB) and installed
on the target machine (VM Ware) the nidaq710 which i downloaded from
http://digital.ni.com/softlib.nsf/websearch/C1F802E457EA042586256DD00001B0C9?opendocument&node=132070_US
This did solve some problems BUT I am still getting the following message when I launch the EXE
Missing subVI DAQmx Create AI Channel TEDS(sub).vi in VI DAQmx Create
Channel(TEDS-AI-Voltage-Basic).vi.
Thank you
MaldiniHi Maldini,
Thank you for posting to the NI forums. Is the VM Ware PC using the same operating system as the development PC? Also, are you using DAQmx 7.1 on the development computer, or are you using a more recent version? When distributing applications, the driver version on the deployment PCs must match the driver version of the development PC.
If this is already the case, then you shouldn’t be receiving any of these error messages. There are few things that may fix this problem.
Reinstall the DAQmx driver.
Perform a repair install the DAQmx driver on the deployment computer.
Upgrade the DAQmx driver on both the development and the deployment PCs.
With Windows XP and LabVIEW 7.1, you are able to use the latest version of DAQmx, which is currently DAQmx 8.5.
After going through these steps, please post back if you continue to have problems.
Ed W.
Applications Engineer
National Instruments -
-200428 - Modifying a channel in a predefined DAQmx task
I was pretty sure I had done this before, but maybe not. I have a predefined task setup in MAX spanning 3 different analog input modules on a cDAQ chasssis.
I'm attempting to modify the thermocouple type on one of the TC channels based on configuration setup data. So I have the task selected as a constant and feed it into a DAQmx Task node to get the Channel List. I can see the channel list just fine and all the channels are present there, but when I attempt to break the thermocouple channel out of the array and feed it into a DAQmx Channel node, I get an Error -200428, that the value must refer to a valid task or valid virtual channels.
Any clues?
Solved!
Go to Solution.Hey Mike,
Can you please try it like illustrated in the attached jpg.
Christian
Attachments:
hint.jpg 36 KB -
Selecting physical channel from list with DAQmx
I'm trying to write a simple VI for reading and writing digital data. However, when I have a DAQmx physical channel control, the only options it presents to me are the various analog inputs (and doesn't allow me to type in the port I actually want to use). In other examples, e.g., "Write Dig Port.vi", the apparently identical control instead shows me digital port options rather than the analog in channels. As far as I can tell, there is no real difference between the controls as there is nothing in properties that I can really modify.
How can I get this control to let me choose the channels I want? Or is there some difference in these controls that I am not aware of?The channel lists adapts to the type of DAQmx Create Channel that you use. Do you see the text below the DAQmx Create Channel? If your channel is displaying only analog input channels, then the DAQmx Create Channel type is AI Voltage. If you want to use digital input channels, change the type to Digital Input. Click on the little arrow on the right side. This is called a polymorphic VI selector. You can do the same thing by right clicking on the VI and do a Select Type.
Mark has a good point. If you change the type of DAQmx Create Channel and you already have a physical channel wired, you will have to go to I/O Name Filtering to change the channel types displayed. If you change the DAQmx Create Channel and then create a channel control by selecting Create Control, you'll get the correct type automatically.
Message Edited by Dennis Knutson on 03-11-2008 12:12 PM
Maybe you are looking for
-
How to schedule a job to run after completion of each run using DBMS_JOB ?
Hi Gurus, Please let me know if the subject requirement can be fulfilled. I want to schedule a job using DBMS_JOB to run a script sequentially after completion of each run. Thanks in advance. Santosh
-
Runtime error while executing infoset query
Dear Experts, When we execute infoset query we get following dump :" " An SQL error occurred when accessing a table." Database error text........: "ORA-25153: Temporary Tablespace is Empty" Internal call code.........: "[RSQL/FTCH/EBAN ]" Please chec
-
Data from Front end to Back end of ALV Grid
Hi Experts, I developed interactive ALV for maintaining master data for some BW Objects. I also included custom F4 for all fields. Problem: When entered new record or modified a record by using F4 help of fields, it doesn't work properly. For collect
-
Playlist just scrolls through tunes at top of screen but won't allow me to play them
my playist just scrolls through each title in the list but won't allow me to stop it nor will it play anything from playlists. installed iOS6 and it worked fine until today (about a week). Also turned on iTunes match and it continued to work for ab
-
Hello, while running "ANALYZE TABLE" we got the following error stack: Errors in file c:\oracle\admin\saprod\udump\saprod_ora_4228.trc: ORA-01114: IO error writing block to file 201 (block # 524048) ORA-27069: skgfdisp: attempt to do I/O beyond the r