Multiple channels reading on SCXI 1600

Hi,
I'm trying to implement reading of 64 AI channels using
SCXI-1600 and two SCXI-1100 modules.
All channels have to be read once or twice per second.
Reading will be initiated by software.
I thought this should be implemented by
DAQmxCfgImplicitTiming(TaskHandle, DAQmx_Val_OnDemand,1);
but i got the following message in this call:
ERROR: Requested value is not a supported value for this property.
Property: DAQmx_SampTimingType
You Have Requested: DAQmx_Val_Implicit
You Can Select: DAQmx_Val_SampClk, DAQmx_Val_OnDemand
Status Code: -200077
If I use another timing:
DAQmxCfgSampClkTiming(TaskHandle,'',100.0,DAQmx_Va​l_Rising,DAQmx_Val_ContSamps,100);
everything is fine, but sometimes I got the error:
ERROR: Attempted to read samples that are no longer available. The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying a fixed number of samples to read instead of reading all available samples might correct the problem.
Property: DAQmx_Read_RelativeTo
Corresponding Value: DAQmx_Val_CurrReadPos
Property: DAQmx_Read_Offset
Corresponding Value:
Status Code: -200279
After that task is destroyed.
How can I use Implicit Timing with acquiring readings
by software?
Thanks,
Peter.

Peter,
I am a little confused, in the DAQmx C Reference Help that installs in the National Instruments->NI-DAQ folder, it lists the second input of DAQmxCfgImplicitTiming as "Sample Mode" with the options of "DAQmx_Val_FiniteSamps", "DAQmx_Val_ContSamps", and "DAQmx_Val_HWTimedSinglePoint".  Make sure you are calling the right function and passing the right type of inputs.  The C Reference help is located in the Start Menu->Programs->National Instruments->NI-DAQ folder.  Also make sure you are running the latest NI-DAQmx driver (version 7.5) available on the web.  Other than that, it sounds like since the software will be handling the sampling, you would want On Demand as your option.  Best of luck, let us know what else we can do to help.
Erik F
NI - Applications Engineer

