Quantcast
Channel: LabWindows/CVI topics
Viewing all articles
Browse latest Browse all 5365

Rapport cyclique variable - Labwindows CVI - PXI 5411

$
0
0

Bonjour Madame, Monsieur,

 

Je développe actuellement une application sous Labwindows CVI permettant de faire varier en fréquence 3 signaux déphasés de 120° entre eux . Pour cela je dispose de 3 cartes PXI 5411.

 

Cependant, le rapport cyclique est fixé à 50% par défaut. Mes signaux doivent avoir un rapport cyclique Th=75%.

 

Je ne sais pas comment programmer cela sous CVI.

 

Voici mon bout de code (dans moin exemple j'ai fixé la fréquence à 500Hz) :

 

int CVICALLBACK COMMANDBUTTON (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
 ViReal64 DC=75.00; 
 

 ViReal64 frequence=500.00;
 ViChar GBF1[256]="DAQ::3";
 ViChar ChannelGBF1[256]="0";
 ViReal64 Amplitude1=5;
 ViReal64 DCOffset1=2.5;
 ViInt32  Waveform1=NIFGEN_VAL_WFM_SQUARE;
 
 ViChar GBF2[256]="DAQ::5";
 ViChar ChannelGBF2[256]="0";
 ViReal64 Amplitude2=5;
 ViReal64 DCOffset2=2.5;
    ViInt32  Waveform2=NIFGEN_VAL_WFM_SQUARE;
 
 ViChar GBF3[256]="DAQ::7";
 ViChar ChannelGBF3[256]="0";
 ViReal64 Amplitude3=5;
 ViReal64 DCOffset3=2.5;
    ViInt32  Waveform3=NIFGEN_VAL_WFM_SQUARE;

 switch (event)
 {
  case EVENT_COMMIT:


   /* Ressource 1 maître, ressource 2 et 3 esclaves*/  
 if(vi1 != VI_NULL) { niFgen_close(vi1);}  
 if(vi2 != VI_NULL) { niFgen_close(vi2);}
 if(vi3 != VI_NULL) { niFgen_close(vi3);}  
 
 niFgen_init(GBF1, VI_TRUE,1, &vi1);
 niFgen_init(GBF2, VI_TRUE, 1, &vi2);  
 niFgen_init(GBF3, VI_TRUE,1, &vi3);  

 

  /* Configuration du maître*/
 niFgen_ConfigureRefClockSource(vi1, NIFGEN_VAL_RTSI_CLOCK);
 niFgen_RouteSignalOut(vi1, "0", NIFGEN_VAL_OUT_START_TRIGGER,NIFGEN_VAL_RTSI_1);
 niFgen_RouteSignalOut(vi1, "0", NIFGEN_VAL_SYNCHRONIZATION,NIFGEN_VAL_RTSI_0);   
 
   /* Configuration esclave 1*/
 niFgen_ConfigureRefClockSource(vi2, NIFGEN_VAL_RTSI_CLOCK);
    niFgen_ConfigureTriggerSource(vi2, "0", NIFGEN_VAL_RTSI_1);
    niFgen_ConfigureSynchronization (vi2, "0", NIFGEN_VAL_RTSI_0);  

   /* Configuration esclave 2*/
 niFgen_ConfigureRefClockSource(vi3, NIFGEN_VAL_RTSI_CLOCK);
    niFgen_ConfigureTriggerSource(vi3, "0", NIFGEN_VAL_RTSI_1);
    niFgen_ConfigureSynchronization(vi3, "0", NIFGEN_VAL_RTSI_0);   


 
  /* Configuration et generation forme d'onde esclave 1*/
    niFgen_ConfigureOutputMode(vi2, NIFGEN_VAL_OUTPUT_FUNC); 
 niFgen_ConfigureStandardWaveform(vi2, ChannelGBF2, Waveform2, Amplitude2, DCOffset2, frequence,120);
 niFgen_InitiateGeneration(vi2);
    niFgen_ConfigureOutputEnabled(vi2, "0", VI_TRUE);     
 niFgen_SetAttributeViReal64 (vi2, ChannelGBF2, NIFGEN_ATTR_FUNC_DUTY_CYCLE_HIGH, DC); 

 

  /* Configuration et generation forme d'onde esclave 2*/
    niFgen_ConfigureOutputMode(vi3, NIFGEN_VAL_OUTPUT_FUNC); 
 niFgen_ConfigureStandardWaveform(vi3, ChannelGBF3, Waveform3, Amplitude3, DCOffset3, frequence,-120);
 niFgen_InitiateGeneration(vi3);
    niFgen_ConfigureOutputEnabled(vi3, "0", VI_TRUE);
 niFgen_SetAttributeViReal64 (vi2, ChannelGBF2, NIFGEN_ATTR_FUNC_DUTY_CYCLE_HIGH, DC); 
 
 /* Configuration et generation forme d'onde maître*/
    niFgen_ConfigureOutputMode(vi1, NIFGEN_VAL_OUTPUT_FUNC);
    niFgen_ConfigureStandardWaveform(vi1, ChannelGBF1, Waveform1, Amplitude1, DCOffset1, frequence,0);   
    niFgen_InitiateGeneration(vi1);
    niFgen_ConfigureOutputEnabled(vi1, "0", VI_TRUE); 
    niFgen_SetAttributeViReal64 (vi2, ChannelGBF2, NIFGEN_ATTR_FUNC_DUTY_CYCLE_HIGH, DC); 

    break;
 }
 return 0;
}

 

Naturellement, je me connecte sur la sortie SYNC OUT des cartes PXI. Aussi, j'ai essayé à l'aide du Front Panel NiFgen et là j'arrive à faire varier le rapport cyclique (quelque soit le signal généré sur la sortie ARB OUT).

 

Pourriez-vous m'aider??

La fonction ; niFgen_SetAttributeViReal64(vi2,ChannelGBF2,NIFGEN_ATTR_FUNC_DUTY_CYCLE_HIGH, DC);

ne fonctionne pas.

 

Cordialement,

 

Eric


Viewing all articles
Browse latest Browse all 5365

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>