Multiple channel DAQ-1200

I am trying to acquire data from to channels in differential mode. Though
the test panel shows the data as expected when I use a modified version of
SCANsingleBufSync, I seem to be acquiring the same data on both channels,
none corresponding. Any advice, please?

The SCAN_Op function is not supported by the 1200 Series boards. You should use the Lab_ISCAN_Op function instead.
Nick Wilson
Application Engineer
National Instruments
www.ni.com/ask

Similar Messages

  • How to do a single channel DAQ using NI-DAQ driver software with a PCI-MIO-16XE-10 card

    Hi,
    I would like to find out how I could do a simple one channel Data Acquisition from a signal generator using the NI-DAQ driver software with a PCI-MIO-16XE-10 card.
    I have written some test problem but even when the signal generator is turned on/off I get back some weird values.
    Here is my code.
    CString sFunctionName("");
    double volt[OUTPUT_POINTS*2];
    double out[OUTPUT_POINTS*2];
    short timebase, ready, code, stopped;
    unsigned short sampleInterval;
    int i, status, count=0;
    unsigned long update, points;
    short* ai_buffer;
    short output_ch_vector[16];
    int local_ITERATIONS = 2;
    SAFEARRAYBOUND bound[1];
    double dataItem = 9.9;
    long j;
    long k;
    double* pTheValues;
    LPTSTR lpsz_ErrMsg;
    // Initialise device
    status = Init_DA_Brds (deviceNumber, deviceNumberCode)
    Initializes the hardware and software states of a National Instruments
    DAQ device to its default state and returns a numeric device code that
    corresponds to the type of device initialized
    Init_DA_Brds(DEVICE, &code);
    // Check return code from Init_DA_Brds
    Code return should be 204: PCI-MIO-16XE-10.
    if (code < 0)
    CString sError;
    sError.Format("Code error: %d", code);
    if (code == -1)
    sError = sError + ": No device found";
    LPTSTR lpsz = new TCHAR[sError.GetLength()+1];
    _tcscpy(lpsz, sError);
    AfxMessageBox(lpsz);
    delete lpsz;
    return S_FALSE;
    // Allocate memory for analog output and input arrays
    //ao_buffer = new short[OUTPUT_POINTS*2];
    ai_buffer = new short[OUTPUT_POINTS];
    // Set double-buffering
    status = DAQ_DB_Config (deviceNumber, DBmode)
    Enables or disables double-buffered DAQ operations.
    status = DAQ_DB_Config(DEVICE, 1);
    if (status < 0 )
    sFunctionName = "DAQ_DB_Config";
    goto TidyUp;
    // Get the rate parameters
    status = DAQ_Rate (rate, units, timebase, sampleInterval)
    Converts a DAQ rate into the timebase and sample-interval
    values needed to produce the rate you want.
    status = DAQ_Rate(RATE, 0, &timebase, &sampleInterval);
    if (status < 0 )
    sFunctionName = "DAQ_Rate";
    goto TidyUp;
    // Setup scan
    status = SCAN_Setup (deviceNumber, numChans, chanVector, gainVector)
    Initializes circuitry for a scanned data acquisition operation.
    Initialization includes storing a table of the channel sequence
    and gain setting for each channel to be digitized
    status = SCAN_Setup(DEVICE, 1, ai_channels, gain);
    if (status < 0 )
    sFunctionName = "SCAN_Setup";
    goto TidyUp;
    status = SCAN_Start (deviceNumber, buffer, count, sampTimebase,
    sampInterval, scanTimebase, scanInterval)
    Initiates a multiple-channel scanned data acquisition operation,
    with or without interval scanning, and stores its input in an array
    status = SCAN_Start(DEVICE, ai_buffer, OUTPUT_POINTS, timebase, sampleInterval, timebase, 1000);
    if (status < 0 )
    sFunctionName = "SCAN_Start";
    goto TidyUp;
    while(count < local_ITERATIONS)
    // Check whether we are ready to input another half-buffer
    status = DAQ_DB_HalfReady(DEVICE, &ready, &stopped);
    if (status < 0 )
    sFunctionName = "DAQ_DB_HalfReady";
    goto TidyUp;
    if (ready == 1)
    status = DAQ_DB_Transfer(DEVICE, ai_buffer, &points, &stopped);
    if (status < 0 )
    sFunctionName = "DAQ_DB_Transfer";
    goto TidyUp;
    count++;
    // Clear the analog input
    status = DAQ_Clear (deviceNumber)
    Cancels the current DAQ operation
    (both single-channel and multiple-channel scanned) and reinitializes the DAQ circuitry.
    status = DAQ_Clear(DEVICE);
    if (status < 0 )
    sFunctionName = "DAQ_Clear";
    goto TidyUp;
    status = SCAN_Demux (buffer, count, numChans, numMuxBrds)
    Rearranges, or demultiplexes, data acquired by a SCAN operation
    into row-major order, that is, each row of the array holding the
    data corresponds to a scanned channel
    status = SCAN_Demux(ai_buffer, OUTPUT_POINTS * 2, 2, 0);
    if (status < 0 )
    sFunctionName = "SCAN_Demux";
    goto TidyUp;
    //Convert binary values to voltages (Doesn't actually take a reading from board)
    status = DAQ_VScale (deviceNumber, chan, gain, gainAdjust, offset, count, binArray, voltArray)
    Converts the values of an array of acquired binary data and the gain setting for that data
    to actual input voltages measured.
    status = DAQ_VScale (1, 0, 1, 1.0, 0.0, OUTPUT_POINTS , ai_buffer, volt);
    if (status < 0 )
    sFunctionName = "DAQ_VScale";
    goto TidyUp;

    Hello,
    Please take a look at lots of examples available at :
    1. www.ni.com >> NI Developer Zone >> Development Library >> Measurement Hardware
    2. C:\program files\national instruments\ni-daq\examples\visualc
    Sincerely,
    Sastry V.
    Applications Engineer
    National Instruments

  • What is the recommended way to do multiple channel, single point sampling for control with an NI PCI-6255 in RLP?

    Hello,
    I am writing a driver for the M-series NI PCI-6255 for QNX. I have downloaded the MHDDK and have all the examples working. I have also enhanced the examples to do interrupt handling (e.g. on AI_FIFO interrupt or DMA Ring Buffer interrupt). My ultimate goal is to write a driver that I can use for closed-loop control at 500 Hz using all 80 channels of the NI PCI-6255. I may also need to synchronize each scan with a NI PCIe-7841R card for which I've already written a driver. I want an interrupt-driven solution (be it programmed I/O on an interrupt or DMA that generates an interrupt) so that the CPU is available to other threads while the 80 analog inputs are being read (since it takes quite a while). I also want to minimize the number of interrupts. Basically, I will need to collect one sample from all 80 channels every 2 milliseconds.
    There are many different options available to do so, but what is the recommended technique for the NI PCI-6255 card? I tried using the AI FIFO interrupt without DMA, but it seems to interrupt as soon as any data is in the AI FIFO (i.e. not empty condition), rather than when all 80 channels are in the FIFO, so more interrupts are generated than necessary. I tried using DMA in Ring Buffer mode to collect a single sample of 80 channels and interrupting on the DMA Ring Buffer interrupt, which appears to work better except that this technique runs into problems if I cannot copy all the data out of the DMA buffer before the next AI scan begins (because the DMA will start overwriting the buffer as it is in ring buffer mode). If the DMA is not in ring buffer mode or I make the ring buffer larger than one 80-channel sample then I don't have a way to generate an interrupt when one sample has been acquired (which I need, because I'm doing control).
    I saw something in the documentation about a DMA Continue mode in which it looks like you can switch between two different buffers (by programming the Base Count/Address with a different address than the current address) automatically and thereby double-buffer the DMA but there is no real documentation or examples on this capability. However, I think it would work better than the Ring Buffer because I could interrupt on the DMA CONT flag presumably and be copying data out of one buffer while it is filling the other buffer.
    Another option would be DMA chaining, but again, I cannot find any information on these features specific to the NI DAQs.
    I tried interrupting on AI STOP figuring that I could get a single interrupt for each scan, but that doesn't appear to work as expected.
    I know that DAQmx on Windows has the ability to do such single sample, multiple channel tasks at a fixed rate so the hardware must support it.
    Any suggestions would be appreciated.
    Thanks.
    Daniel Madill

    Hello,
    The interrupt that will happen nearest the times that you need is the AI_Start_Interrupt in the Interrupt_A group. This interrupt will occur with each sample clock. By the second time this interrupt fires, the AI FIFO should have the samples from the first conversion. If it is easier to use programmed IO, you can read the samples out of the FIFO until you get all 80.
    Additionally, you can set the DMA to send samples as soon as the FIFO is no longer empty...instead of waiting for half full or full. This change will reduce latency for your control loop. You can set AI_FIFO_Mode in AI_Mode_3_Register to 0. By the second time this interrupt fires, you should be able to check how much data is in the DMA ring buffer and read the 80 samples when they are available. You can make the ring buffer larger than 80 samples if you see data getting overwritten.
    There is no interrupt associated with 80 samples being available in the FIFO or 80 samples being available/transferred by DMA to the host. X Series has much more flexibility with these interrupts.
    I hope this helps!
    Steven T.

  • Counter to measure frequency with multiple channels (Analog In/Out) in one vi

    Hi,
    I am using DAQ 6062E. I have multiple channels: an Analog In, Analog Out, Count Edges, and Count Frequencies. Without Count Frequency, the program works fine, I have defined a Sample Clock for each channel and then a common sampling rate. When I add Count frequency channel, I am not able anymore to use Sample Clock, since I get an error that Sample Clock can not be used, and if I change the Sample clock of the Count frequency to Implicit, then I can not connect different channels with a same sampling rate. In the attached file, if the Count Frequency is not connected to any Sample clock and sampling rate, the program works, but now I can not run the program for more than 5-10 Hz sampling rate, otherwise I get the error: 209802 “occurred at DAQmx wait for next sample clock, slow down the sample clock”. Does anybody know how to fix this problem?   
    Thanks a lot,
    Azadeh
    Attachments:
    multiple channel.jpg ‏117 KB

    Hi Otis,
    Thanks for looking at the problem. I ran just two counters in a same vi. I was not able to use the Sample Clock since I needed to define an external sample clock source. The vi is attached. I could run this vi fast (200Hz). So, I am not sure why when two counters are combined with AI/AO the rate is very slow. I have attached three vi(s). Just two counters, AI/AO/1 counter, and AI/AO/2 Counters vis. I am able to run the vis in 200 Hz except the vi with AI/AO/2 counters (maximum sampling rate 20Hz). I appreciate if you can look at it if I am missing something.
    Thanks,
    Azadeh
    Attachments:
    AI_AO_2 Counter.vi ‏153 KB
    2 Counter.vi ‏61 KB
    AI_AO_1 counter.vi ‏138 KB

  • Acquiring Analog Input from Multiple Channels in Labview

    Hello,
    i am working on a VI where i need to acquire signals from multiple channels in Labview using NI-9129.Initially i want to acquire contineous input signals (voltage and current) and display it on the graph.
    Having looked at forum and Labview examples i tried to make an initail VI but i am not sure if the setup i made needs any modification to serve my purpose.I am fairly new to Labview software.
    All i want is
    1.To acquire conteneously current and voltage 
    2.Display current and voltage individually on the graph.
    3.Perform some basic calculations like MAXIMUM,MINIMUM and AVERAGE values of voltage and current.
    4.Log the data into  excel file
    I have attached the VI i made so far.i need abit of advice if i am moving in the right direction or not.
    Thank You for having a look at my question.
    Attachments:
    Voltage-Current VI.vi ‏81 KB

    Engr_tech wrote:
    i think i already have the tdms for  data logging.as far as the tdms data logging is concerned,when i enable the logging mode to "read and log" the data logged inside the excel sheet would be seperate for current and voltage.?
    Is it practically possible to acquire data from 4 different channels and plot them.if yes,then am i right to assume that all i need is to modify the current VI for four channels having all of them in parallel.
    Yes, you are logging directly to a TDMS file.  This is definately the best route for data logging from a DAQ.  The currents and voltages will show up as different channels in the same group.
    To add more channels, just add them to your DAQmx task.  The logging will handle it with no issue.  Your calculations will also a little work to add the extra channels.  Same for the graphs, since you are using seperate charts.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Multiple channels acquisition and Number of samples per channel

    Hi,
    I'm a new labview user and I need some help in trasposing an old traditional NI-DAQ acquisition software in a NI-DAQ-mx one.
    I followed the tutorial (#4342) but I found a problem with Analogue 2D DBL Multiple Channels Multiple Samples DAQmx Read Vi.
    I'm trying to acquire 8 voltage signals from a NI-USB-6341 device. When the Number Of Samples Per Channel I set is below the number of channels (8), the software acquires only a number of channels equal to the number of samples per channel I set.
    Is that a normal behaviour?
    Thank you
    Daniele

    This is my code. The problem is the same with or without the code for the scan backlog indexing.
    Tomorrow I will try with the code from the example.
    Thank you
    Daniele
    Attachments:
    acq code.jpg ‏119 KB

  • DAQmx multichann​el read error. DAQmx believes there are multiple channels in my task.

    Hello,
    I recieve the appended error message when attempting to use DAQmx Read in my VI.  LabVIEW is telling me that I am attempting to read a single channel when my task is configured for multiple channels.  However, as you can see in the task configuration pane, that is not the case!  If I attempt to use DAQmx Read to generate a waveform with multiple channels, the VI executes without error but I do not want a 1D waveform array..  Any tips?
    Regards,
    Steve
    Solved!
    Go to Solution.
    Attachments:
    multi_chan_errr.JPG ‏42 KB
    channel_Vin.JPG ‏108 KB

    This is exactly why I ALLWAYS hide my DAQ Tasks inside a "Resource Module" 
    As I use the term a "Resource Module" is a special case Action Engine tha exposes only that subset of functionality that a specific project needs to take on a given resource external to LabVIEW.  And, it provides a single point of entry to access that resource by keeping private data private.  Had you used the technique here you would have had one vi to look at.  and, there likely would have been no "Reconfigure to add channel" method available to cause trouble.
    Jeff

  • Steps to create a VI to read multiple channels

    This is the first time I've used LabView.  I want to create a VI to be able to read viltages from multiple channels and output the value of each channel to individual numeric indicators in the VI.  I know how to read a single channel and I've created a task in DAQmax with multiple channels but how would I put that into a VI that will do what I need.
    Thanks,
    Albert

    Assuming you are using the DAQ Assistant and getting one sample per scan, then you just use the Split Signal and wire the outputs to your indicators.
    Message Edited by Dennis Knutson on 04-30-2007 09:49 PM
    Attachments:
    Split Signals.PNG ‏4 KB

  • Is there a way to acquire a set number of points from multiple channels?

    I had set up a VI to use AI ONE POINT.VI for multiple channels. Getting one data point for me is useless. I need, say, 100 data points from multiple channels at once. Is there a way to do that? Is there an example program I'm not seeing that already does that?
    Thanks!
    p.s. I have Labview 6.1

    Hello,
    Thank you for contacting National Instruments.
    As Dennis had mentioned, there are many example programs that ship with LabVIEW that demonstrate how to take measurements from multiple channels with either a finite or continuous amount of data to be acquired. In LabVIEW 6.1 you can find these examples by going to Help >> Find Examples >> Hardware Input and Output >> DAQ >> Analog Input >> General.
    In these examples, if you would like to sample multiple channels, you simply need to add the physical channels separated by a comma for example: 1,3,5 would sample channels one, three, and five. You can also use a colon to sample a sequence of channels for example: 4:6 would sample channels four, five, and six. This makes it easy for you to choose the chann
    els that you would like to sample without having to make any modifications to your code.
    Regards,
    Bill B.
    Applications Engineer
    National Instruments

  • Save multiple channels to binary?

    I am trying to save multiple channels of analog signals measured using DAQ express. I want to save the waveforms to binary and be able to read them back to re-create the waveforms at a later time. I have tried writing the waveforms to binary as dynamic data and as arrays. Neither seems to work. I am not sure if my problem is how I am saving/writing the data or how I am trying to read it back. What is the best form to use to write the data and how should I read it back?

    Hi VCUBME,
    LabVIEW is shipping with some good examples that show how to store your data effectively using binary files or datalog files. Please try the "Write Binary File.vi" with the "Read Binary File.vi" for an exaple of storing simple arrays. If you need to store more complex data as for example clusters, then refer to the "Write Datalog File Example.vi" and "Read Datalog File Example.vi".
    Have fun!
    - Philip Courtois, Thinkbot Solutions

  • Help! data manipulation for high speed streaming to disk from multiple boards and multiple channels

    I am using Labview 7.1 and have been trying to capture data from 12 channels simutaneously sampled at 2MS/s each and streaming to disk for up to a minute or more.  The hardware I am using is 2 x PXI 6133 S series boards with a MXI4 link to a Pentium D 2.8 Ghz machine with 2Gb ram.   I have 2 sata drives set up in a raid 0 configuration which should give me hard disk write speed faster or equal to the MXI-4 transfer speed. 
    I have first started off by using the example code "multi device sync - analog input- cont acquisition" which has enabled me to sync the two boards and sample at the required speed. 
    To stream the data to disk, I have first merged the data from each board  together to save it to one file.  I have tried using the storage vi's but I end up with a Daqmx read error (trying to read data that is no longer available).  I have played around with the read data size to the point that I either get a insufficient memory error, or I get the "trying to read data that is no longer available"  error.  I have also tried using the file IO blocks with some success and have found that I have been able to stream to disk only if I configure the daqmx read block to output the data in "raw 1D I16" format and plugging it into the file-write block.  In doing this, I have noticed that using  multiple channels on one daqmx read task, I will get all the channels in one 1D array rather than a 2D array organized by channels.  This makes it messy to read at the end of this, and I also don't want to write another vi to separate the channels, due to the high chance of getting the data mixed or messed up if I happen to change the number of channels on a board
    Is there a cleaner way of streaming this data to disk and keeping the channel data separated from each other?, and/or is there a better way to capture and handle the data I need? 
    I have attached the vi which I have got to consistantly work streaming to disk using the raw 1D I16 format.
    Thanks in advance to anyone who can help.
    Attachments:
    multidevicesync_analoginput_streamtodisk.vi ‏197 KB

    Hi,
    i can suggest following
    Refer to an example VI called as "High speed data logger.VI"  in conjunction with "High Speed data logger reader.vi" in Labview examples. Alhrough the logger might be in Tradiditional Daq format, it can be quite easily converted to Daq Mx format to store data in Binary (I32 format) . I have used this for many of my applications and i have found that the data retrieved does not have any "messups".
    Why not keep a seperate file for each card? This way, you do not have to load your application with extra process. You only have to acquire and save. After saving in Binbary format, you can retrive it offline, convert it to ascii format and merge the data files of various cards to get one consolidated ascii data file.
    hope this helps
    Regards
    Dev

  • Display multiple channels on waveform graph

    Hello,
    I would like to display multiple channels of acoustic data on one waveform graph. I currently have them separated and controlled by tabs inside a case Structure. I sometimes have run into DAQ error because I'm looking at 10 channels of 1/3 Octave data real-time. I woundering if I display all the channels on one waveform graph would I elimnate this error.
    can anyone help?

    Philip,
    I'm acquiring data at 44KHz sample rate and my frequency range is 0-20kHz (2 ni-4472 DAQ cards). Since I been using LV (off and on now for about a year) my application is still in the development stage. I tried including pics but could only include 1 at a time, so heres a copy of my vi for you. There is several things I'd like to figure out, I'm viewing data real-time and writing data to file. However, as I'm writing data to file I don't want the data to display in real-time (I think this is where my problem is). The other issued is when I've stopped writing data to file, the case structure outside the while loop opens the file and processed the data, however I'd like to see the data in the same display (waveform graph in while loop). Take look and give me thoughts.
    R/Scott
    Attachments:
    Submarine DAQ_writing reading OFFLINE_Rev2.vi ‏829 KB

  • DAQ_START FOR Multiple Channel Data

    Hi dears ;
    Normally we use Scan_start DAQ API to get multiple channel data but i want to get data using Daq_start for multiple channel
    but i dnot want to use this api like Scan_start by giving its second parameter -1 for all channels
    i want to use this api in seperate thread for each channel and i want to get the data from 8 channels simultaneously  using this api.
    plz send code in vc++.if the solution is not possible then send me alternate way.
    Detail:
    There are 8 threads they are running simultanously and every thread want to acquire data from their corresponding channel i.e thread one from channel one thread 2 from channel 2 and son...all the threads goes at the same to acquire the data and come back after one minute and this process continue untill quit the application
    please tell is possible or an altenate solution for this requirement.I donot use Scan_start to get the data of all the channels in one buffer i want to get the data of each channel in its own buffer.
                                     please tell as soon as possible
                                                                             thanks
                                                                                                    ajmal

    Hello ajmal,
    There are a couple reasons why your idea probably won't work.  First, it looks like you are using Traditional (legacy) NI-DAQ functions.  The Traditional NI-DAQ driver is not multi-thread capable.  Meaning that only one thread will be able to access the driver at a time.  Also, it is not possible with Traditional NI-DAQ or NI-DAQmx to have multiple analog input tasks running simultaneously.  Is there a particular reason that you don't want to read all the channels in the same task and separate the array into a different sub-arrays for each channel?
    -Alan A.

  • DAQmx Create Multiple Channels

    I have downloaded the NI Bridge-Continuous Input Program and am trying to modify it slightly to allow for multiple Wheatstone bridges to be connected. Currently, it has the option to connect to a single channel but not to acquire information from multiple channels simultaneously. All of the information in terms of shunt calibration, bridge information, and waveform graph output will remain the same. Ideally, the program will show the largest value in the final waveform graph but it's fine if it shows separate graphs for each of the two inputs. I have been playing around with it without much luck although if I start from scratch and use the DAQ assistant I am able to get the information without trouble. Any help would be much appreciated.
    Solved!
    Go to Solution.
    Attachments:
    Force Measurement.vi ‏96 KB

    Actually you are 99.99% of the way there.
    You just need 4 characters
    The Name filtering on that control is even properly set to allow multiple selections so just shift click the second channel
    Jeff

  • Reading multiple channels for multiple graphs

    Hey I am fairly new to Labview and am using it just temorarily. My project is to take in readings from a Gaussometer (X,Y, and Z axis) and graph them in read time. The Gaussometer outputs a DC Voltage equal to the gauss of the magnetic field. The X,Y,Z all come in on three differnet channels. Connected to a NI USB-6009
    I know I can use the Express> DAQ Assistant, however that outputs "Data" and I was hoping to use this in an Array. So I used the DDT to Array to convert it to the Array format that I needed (thanks to the forums for the help there). My only problem is that I don't know how to do this with multiple channels at the same time. But I have possibly been going about this all wrong.
    So I just wanted to know if I could get some help on how to read multiple channels and write to them to three different graphs in real time that would be of great help.

    Whether or not you use the Convert From Dynamic Data or the Split Signal, your data should be shown as soon as the DAQ Assistant returns. How you format the data is irrelevant. If the number of samples you request is greater than the sample rate, then it will take longer to acquire the data and there is nothing you can do about that except reduce the number of samples and acquire in a loop. You can append new data to old and display everything in a graph if you want.

Maybe you are looking for

  • Unable to boot after failed 10.10.2 update

    Hey all, I have an early 2008 24" 2.8GHz iMac with a 120GB Intel 320 SSD and 6GB RAM that I installed myself. I performed a clean install of Yosemite 10.10.0, and with the 10.10.1 update, there were no issues, and the machine ran fine. However, when

  • Problem in starting Managerment Server

    Hi, My Management Server got some problem. I can't start the Managerment Server Service. Got error message in oms.nohup as following, OEMCTL for Windows NT: Version 9.0.1.0.0 Copyright (c) 1998, 1999, 2000, 2001 Oracle Corporation. All rights reserve

  • SHD0 transaction variant for SM30: some FCODEs don't react

    Hi, I have a customizing table which contains data of kind "current settings", so it can be maintained on productiv systems without transport dialog. At the moment it can only be reached within the customizing (SPRO). it is maintained via SM30-dialog

  • Buying Microsoft Office 2004 on Ebay?

    I am looking into buying Microsoft Office 2004 for my MBP and I'm looking for the best deal. On my search, I have found a number of them on Ebay, selling for really cheap. Some of the MS Office software being sold is opened (and has apparently been u

  • Authentication & Authorization programming

    Hello all, I am in process to create a new application, My requirement here is that I want to create a reusable module that I want to use for authentication & authorization. Further I want that when ever a user logs-in, his/her privileges get stored