Similar Messages

  • How to Optimize SCXI 1600 for speed with Thermocouples

    I'm working on a data acquisition system for my engineering firm and I'm trying to find a way to use our new thermocouple system as fast as possible.
    The requirements for the DAQ process are:
    Read 32 voltage channels from a PCI-6071E card
    Read 32 thermocouple channels from a SCXI-1600 with an 1102C accessory
    Complete the entire operation in under 5ms (this is so other parts of the program can respond to the incoming data quickly and trigger safety protocols if necessary)
    Using LabVIEW 7.1 and MAX 4.4, I've got the voltage channels working to my satisfaction (with traditional DAQ VIs) and the rep rates I measure when I run the program are around 1ms (I do this by putting the DAQ code in a loop and reading the millisecond timer every time through that loop, then calculating the average time between loop executions).  I have been trying to get similar performance from the thermocouple channels using DAQ Assistant and DAQmx.  Some of the problems I've encountered are:
    Very slow rep rates with 1-sample and N-sample acquisition modes (300-500ms)
    Good rep rates when I switch to continuous mode, but then I get buffer overflow error -200279.
    When I attempted to correct that error by setting the DAQmx buffer to overwrite unread data and only read the most recent sample, the calculated sample rate went to 20ms.  It was around 8ms when I left the error unhandled and continued acquisition.
    At this point I'm out of ideas and am just looking for something to try and optimize the DAQ process for speed, as much as is possible.
    Thank you for any help.

    I guess I would be interested in checking out your code to see if there is anything I can recommend on changing.  However, I do have a few general Ideas of how to improve your performance.  These recommendations are purely based on what you could be doing to slow down the speed of the program because I am not sure how exactly you have everything set up.  
    -Are you setting up the task and closing the task each time that you read from your daq card?  the way to get around this is to only have the DAQmx read vi in the while loop so you do not have time alloted for opening and closing the task each time.
    -Try using a Producer/Consumer architecture.  This architecture uses queues and splits the aquisition with the post processing.  Here is a link to how to set up this architecture and some information on when to use it.
    Application Design Patterns: Producer/Consumer
    http://zone.ni.com/devzone/cda/tut/p/id/3023 
    Message Edited by Jordan F on 02-06-2009 04:35 PM
    Regards,
    Jordan F
    National Instruments

  • How can I read channels from different SCXI modules simultaneu​sly?

    Hello.
    I have a system that consists in:
    - Three E-series DAQ boards (PCI-6034, PCI-6052 & PCI-MIO-16E)
    - One SCXI chassis (SCXI 1001)
    - 4 SCXI modules for voltage measurement connected to PCI MIO 16E
    - One SCXI module for strain gauges connected to PCI 6034
    - One SCXI module for accelerometers connected to PCI 6052
    I have to develop a software application that reads all the channels at the same time or at least in the same program cycle. I have tried to create only one DAQmx task containing all the channels, although they belong to different DAQ boards (and SCXI modules, of course), but it seems to be impossible to use channels from different devices in the same task.
    So I have created three different DAQmx tasks, one for each device and its channels. I have used one "DAQmx Start Task" VI for each task at the beggining of the loop in order to use them independently, reading their channels inside the loop in every program cycle.
    When I have run the program I have get the following error:
    "ERROR -200619 ocurred at DAQmx Start Task.vi
    Chassis cannot be used for more than one scanning operation at the same time.
    Do only one scanning operation or combine multiple scanning operations into a single operation."
    What is the problem? How can I combine these multiple scanning operations? What can I do to read all channels at the same time?
    Thanks.

    Hello pablomendana,
    it's ok that you got an error when trying to use more than one device on the same task. According to the setup you have, I agree that 3 tasks should be put in place.
    The key question I have is... Have you configured manually at MAX the SG and accel. modules to be in Parallel mode?
    I would not expect the error you get if they are in parallel mode (in which you could even read directly from the DAQ board, using DAQ device channels instead of SCXI channels).
    Unfortunately, I haven't been able to setup a system similar to yours, but I would like to know more details on what you've tried so far.
    Also, I recommend you that if still need help on setting up the system, use NI's SSP program to get support from your local NI Application Engineering organization, as this will be faster than the forum.
    Regards,
    Jorge M.

  • Reading Data from SCXI 1600

    Hi Experts,
    I am new to this SCXI Interfacing. Kindly help me in the context
    I am developing an application which is going to be use  SCXI 1125 module and SCXI 1600 controller.In the application I want to allow the user to configure various Task in the front panel. 
    What are the controls needed in the front panel to allow the user to configure Task 
    How to read the data from SCXI 1600,
    How to differentiate eight channel data coming from SCXI 1125 thro SCXI 1600
    Thanks in advance
    Solved!
    Go to Solution.

    True, you cannot simulate the SCXI-1600. This means you will not be able to run your code without the hardware. For simulation purposes you can, however, use another device that would function in a similar manner to the SCXI-1600 in terms of triggering, resolution, and sampling rate.
    As for the programming, you would use DAQmx as I had mentioned. There are no examples that are specific to the SCXI-1600, but you don't really need them. The SCXI-1600 is fundamentally a data acquisition module that happens to be in a SCXI form factor with a USB connection. As far as your software is concerned you will use DAQmx to read data from it. So, take a look at the DAQmx examples that gather data from data acquisition devices.
    Your task will define how many channels you will be reading. Since you are reading a mixture of measurements (temperature, pressure, and possibly just plain voltages) you will need to decide whether to create separate tasks for each of these measurements that are configured to be specific to that measurement type, or to create one task that simply reads all unscaled channel values (i.e. raw voltages) and then you scale the values in your code. If you open the Example Finder and navigate the tree to Hardware Input and Output -> DAQmx -> Analog Measurements you will see categories for the different measurement types. Many of them have graphs. 
    If you have not already done so, you may want to start here: http://zone.ni.com/devzone/cda/tut/p/id/3116

  • How do I read multiple channels at one time using labview with the Fluke Hydra Data Bucket 2620a using serial port?

    I need to take a reading of 15 channels about once a second. I can read one value at a time using the monitor function on the read values.vi driver, but this takes forever to read all the channels.

    I don't have this instrument but I took a look at the instrument driver and it appears that you can only configure one channel at a time to read from. You might want to take a look at the command set for this instrument and see if it allows for configuration of multiple channels. It could be that the instrument driver just doesn't have that built in.
    J.R. Allen

  • How to Read from multiple channels

    Dear Sir
    I am acquiring data using FP-RTD-122 using OPC Client software. I ahve made one socket for that and i am using command
    CWDataSocket1.AccessMode = cwdsReadAutoUpdate
    CWDataSocket1.URL = "opc://localhost/National Instruments.OPCFieldPoint/FP Res\FP-RTD-122 @1\Channel 0"
    CWDataSocket1.Connect
    v = CWDataSocket1.Data.Value
    where v is a variant type.But this is 8-channel RTD so how can i read values from all channels using single socket connection Because at presnt i have to use 8 sockets for all eight channels.

    At least as of FieldPoint 4.0 and earlier (I do not know about 4.0.1 or later), the OPC Server did not support multiple channel analog items. Thus to read all eight channels of a FP-RTD-122 module, you would need 8 separate socket connections. For discrete modules (boolean), the "All" tag, is treated as a single 8 or 16 bit number.
    Regards,
    Aaron

  • 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

  • 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.

  • SCXI 1600 and digital inputs

    Does anyone know whether the SCXI 1600 card can sample digital inputs from say an SCXI digital input card like the SCXI-1162? The manual and specs say so but I can't see how it is done. The user manual is clear on analog inputs - up to 352 for the 200kS/s max rate but it doesn't say anything specific about digital inputs. An article on DEVZone has a brief response to a similar question to mine that says the specified max channel count does not include digital inputs. I can't work out from the specs at what sample rate one could sample digital inputs with the SCXI-1600 card.

    Hello Andrew,
    As it says in the user manual, the SCXI-1600 is built similar to E Series DAQ devices and can control digital I/O SCXI modules. You are probably looking for dynamic characteristics on the digital side of things kind of like sampling rate. The reason it is not specified is that it is static digital I/O meaning that it is software controlled.
    So a reading is taken when called by software. But rest assured that the SCXI-1600 can support your digital module.

  • SCXI-1600 doesn't communicate with MAX

    All-
    Maybe someone else has encountered this.  I have connected an SCXI-1600 in an SCXI-1000 chassis to a computer with a USB cable.  I can't get NI-MAX to recognize the device.  I'v tried rebooting and reconnecting in different orders.  I have swapped with a known good USB cable.  I have even taken it to a different computer.  On the new computer, when I first plugged it in, I got a "found new hardware" message from Windows (XP) that the -1600 had been identified, But I still couldn't get it to show up in the tree, even if I tried adding devices manually.  I removed the other modules in the chassis and reseated the -1600, still no luck.  Any advice would be great!  Thanks.
    Solved!
    Go to Solution.

    Reinstalling the NI-DAQ suite fixed the problem.  Didn't try that before posting because I had the same problem on multiple computers and so I suspected something else.  Please disregard post.  Thanks.

  • Data acquisition from multiple channels.

    Hello
    Right now, I am able to acquire the signal from a single load cell and display it.But I would like to know of how to acquire  acquire signals from two load cells simultaneously.I am using Labview 6i and I am using AI S-Scan with AI config to acquire the waveform.It would be of great help if you could suggest a simple method to acquire the signals.
    PS: Please find the attached file used for acquisition from a single load cell.
    Looking forward for your reply.
    Manasa
    Attachments:
    test 4.vi ‏102 KB

    Hi Manasa,
    If I understand what you are trying to do, it is relatively
    straightforward to configure your application to acquire data on two channels.
    I was unable to run your vi as it was missing some of the subVI’s
    from your application.  However, your
    attachment was sufficient to see what you are trying to do. 
    Here is how to add channels:
    1.      
    In the I/O Channel Constant, you can add
    additional channels by using a comma or a semi-colon.  For example, to scan the first four channels
    you would put 0:3 in the constant (see attached screenshot ChannelConfig.jpg).  To scan the first and third channel you would
    put 0,2.
    2.      
    The AI Single Scan VI will now read from
    multiple channels.  Often it easiest to
    configure the output of this VI for viewing by first putting the data into an
    array using the Build Array VI.  It can
    then be plotted in a waveform graph. (see attached screenshot ReadtoGraph.jpg
    and WaveFormGraph.jpg)
    Just a few notes about “simultaneous” sampling:
    Most of the NI data acquisition cards have a multiplexer
    between the various input channels and the Analog to Digital (A/D) converter
    creating a very small delay between each channel (usually ms range or
    smaller).  NI does make several data acquisition
    cards that can perform true simultaneous sampling, meaning that there is an A/D
    converter for each channel.
    For the large majority of applications, the small delay
    between channels is negligible.
    Jared T.
    Attachments:
    ReadtoGraph.JPG ‏21 KB
    ChannelConfig.JPG ‏288 KB
    WaveFromChart.JPG ‏61 KB

  • How  to use multiple channels with one remoteObject .

    hi,
    I have an application which is accessed through HPPS some
    times , also it can be access on server with http service.
    so I want to know how to configure config files or add
    runtime channels which will support either channel depending on
    the server it is accessed over.
    Is there any one who can help me to solve this...i need it
    soon.
    thank you...

    Hi,
    Please visit the URL below for details on adding channel sets
    at runtime. Add multiple channels to the channel set so that the
    fall back mechanism works.
    http://livedocs.adobe.com/blazeds/1/blazeds_devguide/runtimeconfig_5.html#194376
    Hope this helps.

  • 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.

  • How would you apply different calibrations to multiple channels

    I'm attempting to apply calibration data to multiple channels. The calibrations could have been done at different times for different channels and could be using different fits. I think I have a solution for just applying the calibration information to one channel. I'm posting the solution for one channel in this post. In the next post I will include the multi-channel problem I'm working on. I had to add txt onto the initial file in order to post this.
    Thanks in advance.
    Solved!
    Go to Solution.
    Attachments:
    Apply Calibration One Channel.vi ‏138 KB
    Initial.txt ‏1 KB

    Thanks for the links John. I just logged on to post my working solution so I haven’t had a chance to look at them yet.
    I’ve been working on this problem and have come up with the below attachment. I believe the logic is correct, but do not know if this is the most efficient way of doing this. I start by reading the calibration information in my ini file for only the channels that I am collecting data for. This is accomplished by the case structure enclosed in the for loop. The calibration values are stored as variables so I don’t have to read them with each data point I collect. I then start the data collection within my while loop. As I collect the data I pass it through a for loop where I apply the calibration curve to it and pull the calibration variables from the 2nd case structure. I’m using a for loop for this so I can index the wave files and apply the correct calibration information to each one. The channels and sections will be inputs to this vi from the choose channel vi.
    John I don’t know if this is better or worse than what you are suggesting. I will read the links you sent me.
    Does anybody have any comments on what I’ve put together?
    Thanks, Eric
    Attachments:
    Acquire and Transform Data.vi ‏209 KB

Maybe you are looking for