AT-MIO-16E-10 : Data Acquision

Hi
I am using the above card for acquiring data simultaneously on 4 channels. I have written both labview as well as Visual basic codes for this. I see that the maximum sampling rate given for the card (100 kS/s) is shared between the channels - I get maximum of 25 kS/s. I am acquiring photodiode signals detecting laser pulses with repetition rates ranging from 10 Hz to 100 kHz. I want to acquire 500 scans (points) per each laser shot and this, along with the maximum allowed sampling rate restricts my signal frequency to 50 Hz. I am using software triggering (stop) with Channel 4. I can change the number of pulses to acquire (with 50 Hz or lower)
I have the following problems:
1) Even with 50 Hz or 25 Hz signal repitition rate, the program (Visual Basic) does not acquire all the pulses I select.
2)It often gives Error :-10846 suggesting that I should either increase the buffer size, reduce the rep.rate, reduce the acquisition rate or reduce the tasks that my PC is undertaking. I am using a P-II with 64MB RAM. I know it is old :-) I tried with changing buffer size but it did not work. I cannot reduce the repetition rate or acquision rate for my application.
3) the labview program does not give an error but it also does not acquire all the pulses I select.
4) The problem gets worse when I try to write the data to a file.
I am using the acquisition program (both VB and labview) to simulate an oscilloscope. Is this causing the trouble? I am attaching my codes here. The file-writing part in VB program is commented out.
Thanks for your help
Rajeev
Attachments:
acquision.zip ‏18 KB

One possible way of getting around the File I/O problem in LabVIEW could be by having two loops running in parallel: one will do the data acquisition and write to a Queue structure, and the other loop will get information from the queue and write to the file. That way the dataflow in the acquisition loop will not be dependent on the file I/O functions. This is the recommended method in LabVIEW RT for doing data acquisition with file I/O, to enhance determinism, so I feel it can be a good programming tip in this case.
I hope that helps!
GValdes

