01-31-2011 11:26 AM
Hi,
I am using NI_DAQmx tools in matlab to set up my AI channel. When I try to read to AI channel, the baseline of the sine wave shift continuously up and up (I used a function generator to produce the sine wave which the baseline is on zero). I met the similar problem before, when I was using the Data Acquisition ToolBox in matlab. I set the ai.inputtype='SingleEnded' to fix this problem. But right now, I am using the NI_DAQmx tools, how can I set the ground in the right way?
If anybody knows the way to solve this problem, could you please tell me?
Thank you so much!
liming
02-01-2011 12:51 PM
I try to read data to AI channel.
I am not sure how to use DAQmxAIAutoZeroMode. I always got error code 200077.
Here is my code.
[a,b,taskMasterAI]=calllib(
'myni','DAQmxCreateTask','',taskMasterAI)
taskAIChan1='/Dev2/ai0';
[a,b,c,d]=calllib(
-10,10,DAQmx_Val_Volts,
'myni','DAQmxCreateAIVoltageChan',taskMasterAI,taskAIChan1,'',DAQmx_Val_Cfg_Default,'')
nsample=1000;
[a,b]=calllib(
DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,nsample)
'myni','DAQmxCfgSampClkTiming',taskMasterAI,'',1000,
[a]=calllib(
'myni','DAQmxSetAIAutoZeroMode',taskMasterAI,'',DAQmx_Val_Once)
[a]=calllib(
'myni','DAQmxStartTask',taskMasterAI)'doublePtr',readarray);'int32Ptr',0);'uint32Ptr',[])'myni','DAQmxReadAnalogF64',taskMasterAI,1000,10,DAQmx_Val_GroupByScanNumber,...
readarray_ptr,arraylength,sampread_ptr,empty_ptr)
)
After I execute the DAQmxAIAutoZeroMode, the error -200077 will appear.
I don't know what's wrong with my code.
If someone knows, please let me know.
Thanks!
numofchans=1;
nsample=1000;
readarray=ones(numofchans,nsample);
readarray=double(readarray);
readarray_ptr=libpointer(
sampread_ptr=libpointer(
empty_ptr=libpointer(
arraylength=uint32(numofchans*nsample);
[a,b,c]=calllib(
02-01-2011 05:19 PM
The error 200077 is a DAQmx error stating that a requested value is not supported by a property. Is there any text or explanation that accompanies the error? It sounds like you are requesting something that is indeed not supported.
What is the NI device you are using?
A good place to look would be the DAQmx C Reference Help. Search for the DAQmxCreateAIVoltageChan function. You can then find the property for terminalConfig, and then note that you shouold set this value to DAQmx_Val_RSE instead of using DAQmx_Val_Cfg_Default as you have specified.
I do not think that the device you are using will have/implement the Autozero function.
Best,
02-02-2011 08:52 AM
Hi Adam,
Thank you for your replying.
I am using PCI 6221 right now.
If this device has not the AutoZero function. How could I set the right ground for my analog input channel? I know I can set single ended ground or differential ground in labview. But right now I am using matlb to call DAQmx. I am not sure what I should do.
liming
02-02-2011 09:28 AM
You should do what Adam told you to do about the channel config. DON'T specify DAQmx_Val_Cfg_Default like you are doing now and specify DAQmx_Val_RSE just like he said.
02-02-2011 11:33 AM
Thank for everyone's reply. I got it.