Slow outputs analog on the cDAQ-9178

My control of the C language application calls the DAQmx API 200 times per second to update some AOs, using the following call:

DAQmxWriteAnalogF64 (taskHandle,

1, TRUE, 0.0, DAQmx_Val_GroupByScanNumber, data, NULL, NULL);

On a system with a single chassis cDAQ-9178 and two modules OR 9264 AO, it works correctly with a task of up to 4 channels. If I add channels to the AO job, the flow slows down below 200 Hz (5 ms). Here are the times:

Chans ms

8 6.8

16 13.4

32 26.9

How can I write 1 sample per channel, more than 32 channels, all 5 ms? It's a control application that meets the entries, so I can't write several samples per call.

Thank you.


Tags: NI Hardware

Similar Questions

  • The reference output analog of the PXI-67xx (AO GND) isolated or linked to the mass chassis/installation?

    I am trying to simulate a radiation of 3 mV/V power pressure transducers (excitement is + 10V, full range should therefore be 0mV at 30mV).  I am looking for a PXI analog output device high number of channels (PXI-6723, possibly) who doesn't have the down side of the analog output channels linked to the land of installation (differential channels of AO).  The plan was to use a voltage across the divider circuit of +/-10V output card AO to +/-50mV.  I use a card AO 16-channel, 12-bit which has all the Commons AO related to the mass of the PXI chassis and Earth installation.  The DC of the signal part I want it, but there are about 80-100mVpp of noise (from the ground connection) riding on it.  I also tried a PXI-6115 card we had at hand and its reference AO are related hard chassis-same result with the noise of the Earth.  Is PXI - 6723 AO GND isolated from the land of the chassis/installation?  Even if all GNDs AO are shared on the Board, this solution should be much better than having a noisy ground reference.

    Any ideas?  Alternatives to simulate a floating, the millivolt output device?

    Thank you!

    The reference of the AO of the 6723 relates to Earth; pages exit track to track analog insulation research, only a handful of AO devices have an isolated field (the business is a low channel count).


  • Negative outputs analog of the PCI-6229

    I appreciate this question may seem a little primary for some of you, but I spent hours looking for an answer with no luck.

    I have a card from e/s NI PCI-6229 M series I want to use to order a proportional hydraulic valve. The valve in question takes input in the range from - 10v to + 10v, which fortunately is the flow of the IO card range.

    My question is this; in order to generate a negative voltage (-) through the valve, what I need to connect to the two terminals (AO0 and AO1) AO or can I connect to a single AO (AO0) and the ground terminal (ALWAYS)? Or to say it another way, can the material generate a lower voltage to ground thus creating a negative through the valve potential difference if one is ALWAYS used?

    Thank you very much.


    Hi James,

    My mistake because I thought you were using LabVIEW. In theory, you should still be able to set the output programmatically.

    This link from the site Web of The MathWorks shows how to vary the values of your analog output when someone was using a PCI device , so it can be useful.

    I think the block National Instruments analog output is likely to be also useful.

    Having not used the xPC Target before, it's hard to be sure if. I highly recommend using LabVIEW next time

    And yes I count not that you went on your wiring in the correct manner.

    Kind regards

  • Bad analog output help Every_N_Samples-NI-9263 cDAQ-9172 chassis (works with cDAQ-9178 chassis)


    The NOR-9263 analog output voltage geberation works correctly with the cDAQ-9178 chassis but gives wrong result using the chassis NOR cDAQ-9172.

    In the attached code example, a single cycle of a sine wave is composed of 40000 samples and came out in the background using Every_N_Samples at a rate of production of 5000 samples per second.

    The output buffer size is set to 10000 samples.

    Prepare us the buffer writing 10000 samples 1, then write the remaining data in the background using the Every_N_Samples callback.
    Bug: Using the cDAQ-9172 chassis, to the 5000 s/s sampling rate with the help of an external field (or through closure to another HAVE), we observed that 1 10000 samples came out twice, followed by the rest of the waveform. The last 10000 samples are never exits. If you are working properly, we would expect to see 1 full cycle of a sine wave.

    The bug does not occur with the chassis NOR cDAQ-9178. I use the driver NIDAQmx v9.2.1f0 on Windows XP
    The bug does not happen with simulation devices, so you will need to use harwdare real to reproduce.

    Please find attached an example of code C based on the example program OR "ContGen - IntClk.c" to reproduce this bug.

    Thank you


    The MathWorks

    Hi whemdan,

    By default, DAQmx regenerate old samples if no new data is available.  To give the correct behavior, you can:

    Use DAQmxSetWriteRegenMode to disable the regeneration (DAQmx_Val_DoNotAllowRegen).  In most cases, this is recommended if new data are written continuously in the buffer as the build is in progress.

    If you just need to generate 40 k samples, you can write them just all at once, rather than in 10 pieces of k (the code you attached probably is just an example, so I'll assume that you have a reason to write the data into segments in your actual code).

    I think the difference in behavior between 9172 and 9178 can if explained by the different way, buffering is set up on each product.  The 9172 uses a buffer of 8 k (on the STC2) in all cases (source).  The 9178 uses an 8 k of memory buffer (on the STC3) If you use regeneration shipped, but uses the 127 samples FIFO cartridge, if you use no on-board regeneration (source).

    Then... on the 9172 8191 samples are immediately transferred to the FIFO.  By default, the hardware is going to request new data when the FIFO is less to fill (this is configurable with DAQmxSetAODataXferReqCond).  I'm not sure what the transfer data request size is in your case (you can set the maximum value with DAQmxSetAOUsbXferReqSize), but obviously it is bigger than the other 1809 samples that you have not yet sent to the Board of Directors of your first entry.  At this point, the pilot will regenerate 10 existing k samples so that sufficient data will be available to meet the demand of data transfer.

    The 9178 however use the FIFO of 127 smaller samples so you will not have the same behavior in your case.

    In summary, the behavior is explainable by the difference of material.  If you want to avoid to regenerate old samples, you should ban the regeneration using DAQmxSetWriteRegenMode.

    Best regards

  • regeneration of the outputs analog


    I am writing a program to fight mirrors laser. I use the example: output - analog continuous regeneration No. When I put a counter on since the while loop itteration, I can see I runs very fast for the first 10 hours, and then it slows down to normal pase... Is it possible to make the VI that it doen'st run so fast in the first round? Looks like that it is buffering a whole bunch of data... But I want to pause from time to time the exit...

    Best regards


  • Difference between the cDAQ-9174 and cDAQ-9178

    I have several cRIO-9081.  Each cRIO-9081 running NOR-DAQmx 15.5.  On four of the cRIO-9018 we show you cDAQ - 9178 with 8 modules.  Everything just worked.  On the fifth cRIO-9018, we tried to connect a cDAQ-9174.  The aircraft appeared in the Windows Device Manager and MAX, but MAX has indicated that the aircraft was missing (error-88705) and that Windows can't find a driver for the instrument.

    We then plugged a cDAQ-9178 in the fifth cRIO and everything just worked.

    What is the difference between a cDAQ-9174 and cDAQ-9178 other than the number of the module support?


    Hi Paul,.

    It seems it could be a driver problem! What DAQmx version you have installed on two computers? Reinstall the latest version may be worth it because it looks like there may be corruption. You can find the latest version here:

    You can manually associate the device driver, here:

    There are modules connected to the cDAQ chassis?

    Also, sometimes, this can happen if you do not restart your computer after the installation of the NOR-DAQmx driver. Restart your computer after the driver installation will allow you to reserve the device successfully. Here are a few others not to try:

    • Check the charger to device OR to see if it is running

    • Reset the service OR charger

    • Reset the MAX Configuration database

    • The system power cycle

  • How to give the option to the user to select the measures of temperature or voltage with NEITHER cDAQ-9178

    Hello. I wrote two programs for the NOR cDAQ-9178 that work perfectly, but now I would like to combine... and users the ability to perform a measurement of the temperature (module NI 9214) or a measure of tension (NI 9201 module). I tried to use an Enum to a case Structure control, where the

    user can choose either 'Measure the temperature', or 'Measure the tension', but during execution of the program, only the before user input panel opens and the program stops. Could someone please look at the code below and give me advice on the placement of my two programs in a structure of case? Each program contains two screws... a Subvi user input and a measure vi. Is it possible for me to drag the temperature and tension screw in the structure of matter? Thank you.

    FYI - I am reposting this, because I couldn't get tethering to work on my previous post

    I found my solution. I had to right click on the Subvi vi... 'Subvi node Setup' and select set the front panel

  • Outputs produced by the analog input job Retrig delay counter

    Hi all!

    First of all, I want to thank everyone on this forum who take the time to answer the questions, this forum has been invaluable to me.  I have a question about delays in adjustment to the pulse output of a counter, like what is described here.  My question is related to another, asked hereon the trigger of an analog signal and producing a pulse for each triggered event.  I have this job and can be seen in the attached vi.  Basically, now I'm able to produce a TTL pulse whenever my analog signal passes a predetermined threshold.  I have also documented the vi to my best understanding, if I have something wrong in the documentation, please let me know.

    In any case, now that I have a pulse at each outbreak, I would like to be able to adjust the delay of events so that the pulse is not produced until the period n/20 (n = 0, 1, 2,... (19) what I expect to see is a similar pulse train in 'fig. 2' in the article, where the white pulse is the counter pulse, and the pulse red would be the same as my analog signal.  So, for example, if I had a 281Hz signal, I want to produce a single pulse with a width defined by the user whenever my signal crosses a threshold (it's zero delay: 0/20); This part may be made using the vi attached to this subject.  Now I want to delay this impulse as to each trigger event, a pulse is not produced until 1/20 of the period, or 0,000178 seconds after the trigger.

    Looking at my vi, I think that if I change the output channel of the meter to 'CO Pulse Time' and then set the respective initial delay, time and little time, I can get delayed impulses mentioned in the article.  Correct me if I'm wrong, but I think that basically 'big time' controls the pulse width. 'initial period' is what controls how long to wait after the first trigger event is reached, before generating a pulse, but this applies only to the first impulse and not the rest; and finally 'small time' is the time to wait before the next pulse is created.

    Earlier today, when I use the CO Pulse Time option, it seemed to work properly for me to a certain degree.  At low frequencies the impulses seem to trigger to each event when the pulse width is set at 2.5% of the period.  When I tested at 281 Hz with a pulse width, 'big time' of 0,000089 sec and without anything wired for the 'initial delay' or 'small time', the impulses seem to ignore systematically each triggers 2... that tells me that something is wrong in my settings, rather than problems with the sample clock.  So I decided to connect '0' to 'small time', but then I got an error message indicating that some time may be less than a value (I forgot what the error message).  So I concluded that I must not understand what these terms mean.

    Sorry for the long explanation, but I really need help with this.  So let's say that the first set of data, I want to acquire is at zero delay, such as pulses are generated at each triggering event like how I have my VI now; so, for the next set of data I want pulses to generate 0,000178 seconds after the trigger threshold; so, for the data set third, I want to pulses to generate 0,000356 seconds after the trigger threshold; and so on... How should I do for this?  Thank you very much!


    Please post on the Forums OR! I think the main issue here is that you are sampling not fast enough to catch all of your high. So you set your high dry 0,000089. You will need to substantially increase the frequency of sampling in order to catch all these. Something around 25 k should do the trick.

    To the extent where using the time counter Pulse, you're totally on track. I think that the use that the delay will do the job.

    I hope this helps! Let me know!

  • new cDAQ-9178 chassis was smaller than the cDAQ-9172 old buffer?

    Digital waveform features:

    Waveform acquisition (DI) FIFO for cDAQ-9172: 2047 samples

    Waveform acquisition (DI) FIFO for cDAQ-9178: 127 samples per slot

    This means that the new HW (9178) has a much smaller than the old buffer (9172)!

    I want to run a correlation over generation/acquisition at 2 MHz with 2000 samples. Does this mean that the new chassis will not be able to acquire the whole of the data (I use a NI 9401 module inside the chassis)?

    FIFO sizes are misleading and not a true indicator of the chassis supporting the streaming is not the single buffer.  We did some tests comparing the latest and cDAQ-9172 chassis.  You will not notice the difference, especially with your application to a finished task of 2 000 samples at 2 MHz.  With 2 000 samples, you can run your DI task on your chassis cDAQ-9178 at 10 MHz if you wanted without problem (don't try with continuous or even finished tasks).

    The only time where the FIFO size really comes into play is when you run a primary task at high rates, say > 5 MHz, even if it is system dependent.  At these speeds a FIFO that is deeper 2 000 samples you buy only tens or hundreds of additional microseconds when Windows jitter is measured in milliseconds.

    I would be very surprised if there is a practical application that worked on a cDAQ-9172 chassis which did not work on newer USB cDAQ chassis.

  • Output analog, the USB-6009 case - can I use DAQmxWriteAnalogScalarF64?

    I just got a NI USB-6009 and I try to use the outputs analog simple.

    I'm running on a Mac, so I'll try to use the API OR-DAQmx Base 3.2 C (downloaded from here:  This is the most recent version of NOR-DAQmxBase, I could find.

    I try to do continuous analog output on the 6009, which does not have a built-in clock.   I was hoping to do the sync software and just new output values when I want to.

    I can't get an output of database to work.  Other messages and the example of Windows files, (e.g., National Instruments/NOR-DAQmx Base/examples/ao/MultVoltUpates-SWTimed.c) it seems that the best thing to do would be to use the DAQmxWriteAnalogScalarF64 function.

    However, this is not in the Mac version of the C API of NIDAQmxBase.  There is actually an entry for this in the NIDAQmxBase.h file, but it is commented out.  Anyone know why?  Is it possible to use this function for the analog output on request on Mac?

    Thank you.


    I have NEITHER-DAQmx Base installed 3.2 on a 10.4.11 system.  One of the examples files 'genVoltage.c' calls DAQmxBaseWriteAnalogF64.  I was able to compile and run this example with a USB-6009.

    The DAQmxBaseWriteAnalogF64 function would work for you?

    My guess is that, since you can write a scalar value with DAQmxBaseWriteAnalogF64, DAQmxBaseWriteAnalogScalarF64 becomes superfluous.  The example provided with the installation shows how to write a unique value (i.e. scalar.).  I pasted the code of OR below.

    int main (int argc, char * argv [])


    Task settings

    Int32 error = 0;

    TaskHandle taskHandle = 0;

    char errBuff [2048] = {'\0'};

    Channel settings

    Char [] = "Dev1/ao0" chan

    float64 min = 0.0;

    float64 max = 5.0;

    Sync settings

    uInt64 samplesPerChan = 1;

    Writing data parameters

    float64 data = 3.25;

    pointsWritten of Int32;

    float64 timeout = 10.0;

    DAQmxErrChk (DAQmxBaseCreateTask("",&taskHandle));

    DAQmxErrChk (DAQmxBaseCreateAOVoltageChan(taskHandle,chan,"",min,max,DAQmx_Val_Volts,));

    DAQmxErrChk (DAQmxBaseStartTask (taskHandle));

    DAQmxErrChk (DAQmxBaseWriteAnalogF64(taskHandle,samplesPerChan,0,timeout,DAQmx_Val_GroupByChannel,&data,&pointsWritten,));


    If (DAQmxFailed (error))

    DAQmxBaseGetExtendedErrorInfo (errBuff, 2048);

    If (taskHandle! = 0) {}

    DAQmxBaseStopTask (taskHandle);

    DAQmxBaseClearTask (taskHandle);


    If (DAQmxFailed (error))

    printf ("error in DAQmxBase: %s\n",errBuff); ")

    return 0;


    Hope this helps!

  • Why NEITHER cDAQ-9178 isn't in the DAQmx device simulated in MAX?

    Hi all

    I want to create a device that simulated for cDAQ-9178. But Max, I could not find it. It lists only NOR cDAQ-9172. I have the version of NOR-DAQmx 8.9.5.

    Thank you


    LV 2009

    Hello Dennis,.

    NEITHER cDAQ-9178 is listed under DAQmx 9.0.2 supported device.

    Thank you


  • Integrate the outputs analog with analog inputs

    I have a program that displays 2 analog output waves and a separate program that captures the analog data through several materials of NEITHER. I need to integrate the program outputs analog in my analog input program.

    The program of analog output is fixed as "" and the analog input is fixed as "". When I try and integrate these programs I get 'error-200560 occurred at DAQmx waiting until the' to my function to wait until it makes my task of analog input (background of the program). I think it is my mistake in the order that I'm wiring to the top of my son of error but I'm not sure. I watched several tutorials (Timing and synchronization features of DAQmx) but I'm totally stuck.

    Any suggestions are greatly appreciated. Thank you!

    Alberto M.

    I think I've fixed this problem. I extended my flat sequence structure to include the lines of task and error of my task outputs analog and things seem to work.  I'm still not sure about what caused my error and why it has solved the problem...

  • can I connect the outputs analog of a DAQ configuration in series to have the highest voltage source?

    Hello guys,.

    My question is provided in the topic, you have an idea about that? your help is appreciated.


    Hi Ela,

    For almost all devices supported by DAQmx, you can't. When all AO channels have the same motive, connecting them in series would be short the output channel on the ground, which is bad.

    However, there is one exception: the SCXI-1124 module has channel-to-channel isolation, which allows channels to be cascaded to output voltages: I can cascading the output voltage of an SCXI-1124 module?

    With channel-to-Earth isolated peripheral (such as NI 926 x or NI 623 x), you can cascade multiple devices together, but not multiple channels on the same device.


  • cDAQ 9178 simultaneous independent loops counters?

    I have a cDAQ 9178 wherein I am scanning in various mainly analog channels, but also unique sending digital outputs. These tasks are started during the execution of the program and basically scan continuously, filling variables according to the needs.

    In addition to this, I needed to count impulses and the only way I managed to do that work was to begin the task of counter when necessary, and then stop it. This happens at the same time (within a state machine) and works very well.

    Now, I want to add a second counter, which will take place if necessary (same scenario, task of beginning, read the pulses, work stoppage).

    So in summary, I have to:

    Main outputs and analog loop, digital inputs, tasks began before the great loop and continuously, work stopped only after the termination of the program. (works fine)

    Counter task began when necessary, stopped when necessary, of the main inside while loop. (works fine).

    2nd job counter starts when necessary... (I was wondering if it will work)?

    Should it be a problem?


    Hi Jeff,

    I don't think that you will have problems with that.  To test this, I took an example of the meter and it - create two tasks, each using a counter of the device even duplicated and I has not encountered any errors.  That said, the best way to check for your application would be to add a second straightforward and test it.  As long as it works, there is no problem even if your final configuration can be much more complex.

    Kind regards

    Trey C.

  • MULTIFUNCTION CARD analog input 4, 4 meters, 16 outputs analog


    I am looking for a card of this product with the following features data acquisition,

    1. At least 4 meters
    2. At least 4 analog inputs
    3. At least 16 analog outputs
    4. PCI or PCIe or USB

    Can someone give me an idea on the map OR equivalent specifications.

    What will be the effect on the acquisition of data if I use two differernt cards? for example if you meter, analog output on a single card and entered only analog on the other card. Be it the questions of time between two cards over the selection of software such as LabView? especially when all the dry milli is very important for you.

    Kind regards


    You might want to watch a cDAQ chassis.

    1. all the new cDAQ chassis have 4 counters on the backplane.  They are accessible through any module "parallel" (essentially no matter what digital IO module with 8 lines or less, 9401 or 9402 are fairly standard according to the desired connector type).

    2. There are a variety of analog input modules available for compact data acquisition - you can select based on your application (sampling frequency, precision, conditioning, etc.).

    3. for the 16 analog outputs, you probably want to use a 9264.

    4. the 9174 or 9178 use USB and have 4 and 8 slots for modules respsectively.

    Best regards

Maybe you are looking for