Double buffered acquisition with PCI-6031E

For a meagre 1 channel acquisition at a sample rate of 100 Hz and buffer size of 1000, I get this message:
"Warning -10026 occurred at an unidentified location.
Possible reasons:
NI-DAQ LV: The requested number of buffers or the buffer size is not allowed. For example, the buffer limit for Lab and 1200 devices is 64K samples, or the board does not support multiple buffers."
Can someone explain the reason

My favorite way to get this error is to accidentally wire something to the "number of buffers" input on the AI Config VI. This should be left unwired most of the time. You can also get this error if the buffer size is invalid. This would be less than 3 or greater than 2^24 for your board. See KB 1JAKLN6Q for more information.
Finally, as a check I would run one of the shipping example programs to see if you don't get the same problem. Then you can compare your program to it. Try "Acquire N Scans.vi"
Hope this helps!
Russell
Applications Engineer
National Instruments
http://www.ni.com/support

Similar Messages

  • Multi-buffered acquisition with digital trigger

    I have a PCI-MIO-16E1 and I need to do three channel (250KHz/channel - ~400 scans/trigger) multi-buffered acquisition with digital trigger (trigger => 30 Hz).
    I could not find any example of multi-buffered acquisition. Could anybody help me?

    Hello,
    I assume that you are refering to a retriggering setup where each time you recieve a trigger you take 400 samples on each channel at a rate of 250kHz per channel (total scan rate = 3CH * 250kHz = 750kHz).
    In order to keep the system hardware timed you can use the two counters on the board to produce a retriggerable pulse train that will act as your scan clock. For example each time the counter recieves a trigger it will output a clock signal of 750kHZ with 400 or so pulses in order to take ~400 scans/trigger.
    This clock signal can then act as the scan clock for your 3 channel analog input operation.
    Now we have to figure out how to set up the retriggerable pulse train from the counters and have the analog input use the counter output as a sca
    n clock.
    Good thing there is an example that is already written
    http://zone.ni.com/devzone/explprog.nsf/6c163603265406328625682a006ed37d/aab61e455564a04d862568930018e725?OpenDocument.
    Good Luck.

  • Using 6533 DIO32HS, is it possible to use double buffered output with varying pauses?

    I'm using Level-Ack handshaking to transmit data. Currently, I'm hooked up to a loop-back on the DIO32HS card.
    If I don't use double-buffering, I end up with pauses in data transmission, so I need to use double buffering. Unfortunately, I can't seem to set up a delay in the middle of a double buffered scheme.
    What I need to do is this:
    Transmit 64 packets of data (16 bits each) on group 2 / Receive 64 packets of data (16 bits each) on group 1
    Delay for .2 ms
    Transmit the same packets again / receive
    The delay in the middle will need to be varied, from .2 to 20 ms.
    I'm programming in Visual C++ 6.0 under Windows 2000, with (as suggested above) group1 c
    onfigured as input (DIOA and DIOB) and group2 set up as output (DIOC and DIOD). Due to the speed of transmission (256kHz) and the small size of the data set, the program I wrote, no matter how tight I try to make it, cannot insert the proper delay and start the next send on time.
    Does anyone have any idea if such a pause is possible? Anyone know how to do it, or any suggestions on what to try?
    Thanks!

    .2 ms is a very small time delay to use in software. Windows usually isn't more accurate than about 10 or 20 ms. If you need to have small, precise delays you could either use a real time OS, like pharlap and LabVIEW RT, or use extra hardware to generate the delays correctly.
    I would recommend using a separate MIO or counter/timer board (like a 660x) to generate timing pulses for the DIO32HS. This gives you precise timing control at high speed. If the 32HS is in Level ACK Mode, it will respond to external ACK and REQ signals. This is covered in more detail on page 5-10 of the PCI-DIO32HS User Manual.

  • Multibuffer acquisition with PCI-6115

    I am trying multi-buffer acquisition with a PCI-6115 board. I seem to get an error (-10026) that suggests that this board does not support multi-buffer acq. does anyone know if this is so?

    By multi-buffer acquisition, do you mean doing buffered acquisition for different channels simultaneously? If this is the case, PCI-6115 boards allow this since each analog channel has its own DAC.
    Are you trying to do Analog Input or Analog Output?
    What value are you putting as buffer size?
    Can you sample one channel continuously without a problem?
    Please let me know,
    LA

  • How do I use bidirectional buffered acquisition with handshaking on the 6533

    I would like to use the 6533 board to generate digital patterns from a spreadsheet file (transfered to a buffer) with handshaking on ports A and B. At the same time, I need to acquire digital patterns on ports C and D, also with handshaking, and transfer it to a separate buffer. I already have the two tasks working separately. However, when I put them togheter in the same Labview program, the acquisition seems to work, but the pattern generation doesn't. I also get the "Error - 10409 occured at Digital Group Config", saying that the specified group is in use.
    Is there something special we need to do to use the same board for two seperate handshaking tasks? I read somewh
    ere that the 6533 can do two simultaneous handshaking tasks, but how?
    Thank you for your help,
    Benoit

    In the DIO Config.vi you must explicitly set the 'Group' parameter for both processes (Input and output) to different values, otherwise the defaut 'group 0' will be found in use by the second DIO config executed.
    Roberto
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Multi-record continuous acquisition with PCI-5112

    Hallo!
    I need to know if it is possible to obtayn a continuous acquisition in multi-record mode.
    In "niScope EX Multi Record Fetch Forever.vi" shipping example (LV 5.1), it seems to stop when "loop index" rises to "number of records -1" value.
    I've not the avilability of the PCI5112 card at the moment, so I cannot to try on, but I need of a confirm.
    If I've well understood, I could modify the loop condition, by erasing the check on loop index, and by wiring "loop index"mod(N), to "fetch record number" attribute (let's define N as "number of records"). So I could continuously fetch the records 0,1,..,N-1, for the first cycle, and again 0,..N-1, for the second cycle, and so on.
    OK! I think that the contents of a reco
    rd number K (with 0<=K<=N-1) are different if acquired in different cycles! In this way I can obtayn a "for ever" multi record acquisition. Is it right?
    Thanks for your answers.

    NatRob,
    It sounds like you are on the right track. The only thing keeping this from running continuously is the comparison of "loop iteration + 1" to the "number of records." Other than that, the loop should only stop when an error occurs or hte Stop button is pressed. Just erase the greater than comparison and the boolean used to stop the loop and it should work.
    Regards,
    Chris Drymalla
    NI Applications Engineer

  • Why ACK should be deasserted sometimes during the data acquisition with PCI-DIO-32HS burst mode handshaking?

    My peripheral device sends 32-bit data to the DIO board serially with PCLK 6MHz, about 300,000 times totally. The phenomenan like I mentioned in the summary above happens, and it causes some data missings.
    Though I know ACK is not always asserted as somewhere in the NI database says, I want to know why it happens. if I can. I wonder if it is just inevitable or not.
    Do I only have to add some buffer memories to my device and make it watch on the ACK changing? Or, is there any other good way to avoid this problem?

    Hi,
    Burst mode handshaking protocol needs to conditions to be meet before data can be transfered. The PCI-DIO-32HS need to be ready to transfer data and the external device needs to be ready to transfer data.
    The ACK line tells the external device when the PCI-DIO-32HS is ready and the REQ line tells the PCI-DIO-32HS when the external device is ready. When both are ready data should be transfered. This is the nature of Handshaking, guarenteed data transfer (when both devices are ready), but not at a guarenteed rate. Handshaking means that the two devices communicate with each other to determine when to transfer data.
    The PCI-DIO-32HS ACK line is toggling low because the PCI-DIO-32HS is busy catching up with the given transfer and is not ready to receive m
    ore data at this time. The ACK line is not something you can control, it is controlled by the PCI-DIO-32HS.
    Your application may be better suited for use with Pattern I/O if you are not using the handshaking lines, ACK and REQ, to control the flow of data. Pattern I/O does not use handshaking lines and clocks data in on every rising edge of the clock. You may receive an error if your system can not keep up with the transfer rate.

  • Can PCI 6031E handle multi-buffered data acquisition

    If so can anyone send me some instructions or LabView code. Thank you in advance.

    Greetings,
    The PCI-6031E can handle single or double buffered acquisitions. The two best sources for examples and instructions are LabVIEW itself and our web site. Go to the "Help -> Find Examples" pull-down menu in LabVIEW to search for shipping examples. Look in the folder "Hardware Input and Output -> DAQ -> Analog Input -> General." Here you will find many analog input examples. Specifically, you should pay attention to the ones with "buffered" in the title.
    In addition to LabVIEW itself you will find our web site's Developer Zone extremely useful.
    Development Library
    http://zone.ni.com/devzone/devzone.nsf/6ae7945502d89dea0625685500506e1f/4d58b1b80ec41ef70625683f006e1d6d?OpenDocument
    Regards,
    Justin Britten
    Applications Engineer
    Nati
    onal Instruments

  • Acquire data continuously (buffered semiperiod) with the 6602 board

    Hello,
    I post this qestion again because I think in my previous thread it will be wraped. :-)
    I use an PCI6602 card and 3 or 5 counters on it in buffered-semiperiod measurement.
    The planned measurement can last one day or longer so there will be a lot of values.
    What is the best way to process the values? Maybe calculate something and
    write these results to a file.
    I've read something about double buffered acquisition. Also something about
    a circular buffer.
    In the document "Lab VIEW Data Acquisition Basic Manual" the circular buffer is described.
    But I can't find any examples for double buffered acquisition and circular buffers.
    Has someone an example?
    Will I need such a t
    echnique? Or is there an other possible solution to handle the
    amount of data continuously?
    And when will be the best point of time to do the analyses of the data.
    Inside the while-loop or outside?
    Is it a problem to do this with the 3 counters simultaneously?
    I would be thankful for any tipps.
    I attached an file (library), where you can see the configuration (Measure Buffered SemiPeriod.vi).
    thanks in advance
    Peter
    Attachments:
    Measure_Buffered_SemiPeriod.llb ‏949 KB

    Peter,
    If your measurement will last for a day, you will need to log the data to file. Otherwise, it is very likely that you program will be unable to store that quantity of data. A double-buffered acquisition and a circular-buffered acquisition are the same operation. They refer to a continuous acquisition where a finite buffer is used in a circular fashion (new data is continually written over the current data as the buffer is filled). Of course, this requires the user to read data from the buffer before it is overwritten. In the program you attached to this post, you are already performing a double-buffered acquisition because you have the Buffer Mode controls set to "Continuous". With regards to analyzing this data, it would be best to do this
    after the acquisition is complete. Furthermore, you should be able to do this with three counters without any problems. Of course, if you need to perform more than three buffered measurements simultaneously, the additional counters will need to use interrupts.
    Good luck with you application.
    Spencer S.

  • How to do multi-buffered acquisition on NI-6115

    I need to acquire multiple sequential arrays of data over a single channel using an external clock and a digital trigger (~1000 arrays total, 1000 samples/trigger, external clock frequency 500kHz, trigger frequency 250Hz). It is important that the sampling start right after every trigger, and that I do not miss any triggers. I can already do this using simple buffered acquisition with the ai start and ai read vis in a loop, except it misses triggers while the loop re-starts. Is there any way I can define a buffer large enough to hold all of the samples I need, then to have it read only the number of samples I want after each trigger into this large buffer? I don't need to see the data until the whole acquisition (1000 x 10
    00 samples/trigger) is over. Is this what multi-buffered acquisition does? I cannot find any literature on the NI site related to multi-buffered acquisition. Thanks for any help.

    So every 4 msec you get a trigger signal that should initiate a 2 msec acquisition (1000 samples at 500 kHz sampling rate)?
    There's an example of a way to use your board's counters to support retriggered analog acquisition here on the NI site: Retriggered Analog Input Example. The code may look a little complicated, but the basic idea is described pretty well.
    The goal is to make sure the timing is handled in hardware so you don't miss triggers while doing the software reprogramming. AI Start would be called only one time prior to your loop, and only AI Read would be calle
    d inside the loop.
    Just be careful about your timestamp info. The analog acq. task won't have any "awareness" of time intervals between samples. It'll be up to you to slice up the data into appropriate chunks. You can probably do this by simply requesting the right number (1000) from AI Read.
    Good luck,
    -Kevin P.

  • Using double frame mode with a Hamamatsu C8484-05 and a PCI 1426

    Hi,
    I am using a hamamatsu C8484-05 CCD camera (http://sales.hamamatsu.com/en/products/system-division/machine-vision/part-c8484-05.php), with a PCI-1426. 
    Despite the NI site saying that they are compatible, Hamamatsu tell me that the camera is only compatible with the 1426 using the NI drivers , and not the Hamamatsu vi's. (http://sales.hamamatsu.com/index.php?id=13200492&language=1&)
    I located the .icd file for the C8484-05 on the NI website, and using IMAQ, i can control most of the settings using the set camera attribute vi. 
    However, there does not seem to be an option to set double exposure mode for PIV (i.e. 2 frame 2 exposure using double buffering)
    Do I have to do this manually using the low-level buffer controls? For a previous camera (IDT X3) I was able to select this option in their provided VI.
    If so, could you point me in the direction of some good tutorials for the use of buffers? 
    Additionally, is there an easy way to get all of the options without copying the text from each menu in MAX and using multiple case structures?
    Kind regards
    Joe Sherwood
    Solved!
    Go to Solution.

    Hi Zeyad,
    The HiSense MkII is just a DANTEC relabelled C8484-05C, apparently it has some differences, but I have found none (except the price tag!). For me, the icd file in the previous post (and this one) work for both cameras.
    The file I uploaded was a quick fix, but some of the options were not available when in PIV mode. The attached file is one i I improved at a later date, so you may have more luck with it (see note below) When you say you open it with IMAQ, what do you mean specifically? Vision Assistant, or IMAQ within labview? I personally check functionality using MAX, via the acquisition card (PCI 1426).
    So to answer your questions,
    1) If you just mean have I used it in LabVIEW, yes. It also works in Vision assistant and MAX
    2) I have used it to acquire double frame images with no problems
    I have used the camera at full exposure, and it was fine, but of course this is dependent on the illumination. If you are using laser pulses and your room is sufficiently dark the exposure should not matter.
    I should mention that the one problem I have had is that IMAQ within labview seems incapable of changing the camera mode from double to single, so I have to change it in MAX (I had a guy from LabVIEW look at this, but he couldn't solve it).
    Perhaps I could help more if you gave me a little more idea about your setup/application/ details of the errors etc.
    Regards
    Joe
    I could not upload an icd file (interesting choice from NI), so I have saved it as a txt, you will just have to odify the extension to use it
    Attachments:
    Hamamatsu C8484-05-C2.txt ‏74 KB

  • I am trying to write a double buffered data acquisition program using MFC and a callback function.

    i am trying to do a double buffer data acquisition using MFC application framework in Visual Studio.i want to use a callback function to notify when the buffer is half full.do you have some sample reference program that can help me?

    What DAQ board are you using? When you installed NI-DAQ you should have selected to install the support files for VC++. Then there will be several examples on how to do double buffered data acquisition.
    If you have already installed NI-DAQ 6.8 or higher and did not select to include the support files, you can run the NI-DAQ setup program and just add them. If you are using an older version, you will have to uninstall and reinstall.
    Once you have the support files, follow this path to the examples.
    >>Program Files>>National Instruments>>NI-DAQ>>Examaples>>Visual C>>
    If you are doing digital acquistion, goto the di folder, if you are doing analog acquisition goto the ai folder.
    As for the callback function, you can use the NI-DAQ function Config_DAQ_
    Event_Message with DAQEvent Type = 1, where N would equal half your buffer.
    Brian

  • C# implementation issue with double buffering

    I am using the C# dll library to access the berkeley db, is there any way to pass the buffer, offset, count for the btree cursor move function. I dont want to double buffer to memory every time I conduct a cursor move.

    Sir,
    The call I am assuming you are using on the double buffered example is the DAQ_DB_TRANSFER. The output or return value on this is an integer array of i16's. I'm not very familiar with Borland C++ Builer 4, but I'm thinking the VCL label is just a control that you are trying to send a value to. I'm not sure why this would give you an violation, other than that array of integers not having an data in there, or you are pointing to the data in an element incorrectly.
    Daniel McChane
    Application Engineer
    National Instruments

  • Can i use double buffering with SCAN_Sequence_Setup and sample rate divisors?

    If possible I would like to use double buffering when acquiring multiple channels at different rates using SCAN_Sequence_Setup. What are the tricks to sizing the buffers, if any.
    PCI-MIO-16Xe-10 and PCI-6052E are the boards I'm writing for, using Borland C++ builder under Windows2000
    Thanks,
    Brady

    Hello;
    At this time, you can't set up a multiple Scan Rate for different channels at same DAQ board. But, you can set up your Sample Rate to the fastest required to acquire you fastest channel, and then discard the readings of the other channels and only take the values for the different channels at their theoretical rate.
    Hope this helps.
    Filipe

  • Error -200141 when doing buffered events with DAQmx and PCI-6602

    When doing buffered events with DAQmx and PCI-6602 I get error 200141 - Data was overwritten before it could be read by the system.
    This error is generated ONLY with random inputs >200/sec.
    My setup is :
    DAQmxCreateCIVCountEdges(taskhandle,"Dev1/ctr3"....
    DAQmxCG+FGSampClkTiming(taskhandle,"/Dev1/FPI35",...
    DAQmxSetCICountEgdesChan(taskhandlem,"", "/Dev1/80MHZTimeBase")
    DAQmxSetChanAttribute(taskhandlw,",",DAQmx_CI_DataXferMech,DAQmx_Val_DMA,0);
    Can somebody help ?

    i'm getting the same Error-200141, while reading semiperiods. (Meas_Buffered semiperiod continous)
    while loop ex.rate seems to be pulsewidth*no.Samples to read. in my case PW=60ms
    Input buffer size measured with Property node= 10000
    why this error happens?? i cant use any mode other than implicit timing for semi-period measurement right??
    more info: all the ai channels are used ~ 16 differencial.
    i found one solution which is _ reinitializing the whole task if an error occur. is this the right way??
    Kudos always welcome for helpful posts
    Attachments:
    Counter_1_Meas Buffered Semi-Period-Continuous_main_lv09.vi ‏34 KB
    SemiPeriod_Reconnect Counter on Error.vi ‏35 KB

Maybe you are looking for