09-26-2008 02:24 AM
Dear all,
I am trying to write a program in C (WinXP, MS Visual C++ 6.0) that uses a USB-6009 board to perform
real-time control, that is, each time the internal clock of the board ticks I need to execute the
following operations:
Step 1: read the values from 1 or more AD converters,
Step 2: perform some calculations with these values,
Step 3: then write some values to1 or more DA converters.
Step 4: wait until the next timer tick and go back to step 1.
I have already studied the documentation of the board and I have a working program.
The problem is, even if I just want to write to the DA the value that I get from the AD, there is a delay larger
than one sampling period between these operations. I am using an osciloscope to measure this delay.
My current program is as follows:
1) create and configure the tasks (AD and DA conversions, 1 input and 1 output):
DAQmxErrChk (DAQmxCreateTask("",&Tarefa_Entrada));
DAQmxErrChk (DAQmxCreateTask("",&Tarefa_Saida1));
DAQmxErrChk (DAQmxCreateAIVoltageChan(Tarefa_Entrada,Canal_Entrada,"",
Modo_Aquisicao, Tensao_Min_PE, Tensao_Max_PE, DAQmx_Val_Volts,NULL));
DAQmxErrChk (DAQmxCreateAOVoltageChan(Tarefa_Saida1,Canal_Saida1,"", Tensao_Min_PS, Tensao_Max_PS, DAQmx_Val_Volts,""));
2) create the clock:
DAQmxErrChk (DAQmxCfgSampClkTiming(Tarefa_Entrada,"",Amostras, DAQmx_Val_Rising,DAQmx_Val_ContSamps, (int64)Buffer));
3) start the tasks:
DAQmxErrChk (DAQmxStartTask(Tarefa_Entrada));
DAQmxErrChk (DAQmxStartTask(Tarefa_Saida1));
4) execute the control loop:
printf("Starting the control loop ...\n\n");
do{
DAQmxErrChk (DAQmxReadAnalogF64(Tarefa_Entrada, 1, Timeout,
DAQmx_Val_GroupByScanNumber, leitura, 2, &num_leit, NULL));
/* CALCULATIONS*/
DAQmxErrChk (DAQmxWriteAnalogScalarF64(Tarefa_Saida1,1,Timeout,saida,NULL));
}while(kbhit()==0); //Loop é interrompido quando alguma tecla é pressionada
Perhaps I have to associate the clock with the DA converter as well. I have tried to do that but I get a compiler error.
What is wrong with this program? How should I modify it?
Many thanks for any help.
Cairo L. Nascimento Jr. and Jeeves L. dos Santos
ITA - Brazi
cairo@ita.br, jeeves@ita.br
10-02-2008 12:22 PM
The same forum is in the follow link:
http://forums.ni.com/ni/board/message?board.id=250&message.id=43353