Similar Messages

  • Data acquisition and generation with PCI-MIO-16E-4 card help!!!!

    Hello,
    I'm using a PCI-MIO-16E-4 card with labview7 (in using DAQmx)and I
    would like to draw a frequency response.
    My problem is: my program can run correctly in low frequency but, it
    can't work correctly in high frequency (after 2KHz the signal is
    false).
    For verifying my program: I only try to generate and acquire a sweep
    sine. I constate after 2KHz the sine I read dosn't resemble to a sine
    I wrote.
    Can you say me where is the problem?
    Thank you.
    Le Trong Thao.

    "Dr. Imad" wrote in message news:<[email protected]>...
    > my understanding is that you are generating a sine wave (on one of the
    > anlogoutput channels) and you are trying to read the signal.
    > Since you can verify the signal at low frequency, but not at high
    > frequency, it looks like you should increase the scan rate of the data
    > acquistion (if you can, set it to 10 times the signal frequency)
    > You can also use an oscilloscope to verify the signal is what you
    > really generated.
    Thank you for your response.
    I've tried to do it, and I've tried several other possibilities but it
    doesn't work correctly.
    In fact, I think the problem is in my program. Do you have a program
    that works correctly? I f
    ound examples in the help but they don't run
    correctly.
    Le Trong Thao.

  • How to reduce reading and recording data time/ Visual C++, PCI 6024E and PCI-MIO-16E?

    Right now I am working on a data communication programme. The time of reading digital signal and recording data is more than I expected, which is about 100 microsecond. I need to reduce the time. The software I am using is Visual C++ 6.0. I use two DAQ boards, which are PCI-6024E and PCI-MIO-16E. I have set the priority of Visual C++ to be realtime by task manager. The operating systme is Windows XP.
    I am wondering how to set the interrupt of reading or writing data to be the highest and stop any other kind of interrupt.
    Thanks in advance!

    The primary limitation you will encounter when trying to do high speed
    digital I/O using your E-Series hardware is that the digital lines are
    all software timed.  This means that for each and every digital
    read it is necessary for your software to issue a command to your
    hardware, read a single point, then receive the response from the
    board.  This prevents you from performing digital operations at
    very high speed.  In general, I would say that 100 microseconds is
    a very good response using software-timed digital I/O on a Windows
    computer.
    It is difficult to make a good recommendation without more detail about
    what you are trying to do.  You may need to consider switching to
    a Real-Time operating system, or upgrading your DAQ hardware to a board
    that will allow you to time your digital acquisitions on the board
    itself.  These devices, such as the m-Series DAQ or the PCI-653x
    series, would allow you to use hardware triggers for your digital
    acquisitions, change detection, and buffered data acquisitions to
    reduce the software overhead involved in a rapid acquisition.

  • Upgrade win98/LV4 to win2000/LV6: Speed problems with AT-MIO-16E

    I found that in Windows 2000 with Labview 6 the readout rate of our AT-MIO-16E board drops to approx. 2.5 kHz max. (before approx. 11.5 kHz in Windows 98 with Labview 4 ) using the 'AI single scan' VI (see attached scheme for the readout routine). I don't know if this is due to Win2000 or due to the new NI-DAQ drivers, but for our timing-critical application this is unacceptable.
    Are there any suggestions about how to accellerate the readout of the AT-MIO-16E board?
    With best thanks,
    Thomas Schultz
    Attachments:
    AT-MIO-16E_DAQ_example.bmp ‏161 KB

    Hi Thomas,
    Here is another idea I can give but will be of limited use in chasing it down.
    Make sure the board is using DMA.
    DMA is alot faster than CPU based data transfers.
    Maybe durring the softeware conversion, the board got installed without DMA enabled.
    Just an idea.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • AT-MIO-16E-10 Iwant - but it shows a AT-AO-10

    I am using a AT-MIO-16E-10 for daq. But in my data neighborhoud - it is showing me a AT-AO-10 - what should i do? How can I change it? I use a NT sytem on a pentium 2 and LabView 5.1. I can't insert the daq-card - the computer shows just - the AT-AO-10 model.

    It seems to be that the nidaq version that you have in your computer is corrupted, or there is something weird in the installation procedure. I will suggest you to uninstall everything and reinstall everything.
    The steps I would recommend you to do are these:
    1.- Uninstall the nidaq driver that you have by going to Control Panel>>Add/Remove Programs.
    2.- Remove the board from the Device Manger.If there is another NI board which is in your system, remove it, too.
    3.- Turn off the computer, and take off your board.
    4.- Install the nidaq driver again (either nidaq 6.9.1 or nidaq 6.9.2), you can download it in the following FTP site: ftp://ftp.ni.com/support/daq/pc/ni-daq/. Make sure you also download the supporting file for your LV Version 5.1. The install.t
    xt file describes the instructions to install the driver.
    5.- Follow the instructions to install the board that are in the following link: http://www.ni.com/support/install/
    Hope these steps help you solve your issue.
    Aguila

  • Is it possible to start a PCI4472 and a PCI-MIO-16E-1 simultaneously using an analog trigger (with pre-trigger)?

    I would like to start several PCI 4472 and a PCI-MIO-16E-1 simultaneously. All boards are connected via a RTSI cable.
    My program works fine if I use software trigger, or an analog trigger from a PCI4472 channel. However, the analog trigger works only when I set pre-trigger (or pre-scan) to 0.
    Is it possible to start a PCI4472 and a PCI-MIO-16E-1 simultaneously using an analog trigger (with pre-trigger)?
    Thanks.
    Ian Ren

    Hi, Bill
    I think it is possible to set more than 38 pre-trigger scans on a single 4472 card. I've done this before. You can verify this by running the Labview example "Acquire N - Multi-Analog Hardware Trig.vi" which comes with LabView.
    What I try to do but without success/luck so far is to start data acquisitions of several 4472 cards and a PCI-MIO-16E-1 card using an anlog trigger (with pre-trigger).
    Thanks for your help.
    Ian

  • How can I wire two PWM outputs of Accelerometer into PCI-MIO-16E boad with SC-2043-SG?

    I have been using counter/timer pin since the accelerometer (ADXL202AE, Analog Device) provides about 550Hz PWM signal. The purpose of the project is:
    - To acquire PWM signals with Full cycle(ms) and Posity duty cycle(ms) generated in Accelerometer.
    - To convert the cycles into acceleration value.
    By using counte/timer(GPCTR0_Source) and Trigger(Trig1) on SC-2043-SG board, the signal was obtained.
    However, after converting the PWM signal to acceleration value and plotting with labview on-line, the sampling rate was pretty low (26-28samples/sec).
    Then, I began to doubt that there is a wrong wire connection. Even though I am using one counter/timer pin, the sampling rate
    was low. The purpose of using the acceleration was to obtain two output using two counter/timer pins.
    Could anyone help me wire pins and solve the problem?
    GINO.

    Gino,
    You should definitely be getting many more values in your buffer. You should actually be getting 500,000 values every second because a measurement is being taken for every pulse. I found a couple knowledgebases that describe error -10920 and how to remedy it. One is pasted below and the other can be found through the link.
    But I'm not sure if you're going to be able to fix this problem because you're measuring pulses at a very high rate. What is happening is every time a pulse width measurement is taken it is put into an onboard (DAQ board) FIFO buffer that is 9 samples long. The computer then reads these samples out of the FIFO and into an a buffer that you can see in LabVIEW. I think the FIFO is filling up too fast and the computer is not able to read the data out fast enough. Therefore you are losing samples because they are being overwritten. This is all dependent on your system.
    Here are some benchmarks for pulse measurements:
    The following numbers were derived from a Gateway with 128 MB-RAM and an Athlon 700 for ONE counter of the PCI-6602. The number of counters you are using will affect these numbers.
    Finite Buffer
    Buff Period - 7.25 MHz
    Buff Pulse Width - 7.25 MHz
    Buff Semi-Period - 3.35 MHz
    Continuous Buffer
    Buff Period - 250 kHz
    Buff Pulse Width - 250 kHz
    Buff Semi-Period - 140 kHz
    You should still be getting many more samples than 26 though. Try using this example with a very slow frequency pulse to make sure it operates correctly. Then start speeding up the pulse and determine when you get error -10920.
    Here is an internal knowledgebase that may help you:
    Title:
    After Long Periods of Acquisition with AI and Counters, a -10920 Error Occurs
    Problem:
    A customer has a PCI-MIO-16E-4 and his application is acquiring analog input signals and performing event counting with the buffered event counting mode. The problem is that the buffered event counting is at some arbitrary amount of time (e.g., after 2 days) getting an error with the number -10920. The questions are:
    1. Why is he getting this error?
    2. Do you know how big the FIFO is for this buffered event counting?
    3. When he shares a DMA channel with the floppy controller, how can we make sure they use separate DMA channels?
    Solution :
    Here are the answers to the above questions:
    1. There is probably just some noise on the signal line coming in at some point. The STC is VERY sensitive, so if there is any fast glitching, it will attempt to transfer all of these. This can also happen if the signal does not ramp up fast enough, resulting in double-triggering in the middle region. Use a filter, or a Schmidt trigger*, to clean up the signals. Another suggestion is to use the PCI-6602 with filtering.
    2. There is no FIFO used for the counters. The mMite has its own FIFO, but it is only about 9 samples long.
    3. PCI does not "share" DMA channels. It may technically be the same DMA channel number, but this is just for reference. PCI cards use Bus Mastering. With Bus Mastering, the operating system gives up control of the PCI bus so that the hardware (in this case, our DAQ board) can handle its own data streaming, eliminating the extra step of having the OS monitor the transfers. The DMA channel numbers are just the "channels" that are supported by the mMite chip. You can have 3 PCI cards in the PC, each with DMA 1, 2, 3, and none of them will actually be sharing any resources.
    And another knowledgebase about error -10920
    http://digital.ni.com/public.nsf/websearch/8FB9091CB9BB452B8525642000554799?OpenDocument
    Hopefully this all helps,
    Erick D.
    NI Applications Engineer

  • Buffer of PCI-MIO-16E-1 acquisition card

    I am using a PCI-MIO-16E-1 acquisition card, and in the manual it says that it has a FIFO buffer of 512 samples. Is this the total buffer of my card? (I guess it should be larger). If I take more samples than can fit in the buffer in a single acquisition, what happens to the extra samples acquired? Are they stored in the computer memory?
    Thank you

    The PCI-MIO-16E-1 actually has a FIFO buffer size of 2048 samples. The hardware buffer size is not a limitation of how many samples you can read at a time. FIFOs are often used on DAQ devices to temporarily store incoming or outgoing data until that data can be read or written. For example, an analog input FIFO stores the results of A/D conversions until the data can be read into system memory.
    So, the FIFO on the device will just hold the data temporarily until the computer can transfer the data to computer memory. FYI: When you programmatically set the buffer size in your application, you are setting the software buffer size in computer memory and that has nothing to do with the FIFO size. You don't have to worry about the FIFO within your program. I hope th
    is helps.
    Regards,
    Todd D.
    Applications Engineer
    National Instruments

  • Set up acquisition at regular interval on ATI-MIO-16E-4

    I use labview 6.01 with an ATI-MIO-16E-4 and a scxi 1100 to aquire temperature readings. When I use AI aquire waveforms I can set the time at which I get data in a while loop at let say every second or every two seconds. When I use Ai Config, AI Start and after AI read in a while loop, I don't have control on the read time interval. I can I control that time?

    Are you wanting to set the hardware time interval (actual time between hardware scans) or the time interval between when you are actually returning the data to LabVIEW (time between AI Read VIs within while loop)? Either way, you will be able control these times within your program.
    For changing the hardware time interval
    --The AI Start VI has a scan rate input. If you are wanting to decrease the rate the hardware is acquiring data you can decrease the scan rate.
    For changing the time between AI Read VIs in while loop
    --You can implement a LabVIEW wait function within the while loop. This will create a delay and increase the time between calls of the AI Read VIs within the loop. There are two wait functions you could use: Wait (ms) or Wait Until Next ms Mu
    ltiple. Both functions are within the Time and Dialog supalette.
    I hope this helps.
    Regards,
    Todd D.
    NI Applications Engineer

  • AT MIO 16E 10 too slow

    i find that AT MIO 16E 10 ISA slot make my computere too slow (200MHz) what speed of CPU should be used and how much RAM should be used to maintain good speed

    Hello;
    There isn't a specific CPU speed as well as RAM that we benchmark as the optimal configuration.
    However, since the data transfer from the on board memory to the computer memory is done through DMA channels, the faster the CPU of your computer the better the overall performance is.
    Regards
    Filipe A.
    Applications Engineer
    National Instruments

  • Delphi+At-MIO-16E-10 multithreading, also board identification

    Hi Everyone,
    I've got two questions to ask....
    Has anyone done multithreading using Delphi to control a
    nidaq card?
    Basically, I want to know if it feasible to
    output a function to an analogue output channel using
    WFM_op, for example, in one thread, while doing data
    acquisition in another thread (using scan_op).
    Does anyone know of the limitations here?
    Furthermore, since we sometime use multiple cards in the same
    computer, if would be useful if we could call a routine to
    identify which cards are present (and assigned devicenumbers)
    and what board type they are. Note that I don't want to change
    the board addresses, just determine which ones are present, and set up
    the code depending on
    which board the user chooses.
    I haven't come across a function that can does these things and I'd
    appreciate
    any advice.
    Regards,
    Roland
    Dr. Roland I. Keir Phone: +61 8 8302 3252 (Lab) / +61 8 8302
    3024 (Office)
    School of Physics and Electronic Systems Engineering Fax: +61 8
    8302 3389
    University of South Australia E-mail:
    [email protected]
    The Levels Campus, Mawson Lakes, SA 5095
    www.laser.unisa.edu.au

    Hi Walter,
    From your comments it looks like it will be possible.
    Many thanks for your advice, you've saved me
    a great deal of time.
    Cheers,
    Roland
    "Walter van Iterson" wrote in message
    news:[email protected]..
    >
    > Hi Roland,
    >
    > >I've got two questions to ask....
    > >Has anyone done multithreading using Delphi to control a
    > >nidaq card?
    >
    > Not in Delphi, in Java. No problems running change detection
    > together with digital in- and output (on a 6527 card). Ni-Daq has no
    > problems with multithreading. I don't know how the AT-MIO-16E board
    > behaves.
    >
    > >Furthermore, since we sometime use multiple cards in the same
    > >computer, if would be useful if we could call a routine to
    > >identify which cards are present
    (and assigned devicenumbers)
    > >and what board type they are.
    >
    > You can poll each device number (1 to 16) using Get_DAQ_Device_Info
    > with infoType = ND_DEVICE_TYPE_CODE. It returns an infoValue, which
    > is an identifier for the device type. It's ugly, but it works. See the
    NI-Daq
    > help
    > on Get_Daq_Device_Info and Init_DA_Brds.
    >
    > Hope it helps,
    > Walter van Iterson
    >

  • AT-MIO-16E-10 Gate signal,how can i configure it as in input or as an output ?

    Hi there ! I have AT-MIO-16E-10 board and i want to control a counter (the GPCTR0 counter of the bord) to count up depending on the gate signal.Now i have the following missunderstanding.I've read in the AT-MIO-16E-10 manual that the gate signal can be treated eather as an input or as an output.So i want to control my counter (to count up) until a signal that comes on my gate counter's entry changes his states from 1 to 0 (to reset the counter) and then when it changes his states back to 1 form 0 i.e a transition from 0 to 1 to start counting again from zero.Now here i have 2 questions : 1. How can i config the gate signal as an input signal (in the AT-MIO-16E-10 manual it sais that the signa
    l can be treated as an input or output and it's known if i configure the port as an output and if i came with an external signal to the gate i can damage the board if the signal it's set to zero ) 2. What it's the default state of the gate signal ?
    Any vi files would be very usefully,Thank you very much for reading this and i'll be waiting for your answers as quick as possible.

    Antonios,
    The shipping example VI Count Edges does what you describe.
    >Quoted from VI Description
    Count Edges (DAQ-STC).vi
    DESCRIPTION:
    This VI counts rising edges, using an STC based device (e.g.: E-series). The counter increments its event count everytime a pulse comes into its source input. A gate signal can be added such that if a low signal occurs on the gate, then the counter will pause (scroll the front panel left to access the gate settings). The current value of the counter is read continuously in the while loop, until the Stop button is clicked or an error occurs.
    I/O CONNECTIONS:
    Connect the gating signal, if any, to the gate input of the selected counter.
    If you selected the Source Selection to be "PFI line", connect your event count base signal to the PFI line indicated by "Source PFI line number used". (If you selected "Internal Timebase", no source connection is necessary.)
    NOTE: For actual I/O pin numbers, please refer to your hardware user manual.
    INSTRUCTIONS:
    1. Enter the device and counter you want use.
    2. Make your Source selections, as desired.
    3. Optional controls are located on the left side of the front panel. You will have to use your scroll bar to reach these.
    4. Connect your signals as described below in I/O CONNECTIONS.
    5. Run the VI.
    >End quote
    If you look inside the Diagram of the Count Edges VI you will see a subVI, Group Config CTR, that has a constant set to "simple event counting." This configures the gate in the correct manner. You have 17 or so options to choose from (right-click to see the other choices). Each choice configures the counters as needed. No special effort is needed on your part.
    If you really must know more details double-click on the Group Config CTR icon. On the Diagram of that VI is a Call Library function. Right-Click that and see more ugly details that you don't need to know. The functions of the counters are fully implemented by the options already available, so you don't need to know how the details, but it is intersting.
    Hints:
    Keep in mind that the counters require TTL level signals. 0V to 5V. Limit the current to the level the DAQ board can handle. You will false trip the counter if your low is higher than 0.8V. I have had problems with this when using noisy signals.
    Also make sure you debounce any switches you wire to the counters. It is instructive to hook up an unbounced switch to the counter inputs and see just how many false trips they can generate!
    Mike

  • Question about setup_MITE in the PCI-MIO-16E-1

    I have a quick question about setup_MITE in the PCI-MIO-16E-1. In one of the manuals, it states that if you're using Dell Optiplex GX series for our hardware configuration, is it true we need to re-write the MITE functions to correlate with the hardware? Please if you can clarify what this means, I would really appreciate it. Thank you in advance.

    National Instruments is starting a new newsgroup to provide a forum for customers to discuss register level programming issues and ask questions. This newsgroup is not a direct support channel for register level programming, but may be monitored by National Instruments engineers. Please post you question with additional detail in:
    natinst.public.daq.driver-development.general
    Christian
    Christian Loew, CLA
    Principal Systems Engineer, National Instruments
    Please tip your answer providers with kudos.
    Any attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system,
    or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject
    to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense

  • Pulse Train Generation using PCI-MIO-16E-4

    I need to generate pulse trains of changing pulse widths using PCI-MIO-16E-4 daq card using Igor Pro.
    I have tried to use the CTR functions (but always keep getting errors and it doesn't work). I also used the general purpose counters (GPCTR functions) but cannot visualise them on a CRO. If someone can help in regards to the programming aspect, it will be greatly appreciated.
    Thanks
    Vakul

    Hi Vakul,
    Some questions that might help me to get you a solution.
    Are you using Traditional DAQ, or DAQmx and which versions are you using?
    What operating system are you running?
    When you say you can't visualize them on CRO, I assume that you are hooking the counter out to a cathode ray oscilloscope and can't see the pulse train?
    Are you going to need more than two different pulse widths for your pulse train?
    There are several online knowledge bases describing how to change the frequency of a pulse train on the fly.
    This link explains how to use software to create a new pulse width.
    http://digital.ni.com/public.nsf/websearch/7B1B0427C39FE33086256CEE00752133?OpenDocument
    This link discusses using frequency shift keying, which will only allow you to have 2 different pulse widths.
    http://digital.ni.com/public.nsf/websearch/EC1F089252F33B248625696E006FB6FC?OpenDocument
    I assume that you are writing this program to compile in Igor Pro using C. I can help you with the C code development, but don't know anything about the Igor Pro API.
    Please get back to me about those questions and let me know if you need further help.
    Michael Denton

  • PWM signal from Accelerometer by using DIO of PIC-MIO-16E-4

    I am a new beginner to use digital signal acqusition. The accelrometer send the pulse width modualated signal and I need to use DIO line instead of counter. I wonder how I can measure the pulse width, + duty, and -duty.

    Hi Gino,
    If you plan to use the digital inputs of the PCI-MIO-16E-4 then you will be limited to software timing since the digital inputs are asynchronous and dependent on software calls. This means your fastest rates are roughly 100-1000Hz (computer dependent). Since you also want to sample a period at least 5 to 10 times so that you can get a somewhat accurate representation of the duty cycle and the pulse width, you are further limited to the signal being slower than 10-200Hz.
    However, if this is acceptable then you only need to create a loop and sample your digital inputs at the desired loop speed and perform calculations to determine the duty cycle.
    How you would determine the pulse width and duty cycle is everytime you take a digital measureme
    nt you also use "Count Ticks (ms).vi" in LabView to count the time between each call to this VI. You simply add these times while the reading is high and you have the high dutycycle. Do the same for low and then add the two together.
    Hope that helps.
    Ron

Maybe you are looking for

  • How do i show descriptions instead of dimension values at presentations ?

    We are facing a problem that could be a BIBeans problem or could be an OLAP problem, please inform if to change forum: We are using jdev 903/BIB903 accessing an AW created at Oracle OLAP 9205 with AWM. All our dimensions were created at OWB 10g and d

  • Running two wireless networks simultaneously

    I am running two independent 802.11n 5GHz networks simutaneously. Each has a unique SSID. The first network is using channels 36 & 40 and the second network is using channels 44 & 48. When the first network is transmitting data and the second network

  • Specs say 1000 cycles- REAL???

    Specs say 1000 cycles on the MBP mid-2009 battery- My MBP mid-2009 has 380, am I OK with this battery for a while? OR, do I need to figure out how to replace it?? I'm not having any trouble other than shorter and shorter battery life off a power supp

  • How to get UDF's fieldid and UDK's keyid

    Hi I want to modify or delete UDF and UDK using code.When I use object's GetByKey method, there is another parameter(fieldid or keyid). But now I just know table name and fieldname and keyname. Could you please tell me how to get fieldid and keyid us

  • SSL load balancing requirements

    Hi all I'm fairly new to CSS so apologies if this is an aobvious question... Do I need an ssl module to load balance https requests using certificates on the servers themselves, simple round robin, two web servers, setup regards nigel