Benchmarks for Buffered Counter Input with X-Series Devices

Hi,
Does anyone know the maximum transfer rate (using dma) for the x-series cards? 
I'm looking for data simillar to the one in this link:
http://digital.ni.com/public.nsf/allkb/72A7E41EE5A8756A862571DA0076F1D7?OpenDocument
More specifically I want to know the transfer rate for the PCIe 6343.
Thank you,
Eyal
Solved!
Go to Solution.

I benchmarked 8MS/s on a single channel on a USB-6353 (should have similar performance to the USB-6356/66) with a buffered counter input task. This was only a 10 minute test on my Dell E6400 laptop ( Windows 7 32 bit, Dual core P8600, 4GB memory) so a sustained 24/7 rate is likely less. Also, I wasn't doing much with the data, just displaying it in an array. This is pretty much topping out USB streaming on this system (32MB/s) so I wouldn't expect to get higher. I wasn't running much else in the back ground (Explorer, Powerpoint, Lotus Notes) and CPU was at ~20%.
Hope this helps,   
Andrew S
Getting Started with NI-DAQmx
Measurement Fundamentals

Similar Messages

  • Preprocess​ing for DAQ Counter Input

    Greetings,
    I am using an NI DAQ device (USB-6431) to capture angular motion via a three-channel optical quadrature encoder. I have constructed my LabVIEW VI with DAQmx VIs to configure my DAQ (I'm using one of the onboard counters to measure angular position). I noticed throughout the process that there are many built in 'conveniences' that make the setup of the counter quite simple; the VI will automatically process the signals using X4 encoding and Z-indexing with the introduction of a few constants. I am making the assumption that the DAQ device and/or the computer does preprocessing on the input stream before it enters a buffer in order to convert ticks on three channels to values such as '-5.13 radians'. Firstly, is that a correct assumption? Is this is indeed the case, I would like to do some of my own preprocessing to deal with some of the idiosyncrases of my encoder. I am concerned that my computer would not be able to keep up if I do this processing within a LabVIEW loop using the DAQmx Read VI to grab the data from the buffer, so my next thought was to do the processing along with whatever code manages the position measurements from the counter BEFORE it enters the buffer and gets logged to disk. My question is, how would I go about adding this preprocessing behavior to my workflow? I am not at all opposed to writing some C if necessary. I would also appreciate any comments/corrections on my method; I am new to LabVIEW and data aquisition, so I am not sure if this is the right way to go about gathering and processing my data. Thank you for your time.

    Just a few quick thoughts:
    1. X4 encoding and Z-indexing happens on the board hardware (when configured), no processing involved
    2. Scaling to radians or whatever is done by the DAQmx driver.  Trivial processing takes place.  (You can also choose to perform a U32 format read to get the raw count value instead of the scaled value.)
    3. I can just about guarantee that your computer and the DAQmx driver can keep up if you program the data acq and the processing to run in parallel.  LabVIEW makes parallelism pretty easy, to learn more search out the producer - consumer design pattern.
    4. It won't be productive to try to wedge in some low-level processing between the board and the DAQmx API.  I doubt it's even feasible.   Learning to spin off parallel work with the producer - consumer pattern will let you use DAQmx as is without a hitch.
    Sorry, no more time now, gotta run.  Hopefully someone will be able to point you to a couple specific examples to illustrate.
    -Kevin P

  • Counter Input with Delayed counter Output with board 6023E

    HELLO
    Is possible with board 6023e have two counters working at same time in this case i need a counter to creat a delay and another one to read. If isn´t possible how i can have a delay in microseconds.

    Yes, each one of those boards have two STC counters you can use. Take a look at the User Manual of the boards for more information. When looking at the pin diagram for the boards, the counter pins are GPCTRx_.
    If you are using LabVIEW, CVI, VB or VC++, when you install NI-DAQ, it will install a lot of counter example programs which will show you how to program the counters.
    Brian

  • Can DAQmxRegisterEveryNSamplesEvent function be used for the Counter Input Channels

    Hi, All,
    I have an application to count the digitial pulse number. I want to know the time of the coming pulses which start from 1 and increased 4 later, like 1, 5, 9, 13..... The time interval between each pulse is not a fixed value. So I tried to use  DAQmxRegisterEveryNSamplesEvent and DAQmxCreateCICountEdgesChan functions. But afterI called the DAQmxStartTask function, it always failed.  The board I used is the NI-PCIe-6320. Here is part of my code.
    DAQmxErrChk (DAQmxCreateTask("",&m_taskhandle));
    DAQmxErrChk (DAQmxCreateCICountEdgesChan(m_taskhandle,"Dev1/ctr0","",DAQmx_Val_Rising, 0, DAQmx_Val_CountUp));
    DAQmxErrChk(DAQmxRegisterEveryNSamplesEvent(m_taskhandle, DAQmx_Val_Acquired_Into_Buffer, 4, 0, EveryNSamplesCallback, this) );
    DAQmxErrChk (DAQmxStartTask(m_taskhandle));
    I don't know the reason. Can Anyone give me some help. Thanks.
    Yang
    Solved!
    Go to Solution.

    Hi, John,
    What's I what to do is that I have an external digital signal, when the signal goes from low to high, I need do some operations. So I just want to know the time when the digital signal goes from low to high.  The frequency of the digital signal is from 0 - 20000Hz. My first plan is to use a counter to count the pulse rising edges. When the number of edge increases one, I do the designed operations. In this method, I can't guarantee I can catch each pulse rising point. Because sometimes the counter will increase more than one in the on-demand mode. For example, the previous content of the counter is xxxx4, but the next reading the content may become xxxx6.
    After I learned some ANSI C  codes, I found that the ChangeDetectionEvent can help me found time when the signal goes from low to high. So I wrote the following code: (I set the digital signal to P0.0)
    DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
    DAQmxErrChk (DAQmxCreateDIChan(taskHandle,"Dev1/port0/line0","",DAQmx_Val_ChanPerLine));
    DAQmxErrChk (DAQmxCfgChangeDetectionTiming(taskHandle,"Dev1/port0/line0","",DAQmx_Val_ContSamps, 1));
    DAQmxErrChk (DAQmxRegisterSignalEvent (taskHandle, DAQmx_Val_ChangeDetectionEvent, 0, Callback , dialog));
    DAQmxErrChk (DAQmxStartTask(taskHandle));
    int32 CVICALLBACK Callback (TaskHandle taskHandle, int32 signalID, void *callbackData){
    CNIPCIE6320Dlg* dialog = static_cast<CNIPCIE6320Dlg*>(callbackData);
    dialog->m_event_num++;  // Here is to calculate how many events has been triggered
    return 0;
    Yesterday I used this method to get the pulse rising time. I found the m_event_num is close to the ground truth (In the simulation, I know how may rising pulse I generated).  In one two hours test, the offset is almost 400 pulses. But today I did the same tests again. I found the m_event_num got a big difference from the ground truth. The voltage of the whole system today maybe smaller than yesterday, because today the power is from an invertor while yesterday the power is from the electricity supply. So will the lower voltage supply will causing some event missing. Or if PC system became busy will ignore some callings of the event callback function? That's two possible reason will affact the final result. I am not sure. Do you have any experience about this problem.  Or do you have some better suggestion to get the pulse rising time. Thanks again.
    Regards,
    Yang 

  • IVR pallet for caller voice input with DTMF

    We have IPCCE 7.5 setup with IP IVR and Nuance ASR TTS.
    what IVR pallet can we use to take voice input (spoken words) from customer along with DTMF inputs?

    We have IPCCE 7.5 setup with IP IVR and Nuance ASR TTS.
    what IVR pallet can we use to take voice input (spoken words) from customer along with DTMF inputs?

  • Custom scale for counter input?

    Hello everyone,
    Is it possible to create a custom scale for a counter input? I saw there is a feature to allow input Custom Scale Name to the Channel Property Node. However, when I tried to create a custom scale to input to the channel, I got this error
    Error -200212 occurred at DAQmx Read (Counter DBL 1Chan 1Samp).vi:1
    Property: CI.MeasType
    Corresponding Value: Count Edges
    Property: CI.AngEncoder.Units
    Corresponding Value: From Custom Scale
    Channel Name: CountEdges
    Task Name: MyCountEdgesTask
    Do you know what is the problem with it? Thank you

    How do you have the channel set up? Can you attache the VI's that you are using? Is this a global virtual channel?
    Tim
    Johnson Controls
    Holland Michigan

  • Highpass filtering for counter input signal

    Hello,
    I need to use high pass filter for my counter input pulsewidth measurement.
    I can do offline filtering on stored pulsewidth signal.
    I want to do same thing online.
    Is there any way to do it?
    I am using pci 6220 for counter input for pulsewidth measurement.
    Thanks
    Nisarg Shah

    Hi Nisarg, 
    This response is pretty late but have you seen any of the Filter VIs in LabVIEW? Can you apply a filter to your signal with these? 
    If this does not address your question, please provide some more information regarding your application, what you want to achieve and what you've tried. 
    -Cindy

  • Issue to make mandatory field(SELD/BBD and Date of manufactor)in migo for particular Material type and material Number starting with'1' series.

    Hi friend,
    i have issue regarding mandatory  self life field (SELD/BBD and Date of manufactor)in migo for Batch Tab for particular Material start with '1' Series and material type.
    i want to make mandatory above field during GR from migo..any one let me know exit or badi for that to full fill this goal..
    Regard's,
    shaikh Khalid.

    Hi Shaikh
    First of all Thread is not closed seconldy as a good practice if you have resolved your issue kindly document it here so that it may help someone in future
    Nabheet

  • Buffered counter output in C

    Hi everyone,
    I am looking for a possibility to generate a finite buffered counter output with varying pulse widths, using the X-Series. I am working in C / Python.
    I want to output two pulses triggered to an external signal. The first pulse should be short, the second pulse long. 
    The following code outputs only two identical pulses. How can I modify it to output two different pulses?
    CreateCOPulseChanTicks(channel,"","100MhzTimebase",DAQmx_Val_Low,0,300,300)
    CfgImplicitTiming(DAQmx_Val_FiniteSamps,2) #output two pulses
    CfgDigEdgeStartTrig(src,DAQmx_Val_Falling) #external signal
    SetStartTrigRetriggerable(True) #retrigger
    Best Regards,
    Stefan

    It's good you found a workaround but the behavior doesn't seem right to me...
    The default behavior in DAQmx (the C / LabVIEW / .NET APIs) is to regenerate data from the buffer.  Perhaps the python wrapper you are using is disallowing regeneration somewhere?  I tried this with regeneration disabled and it gives the same behavior you reported (though with regeneration enabled it does not).
    You can use DAQmxGetWriteRegenMode to verify this theory and DAQmxSetWriteRegenMode to enable regeneration in case it is disabled.
    Best Regards,
    John Passiak

  • Counter Output/Counter Input PXI Signals Behaving Erratically

    Question for all your LabVIEW guru's out there,
    I am running a frequency loopback test using the NI PXI 6229 MIO DAQ card.  I am generating a "Counter Output" pulse train signal which feeds through my device under test and then back out of my device under test and back into the PXI 6229 for a "Counter Input" frequency measurement.  Both the "Counter Output" and the "Counter Input" are assigned different PFI lines using DAQmx in LabVIEW.
    I have 4 lines to test on my DUT.  All four lines run this same frequency measurement but with different PFI lines on the PXI 6229.  Each line is test independently.
    This is my setup for the 4 lines:
    Path 1: P2.0 (Counter Output - Pulse Train) -> DUT (Device Under Test) -> P2.1 (Counter Input - Frequency Measurement)
    Path 2: P2.2 (Counter Output - Pulse Train) -> DUT (Device Under Test) -> P2.3 (Counter Input - Frequency Measurement)
    Path 3: P2.4 (Counter Output - Pulse Train) -> DUT (Device Under Test) -> P2.5 (Counter Input - Frequency Measurement)
    Path 4: P2.6 (Counter Output - Pulse Train) -> DUT (Device Under Test) -> P2.7 (Counter Input - Frequency Measurement)
    where:
    P2.0 = PFI8
    P2.1 = PFI9
    P2.2 = PFI10
    P2.3 = PFI11
    P2.4 = PFI12
    P2.5 = PFI13
    P2.6 = PFI14
    P2.7 = PFI15
    I have a LabVIEW VI which generates the "Counter Output" and reads the "Counter Input" frequency.  I am seeing weird behavior from the PXI 6229 card. I can test "Path 1" and "Path 2" and the frequency I read is what I generated. No issue there. However, when I test "Path 3" and "Path 4" the frequency measurement is erratic.  The readings are two different frequencies repeated over and over again and none of those frequencies are the expected frequency which was generated out of the "Counter Output."  If I reset the card, and start by testing "Path 3" and "Path 4" the frequency readings are correct and the erratic behavior is gone.  However, when I try to then test "Path 2" and "Path 1" now those lines have the erratic frequency issue. I can continue resetting the card and see same issue. The PFI lines that I test first will always pass.
    To summarize:
    Steps Taken:
    1. Test Path 1 = SUCCESS
    2. Test Path 2 = SUCCESS
    3. Test Path 3 = Erratic Frequency (Two Frequencies repeated over and over again in my frequency results array)
    4. Test Path 4 = Erratic Frequency (Two Frequencies repeated over and over again in my frequency results array)
    5. Reset the PXI 6229 Card
    6. Test Path 3 = SUCCESS
    7. Test Path 4 = SUCCESS
    8. Test Path 3 = Erratic Frequency (Two Frequencies repeated over and over again in my frequency results array)
    9. Test Path 4 = Erratic Frequency (Two Frequencies repeated over and over again in my frequency results array)
    I am wondering if Port 2 (P2.0-P2.7) on the 6229 card has certain dependecies and this is why I am seeing issues.  I am trying to get around this issue so that I don't have to always reset the card.
    Are P2.0-P2.3 (PFI8-PFI11) and P2.4-P2.7 (PFI12-PFI15) treated differently or require different setup?  How do I resolve this issue?
    Thanks so much!

    I have a theory...
    The DAQ card follows a policy called "lazy uncommit" wherein the terminal used for the output will continue to be connected to the counter even after the task has completed (until the terminal is needed for something else).  So as you run more tests, the counter output will end up driving more lines.  This behavior should be easy enough to confirm.
    As the DAQ card drives more lines, I'd imagine this affects the actual signal.  You could scope it to check, but it sounds like either the rise/fall times are becoming longer or some extra noise is being introduced on the line.  
    The readings are two different frequencies repeated over and over again and none of those frequencies are the expected frequency which was generated out of the "Counter Output."
    This implies you are picking up an extra edge during transitions--this isn't too uncommon if the signal is noisy since there is no built-in hysteresis on the DAQ card.  I would expect the measured frequencies to have periods that sum to either the full period or the semi-period of your actual signal (depending on how many duplicate edges are detected).
    Suggestions are as follows:
    To stop the DAQ card from driving multiple PFI lines, it would probably be easiest to just programmatically reset the device in between your tests (using DAQmx Reset Device).  If you can't reset the device (e.g. because you are running some other task that can't be interrupted) then you can instead configure a dummy task that uses the PFI line in question as an input.
    To stop the DAQ card from picking up multiple edges during transitions, you should configure a digital filter on the input terminals.  If you reset the device it sounds like this might not be necessary... it's up to you if you want to configure this or not.
    Best Regards,
    John Passiak

  • 6251 Counter input signal

    Hello,
    I am acquiring pulses which are 0-5V with the counter of the PXI 6251. However, I would like to know if it is possible to acquire pulses that are, for example 0-12V or 0-24V without damage the device. In other words, which is the voltage range for the counter input in a PXI 6251?
    thanking in advance,
    CJMV

    Hi,
    You will not be able to use the counter directly but you can setup an analog level trigger for your signals. This will create a pulse that isTTL compatible  for you everytime the signal crosses a particular level. Then you can route this into your counter and perform any counter measurements on it. An example is this is shown here where it sets up a level trigger to make frequency measurements.
    Alternatively you can purchase an industrial strength digital I/O board such as the USB-6525 but this does not include a counter.
    Please let me know if this works out for you.
    Message Edited by Abhinav T on 07-06-2007 05:20 AM
    Abhinav T.
    Applications Engineering
    National Instruments India
    LabVIEW Introduction Course - Six Hours
    Getting Started with NI-DAQmx
    Measurement Fundamentals

  • FP-CTR-500 don't read external count inputs

    I have 4 frequency signal inputs (0-10 KHz) connected to ports 2,3,4,5 of one FP-CTR-500, but I can't read any change on counting values, using FieldPoint Explorer. The module is OK, all the LEDs are green, including those four inputs, the firmware version of FP-1600 is 4.11 and software version of FieldPoint Explorer is 3.0.0 I can view a fix value of 53xx counts on each input, after a power up sequence (the external frequency is 8.2 KHz aprox.). What can I do?

    There are several reasons that you may be having problems with the count. First, if the channel LED is always on, then the signal wired into the FP-CTR-500 may not be going low enough (below 6 volts) for the module to see the falling and rising edges. Second, if the inputs have been configured with the 200 Hz low pass filter setting, you may be filtering out your signal. Third, if you have configured the count channels for internal count inputs (1 kHz Reference or 32 kHz Reference) or previous count channel, then the module is not looking at your actual wired signals. Fourth, If you have enabled the Gate Inputs (channels 8-11) for any of the counters, then the count will not increment while the gate is low. Fifth, if the channel is configured for Reset On Read fu
    nctionality, every time the FP-1600 polls the FP-CTR-500, the channel will reset itself.
    Regards,
    Aaron

  • Can any one suggest me how to use drawPixels method for 40 series devices

    Hello!
    I am using drawPixels method of DirectGraphics class the code I have written is :-
    Image offscreen=DirectUtils.createImage(width,height,0x00000000);// width and heights are integer value
    public final int MODEL=DirectGraphics.TYPE_INT_8888_ARGB ;
    Graphics offgra = offscreen.getGraphics();
    DirectGraphics directgraphics = DirectUtils.getDirectGraphics(offgra);
    directgraphics.drawPixels(imgData,false,0,width,0,0,width,height,0,MODEL); // imgData is a int array(int imgData[]) which contains required pixels of image.
    The above code is working fine with NOKIA 60 series device but when i use it with NOKIA 40 series device it gives java.lang.IllegalArgumentException.
    same time if i use :-
    directgraphics.drawPixels(imgData,false,0,width,0,0,width,height,0,DirectGraphics .TYPE_USHORT_4444_ARGB ) ;
    // imgData is a short array(short imgData[]) which contains required pixels of image. i have used different formet here.
    it works fine with 40 series device,
    can any one suggest me how to use drawPixels method for 40 series devices with format
    DirectGraphics .TYPE_INT_8888_ARGB .

    If Remote wipe is activated it can't be undone. And Once the Wipe is done, the device can nö longer be tracked.
    Sorry.

  • Synchroniz​e hardware timed buffered counter acquisitio​n with buffered analog input acquisitio​n

    LV7.1
    DAQmx
    PCI-6036E
    SC-2345
    Windows 2000
    Greetings.
    I am simply trying to synchronize AI readings with readings from one Counter.
    I am trying to perform buffered analog input synchronized with buffered counter acquisition.
    I'd like the AI acquistion to trigger the Counter acquistion.
    I'm currently setting the Sample Clock Source for the CI Cnt Edges Task to "Dev1/ai/SampleClock" but when I try and set the source for the "DAQmx Trigger" I can't seem to select one that works. I assumed that the source should be the "Dev1/ai/StartTrigger" but that produces and error as does selecting any of the PFI's.
    I'm new to DAQmx and didn't have any luck with the examples or what's been previously posted.
    Thanks for your help.
    Attachments:
    Initialization.jpg ‏84 KB

    Gentlemen-
    All of your initial help was great. I had some noise on my counter lines so switched from an E-Series card to a PCI-6259 M-series card in order to use the counter digital filters.
    Now I can't get a corellated buffered counter and buffered analog input acquistion to work. This same code worked fine on an E-series card but it doesn't on the M-series.
    I verified that the source and gate of the counter are working properly using the test panel and a external function generator.
    But when I run the attached code I get no data out of the "Counter 1D U32 NSamples", only an error saying that the timeout of the function was reached and no count data became available. Am I missing the specification of a another clock or something?
    The counters also work fine using the M-series example code "Count Digital Events (M-Series DAQmx) but this is not a buffered acquisition.
    Any help would be greatly appreciated.
    Steve
    Attachments:
    Sample_Code.jpg ‏136 KB

  • Synchroniz​ing two counter frequency inputs with multiple analog inputs

    Hello all,
    I'm fairly new to LabVIEW and I'm trying to collec​t data from multiple sources with synchronized tim​ing on the acquisition but I'm having trouble figu​ring it out. My problem is that I've got two count​er frequency inputs, one optical tachometer readin​g one pulse per revolution, and a max machinery fl​ow meter with a k factor of 12000. I can't seem to​ figure out how to sync the timing with my multiple analog inputs. I've be​en attempting to get the tachometer  to sync with ​the analog inputs first by following the example l​inked here. (https://decibel.ni.com/content/docs/DOC-10785) So far each time I run it I either get a timeout e​rror on the DAQmx read or a "Multiple sample clock​ pulses were detected" error (see attached image).  It seems if I slow the sampling rate way down to ​say 10 hz and ensure that the tachometer signal is​ over 800-1000 RPM (13-17 Hz) before starting the VI then the program will run without errors until ​the RPM drops below that threshold then the "Multi​ple sample clock pulses" error occurs.  The code is attached below.
    Does anyone know of a more effective way of syncin​g counter frequency inputs with analog inputs?  I'd like to have a VI that can show 0 RPM (and ev​entually 0 flow as well, but I think I need to fig​ure out the timing of one counter before I add ano​ther as it seems I can't have two counters in the ​same task). Any help on this would be greatly appr​eciated.
    LabVIEW version 13.0
    cDAQ-9178 Chassis with NI 9401 for the two counter inputs and NI 9205 for the analog inputs.
    Thanks!
    Richard
    Solved!
    Go to Solution.
    Attachments:
    SimpleDAQ.vi ‏44 KB
    LV_Error.JPG ‏31 KB

    Maybe third times the charm? 
    So I've finally got a good handle on why the VI is having problems at low RPM though I'm somewhat embarassed how long it took me to do that
    Because I have the counter time synced to my Analog input task if it doesn't see at least two pulses between the two clock pulses set by the analog input task I get the -201314 "Multiple sample clock pulses" error. This seems fine at first as it just sets a minimum RPM that I can measure and it's well below the area I'm interested in so no problems there.  I tried a simple error handler that would clear the error when it happend assuming the loop would keep iterating until the RPM went above that minimum at which point I would get a signal again. This is not the case, the read function just continues to spit out the -201314 error even after the RPM is back in the readable range. So then I tried adding two case structures so that when the error occured it would stop the task, clear the error, and then start the task again on the next loop iteration (Code Attached). This also doesn't work as the error shows up again on the stop task and then AGAIN on the start task on the next loop iteration. It seems this error is not actually being cleared and once it happens it stays with the task regardless of what the error cluster is carrying. 
    Anyone have any ideas?  The only solution I can think of is to just clear all tasks and recreate them each loop iteration until the RPM is readable again but that strikes me as a horribly clunky solution.
    Richard 
    Attachments:
    SimpleDAQ_1_Start Stop.vi ‏48 KB

Maybe you are looking for