Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Labwindows/CVI générer 2 tensions différentes en meme temps

Résolu !
Accéder à la solution

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

 

 

0 Compliments
Message 1 sur 3
6 465 Visites
Solution
Accepté par l'auteur du sujet Julien_B

Hello,

 

La première solution est certainement la meilleure si le cadencement des deux voies doit être le même. Il suffit de déclarer les 2 voies dans la tâche, et d'écrire un tableau de valeurs dont la taille est un multiple du nombre de voies (ici 2).

La fonction DAQmxWriteAnalogF64 suffit donc 😉

 

Cdt

Eric

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

0 Compliments
Message 2 sur 3
6 450 Visites

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

0 Compliments
Message 3 sur 3
6 443 Visites