C++ PCI-6703 Générer une tension analogique
Bonjour,
Je suis nouveau sur Measurement Studio for VC++ et j'ai besoin de votre aide.
J'ai une carte PCI-6703 avec un boitier SCB-68.
J'ai installé les drivers nécessaires NI-DAQmx avec le Measurement & Automotion Explorer.
J'ai installé le logiciel Measurement Studio 2009 (version d'évaluation en attendant la validation pour que mon chef de projet achète la version complète).
Je travaille sous Visual Studio 2008 et sous VC++ (je ne peux pas utiliser LabView (sinon c'était plus facile) pour pouvoir synchroniser les codes de tout le projet).
Je souhaite générer des tensions analogiques (10V) à la sortie de la carte PCI-6703 pour le boitier SCB-68. Ce dernier va envoyer les signaux à une carte électronique pour allumer/éteindre des leds.
Je me suis bloqué au niveau de mon programme. J'ai essayé ces lignes de codes mais ça ne marche pas (je me suis inspiré des codes que j'ai trouvé sur le forum mais je pense qu'il a des lib qui ne collent pas) :
#include <cvirte.h>
#include "windows.h"
#include <NIDAQmx.h>
int main (int argc, char *argv[])
TaskHandle daqmxhandle;
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
DAQmxCreateTask ("", &daqmxhandle);
DAQmxCreateAOVoltageChan (daqmxhandle, "Dev1/ao0", "", -10.0, 10.0,
DAQmx_Val_Volts, "");
for(int i=0; i<10;i++)
DAQmxWriteAnalogScalarF64 (daqmxhandle, 1, 10.0, 10, 0);
Sleep(3000);
DAQmxWriteAnalogScalarF64 (daqmxhandle, 1, 10.0, 0, 0);
Sleep(3000);
DAQmxClearTask (daqmxhandle);
return 0;
-----------------------------------------------Erreur----------------------------------------------------------
1>------ Rebuild All started: Project: test1, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'test1', configuration 'Debug|Win32'
1>Compiling...
1>test1.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7256) : warning C4005: 'THREAD_BASE_PRIORITY_MIN' : macro redefinition
1> c:\program files\national instruments\measurementstudiovs2008\vcnet\include\cvidef.h(140) : see previous definition of 'THREAD_BASE_PRIORITY_MIN'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7257) : warning C4005: 'THREAD_BASE_PRIORITY_IDLE' : macro redefinition
1> c:\program files\national instruments\measurementstudiovs2008\vcnet\include\cvidef.h(143) : see previous definition of 'THREAD_BASE_PRIORITY_IDLE'
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>Linking...
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxClearTask@4 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxWriteAnalogScalarF64@28 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxCreateAOVoltageChan@36 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxCreateTask@8 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _InitCVIRTEEx@12 referenced in function _main
1>C:\Documents and Settings\Default\Mes documents\Visual Studio 2008\Projects\test1\Debug\test1.exe : fatal error LNK1120: 5 unresolved externals
1>Build log was saved at "file://c:\Documents and Settings\Default\Mes documents\Visual Studio 2008\Projects\test1\test1\Debug\BuildLog.htm"
1>test1 - 6 error(s), 2 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
Bonjour,
Votre problème vient du mode d'acquisition : votre tache fait l'acquisition d'une seule valeur (échantillon) à la fois.
Ce qui vous limite alors, c'est la vitesse de votre cpu : la boucle while (d'ailleurs le wait 0ms est inutile) tourne a vitesse maximale, mais non cadencée ! Votre calcul est donc complètement faux.
Pour résoudre ceci, il faut acquérir N échantillons, et faire un traitement sur le tableau de valeurs pour en déduire la fréquence directement (il y a des vi's déjà créés pour cela)
En espérant que cela vous aide,
P.S. vous avez posté sur le forum anglais, la prochaine fois, faites le dans la communauté française, vous aurez une réponse plus rapidement.
Bonjour,
Votre problème vient du mode d'acquisition : votre tache fait l'acquisition d'une seule valeur (échantillon) à la fois.
Ce qui vous limite alors, c'est la vitesse de votre cpu : la boucle while (d'ailleurs le wait 0ms est inutile) tourne a vitesse maximale, mais non cadencée ! Votre calcul est donc complètement faux.
Pour résoudre ceci, il faut acquérir N échantillons, et faire un traitement pour en déduire la fréquence directement.
En espérant que cela vous aide,
V-F
Similar Messages
-
Générer une tension puis la mettre en DLL.
Bonjour,
J'aimerais réaliser un programme permettant de faire varier une tension1 en fonction d'un temps1, puis une tension2 en fonction d'un temps2. Ces 2 tensions doivent etre généré sur la même voie de sortie chacune leur tour. Après avoir créé se programme sous CVI 7.1.1, j'aimerais le passer en DLL pour le faire fonctionner avec TestStand.
Je vous joint mon petit bout de programme.
Merci par avance.
Miguel
Pièces jointes :
Tension_alim_prog.c 3 KB
Tension_alim_prog.h 2 KBBonjour Manu23,
Afin de pouvoir déclencher et stopper ta mesure sur 2 seuils différents tu dois utiliser le noeud propriété suivant:
La fênetre de déclenchement prend comme paramètre le seuil haut et le seuil bas.
Cordialment
Jean-Baptiste 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;}
>> Téléchargez dès maintenant toutes les présentations techniques ! -
Labwindows/CVI générer 2 tensions différentes en meme temps
Bonjour,
Voici mon probleme, je souahiterais générer deux tensions analogique diférentes en meme temps.
Pour cela je posséde deux cartes d'acquisitions NI 9263 qui sont dans un Ni cDAQ-9172.
J'ai essayé de faire la generation de ces deux signaux dans une meme tache, mais je ne sais pas comment envoyer un signal different sur chaque voie.
La seconde solution a été de générer deux taches, synchronisées sur un trigger pour les démarrer en meme temps, la encore j'ai un probleme, CVI me renvoie une erreur disant que la resource spécifiée est réservée.
voici l'organisation de mon code:
DAQmxCreateTask (Master task)
DAQmxCreateAOVoltageChan(Master task)
DAXmxCfgSampClkTiming(Master task)
DAQmxCreateTask (slave task)
DAQmxCreateAOVoltageChan(slave task)
DAXmxCfgSampClkTiming(slave task)
GetTerminalNameWithDevPrefix(Trigger)
DAQmxWriteAnalogF64 (Master task)
DAQmxWriteAnalogF64 (Slave task)
Avez vous une solution pour resoudre ce probleme?
Je vous remercie,
cordialement
Résolu !
Accéder à la solution.Bonjour,
Je vous remercie de votre réponse. Je viens d'essayer ce que vous me dite. Mais cela ne change rien, je me retrouve avec les deux signaux identiques. En divisant le nombre d'echantillons par rapport a mon tableau, je n'envoie alors que la premiere partie de mon tableau, mais toujours sur les deux sorties. et non premeir partie de mon tableau sur une voie et deuxieme partie sur la deuxieme
voici mon code:
double Fe=100000;
double Vmin=-10, Vmax=10;
int N_samples= 80000;
TaskHandle AOtaskHandle=0;
Generation(tableau_pulse, pressure); // creer un signal en marche d'escalier
DAQmxCreateTask("",&AOtaskHandle);
DAQmxCreateAOVoltageChan (AOtaskHandle, "Dev1/ao1", "", Vmin, Vmax, DAQmx_Val_Volts, NULL);
DAQmxCreateAOVoltageChan (AOtaskHandle, "Dev1/ao0", "", Vmin, Vmax, DAQmx_Val_Volts, NULL);
DAQmxCfgSampClkTiming (AOtaskHandle, "", Fe, DAQmx_Val_Rising,DAQmx_Val_ContSamps, N_samples);
DAQmxSetWriteAttribute (AOtaskHandle, DAQmx_Write_RegenMode, DAQmx_Val_DoNotAllowRegen);
DAQmxWriteAnalogF64 (AOtaskHandle, N_samples/2, FALSE, 5, DAQmx_Val_GroupByScanNumber, tableau_pulse , NULL, NULL); tableau_pulse
// DAQmx Start Code
DAQmxStartTask(AOtaskHandle);
Delay (0.8);
Error:
if( AOtaskHandle )
// DAQmx Stop Code
DAQmxStopTask(AOtaskHandle);
DAQmxClearTask(AOtaskHandle);
AOtaskHandle = 0;
free(tableau_pulse);
cordialement -
Peut-on générer une clé KDM avec le format DCP
Bonjour,
Je dois faire un fichier DCP pour un cinéma avec une clé KDM. Media encoder me propose un export DCP. J'ai essayé, mais le fichier ne pèse que 3go pour 8 minutes alors que j'ai lu qu'on doit avoir 20go par minute.
De plus je ne vois pas comment générer cette clé.
Merci de tous vos conseils avisés!Bonjour,
Je vous remercie pour l'attention que vous avez apporté à ma solution.
J'ai "écrété" le signal carré car le signal généré par le VI "Waveform carré" est compris entre +2.5 V et -2.5 V (voir graphe "signal de la waveform" du VI en pièce jointe).
Votre module USB 6009 peut générer un tension comprise entre 0 et 5 V : si je ne l'écrète pas, il va indiquer une erreur.
J'ai juste extrait de la Waveform les valeurs de tensions (qui ***** présente sous forme d'un tableau), j'ai utilisé le VI "écrété" pour retirer la composante négative du signal.
Puis, j 'ai regénéré la Waveform en reprenant les mêmes caractéristiques temporels (même écart de temps entre chanque échantillon et même fréquence de génération) avec les valeurs de tensions issues du VI "écrété".
Cordialement
Guillaume D
Pièces jointes :
test1.vi 17 KB -
Bonjour,
J'ai un petit soucis sur
une voie d'une carte PCI-6703. Un étage de sortie est défectueux et
j'aimerais avoir un schema d'un etage de sortie. J'ai repéré une
résistance défectueuse mais ce schema m'aiderais.
En ce qui
concerne l'envoi en réparation, les délais sont incompatibles avec mon
planning et le montage à l'air facilement réparable.
Merci
Mathieu
Résolu !
Accéder à la solution.Bonjour,
Malheureusement nous ne pouvons fournir de schéma électronique de nos cartes.
Cependant, s'il s'agit d'une opération vitale, ou de questions précises, je vous invite à contacter le commercial de terrain responsable de votre région qui pourra peut être vous fournir certaines informations.
Cordialement, -
Insérer une variable dans une boite de dialogue
Bonjour,
Je souhaite insérer une variable (valeur extraite d'un tableau Excel) dans une boite de dialogue. J'ai vu qu'on pouvait modifier le VI Express de la boite de dialogue mais je ne vois pas comment insérer cette variable dans le message d'entrée.
D'avance merciHello,
First, I think that you can get more help if you write in english. Because i didn't understand completly your question.
What you're trying to do it's simply what's in the attached picture? it's not all the code. Simply the read cell and the dialog.
Software developer
www.mcm-electronics.com
PS: Don't forget to rate a good anwser ; )
Currently using Labview 2011
PORTUGAL
Attachments:
excel_dialolog.JPG 5 KB -
Comment insérer une balise PA dans la dernière version de DW CC2014 ?
Bonjour,
Comment insérer une balise PA dans la dernière version de DW CC2014 ?
"Traçage d'une seule balise div PA ou de plusieurs balises div PA à la suite
Dans la catégorie Mise en forme du panneau Insertion, cliquez sur le bouton Tracer un div pour un élément PA ."
Impossible de trouver la " catégorie Mise en forme du panneau Insertion " ?
It's DW CC2014 and I don't find how i can insert tag PA. where is the command in "insertion" ?Bonjour Philippe,
vous pouvez utiliser Adobe Dreamweaver * Utilisation des balises div. Contraire a «Choisissez Insertion > Objets mise en forme > Balise Div.» dans mon DW Allemande ce seulement «insérer >>> Div».
Bonne chance
Hans-Günter -
Salut à tous,
Comment je peux récupérer une chaine de caratères d'un fichier(txt par expl) dans une ligne (spécifiée) et une colonne (aussi spécifiée) avec notre adorable software LABVIEW.
Thx
Nizar
Résolu !
Accéder à la solution.Si ton fichier est un fichier tableur ce qu'a dit yohann me parait le mieux. Par contre si c'est un fichier texte qui contient une chaine au format tableur (sepération avec des tabulations) il faut utiliser "lire un fichier texte" + "Convertir un chaine au format tableur en tableau" et ensuite indexer la case qui t'intéresse.
Maintenant si tu as un simple fichier texte et que tu veux lire un couple ligne/colonne qui désigne un caractère précis il faut utiliser "définir la position dans le fichier" en connaissant la largeur de ton fichier texte. et la tu n'as plus qu'à rentrer dans offset: indice_ligne*largeur+indice_colonne comme une vieille réminiscence du c.
Sebastien DEVISSCHER - Nerys -
Bonjour à tous,
Pour pouvoir trigger une appli externe, je souhaiterais pouvoir créer une interface LV pour générer une séquence TTL 5.0v (via port série? ou adaptateur USB-TTL?)
Le seul paramétrage requis étant la durée entre chaque impulsion TTL à générer. Pensez vous que cela soit possible? Je connais un peu l'architecture LV mais je ne suis pas familier avec les fonctions gérant les I/O série ou USB.
merci d'avance pour votre aidebonjour à tous,
pour piloter une ligne du port série, tu peux piloter par exemple la ligne RTS
c'est une fonction VISA du port serie
par contre elle n'est pas en 0 - 5V mais -10 -> + 10V
Luc Desruelle | Voir mon profil | LabVIEW Code & blog
Co-auteur livre LabVIEW : Programmation et applications
CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW -
En quel format transférer une session "Soundscape" en session "Logicpro"?
En quel format transférer une session "Soundscape" en session "Logicpro"?
Je croix que vous devrez essayer le format OMF.
-
Comment récupérer une ancienne sauvegarde sur iCloud?
je voudrais récupérer une sauvegarde du mois d'aout 2012 mais il ne m'apparait plus qu'un suavegarde faite aujourd'hui .
En fait il me manque beaucoup de mes contacts et je comptais les récupérer avec cette ancienne sauvegarde qui apparaissait au début mais plus maintenant . Comment faire ? De plus je suis sous iOS 6.1.3 et il ne veut pas mettre à jour mon Iphone et m'installer la version iOS 7.0.3 !! je ne sais pas quoi faire non plus.
Merci pour vos réponsesje voudrais récupérer une sauvegarde du mois d'aout 2012 mais il ne m'apparait plus qu'un suavegarde faite aujourd'hui .
En fait il me manque beaucoup de mes contacts et je comptais les récupérer avec cette ancienne sauvegarde qui apparaissait au début mais plus maintenant . Comment faire ? De plus je suis sous iOS 6.1.3 et il ne veut pas mettre à jour mon Iphone et m'installer la version iOS 7.0.3 !! je ne sais pas quoi faire non plus.
Merci pour vos réponses -
Est-il possible de transférer une synchronisation iphone depuis un pc sur un MAC
Est-il possible de transférer une synchronisation d'un iphone depuis un pc sur un MAC sans perde toutes les données de l'iphone ????
Bonjour,
Vous savez les outil de transfert? Il y a un logiciel de iPhone peut aider à transférer les données de iPhone vers PC. Par example:
Transférer musiques iPhone vers Pc
transférer les musiques de iPhone vers PC -
Error 10403 at AO Buffer COnfig, PCI-6703
Using any of the solutions generated by the DAQ solution wizard (such as Custom Funciton Generator) for multipoint waveforms, I always get Error 10403 at the AO Buffer Config. I saw this problem posted earlier, but there was no solution.
Labview 6.0
NI-DAQ ver. 6.9.1
PCI-6703
Win2000
Any thoughts?
Thanks,
A. FlanneryHi Tony,
First of all, I am not NI. I am just a guy who has worked with NI stuff and have learned what to look out for. All I can do is try to help, so here goes.
The -10403 error is the driver telling you that you are attempting something that is not possible. After reading your response, I broke out a catalog to figure what is up with the 6703.
First, the block diagram shows no on-board buffer. This is bad.
Second, the fine print (see page 396) shows that only "Programmed I/O" is available (see Data Transfers). This is also bad.
I would suggest you contact NI directly to discuss the posiblity of trading in the 6703 towards credit for an interface that will meet your needs.
If you have any other questions that you think I may be ab
le to help with, "fire-away" (just don't kill the messenger:<)) ).
Just trying to help,
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction -
J'essaie d'insérer une animation An dans Dw mais il manque un plug-in-?
J'essaie d'insérer une animation Edge Animate dans une page de Dreamweaver mais j'ai le message suivant "impossible de charger le plug-in" quand je veux le visualiser en direct.
Bonjour Christian-
Pouvez-vous mettre un lien vers votre fichier de sorte que nous pouvons jeter un coup d'oeil dans un navigateur? Vous devrez peut-être supprimer l'animation Flash manuellement via le mode de code dans Dreamweaver. Veuillez noter que cette question est probablement mieux posée dans le forum Dreamweaver, comme cette équipe gère l'intégration.
http://forums.adobe.com/community/dreamweaver?view=discussions
Ce message a été traduit machines.
Can you post a link to your file so that we can take a look at it in a browser? You may need to remove the Flash animation manually via code mode in Dreamweaver. Please note that this question is probably better asked in the Dreamweaver forum, as that team handles the integration.
Thanks,
-Elaine -
Créer une sortie analogique 6025E
Bonjour,
j'aimerai savoir comment procéder pour créer une sortie analogique (AO0) me permettant d'envoyer une tension comprise entre 0 et 5 V à un débimètre massique (Brooks, Mass Flow Controller, 5580 TR).
J'ai pour le moment réussi à créer une entrée analogique (AI15) me permettant de récuperer la valeur du retour.
Le tout en passant par la carte PCI-6025E.
Merci d'avance
Résolu !
Accéder à la solution.Je comprends mieux ce que tu veux faire.
Il faut que tu utilises les VI qui sont dans la palette E/S de mesures, DAQmx acquisition de données.
Je te conseille également de regarder dans les exemples de code fournit avec LabVIEW (Menu Aide, Recherche d'exemples...), tu devrais trouver ton bonheur ;-)
Cordialement
Benoît C.
Certified LabVIEW Associate Developer
Maybe you are looking for
-
Error while activating the ODS "Request No longer Exist in ODS".
Hi All, I had deleted one request from four ODS's before completely loaded from R/3. Now when i am trying to activate from one of them using process chain it is giving me the error massage "Request No longer Exist in ODS". But when i am manually acti
-
HDD for Time Machine and other stuff
Just a very short question.. Can I use my external harddrive for Time Machine and for example putting files on it to take it to my friend, or the otherway around, put files on it and take it back home? The reason I ask this is that I hooked up a USB
-
Hi I have an applet which has the functionality to print images.when i am working with appletviewer on local machine it works. when i tried to print through browser i am getting access denied error...i came to know that my applet has to get signed so
-
Problem in connecting JSP with Oracle 9i.
Hi, I am having problem in connecting JSP with Oracle 9i. I am using windows XP and my JDK version is 1.4. For executing JSP I am using "jakarta-tomcat-5.5.4-preconfigured". My database name is global. I have set java_home, j2ee_home, oracle_home, pa
-
Can't see my layout-window anymore
Hello everybody, I have a problem! I opened a domain in iWeb but now I don't see the layout-window anymore, even if I open a other domain. There is just the navigation-bar on the top starting with "iWeb ..." I have to do some changes, please help me.