N Channel independent configuration with DAQmx

For an application, where I need to give the user, the options of configuring 8 analog channels independently, what would be the best way to go ? ( He needs to set the min, max values, samples and acquistion type - SE, Diff etc )
Use 8 sets of "DAQmx CreateChannel( AI_Voltage_Basic)+ DAQmx Start Task + DAQmx Read VIs" or is there a VI which does this configuration as a single sub-VI ? I have searched enough to find one such.
Any ideas that can provide a compact solution would be welcome.
Thanks
Raghunathan
Raghunathan
LV2012 to Automate Hydraulic Test rigs.

Sean C. wrote:
Hello Raghunathan,
...you will have to create a Task with all channels you want to modify, then pass that Task to a Channel Property Node. You can then set the options for each channel independently. ...
See the attached VI for an example of this.
I hope this helps,
Sean C.
Applications Engineer
National Instruments
Dear Sean,
Thanks.
I guess I got your point. Let me repeat the steps - just to make sure:
1. In the example sent by you, create the required properties for all 8 channels using "add element".
2. Give a descriptive name for each channel.
3. Next click on each node and select "Create Control". This will provide the required user control on the panel.
4. Group all properties for each channel ( min, max,type,etc) properly and lay them out neatly.
5. Finally pass the duplicate reference out of this synthesised proprty node to a DAQmx Read VI.
Is that right ?
Now I think I sort of realise the power of DAQmx VIs.
Regards
Raghunathan
Raghunathan
LV2012 to Automate Hydraulic Test rigs.

Similar Messages

  • Trying to use the same ground for more than two channels (RSE configuration) with usb 6000

    Hello,
    I'm currently trying to set up a LabView code in order to get readings of voltage using 5 different locations simultaneously. I want to only use the first location as ground and obtain 4 voltage measurements between the ground and each one of the other 4 channels. I'm using a usb 6000 which for now allows me to use the same ground for only two channels. Is there a way to use the same ground for 4 channels?
    Thank you,
    Maria

    You're right it is confusing the way I describe it so I ahve attached some pictures of the set up. The first figure is the cell filled with soil and the 5 probes inserted in it. The anode is placed at the left end of the cell and the cathode at the right end but they do not appear in the figure. I'm trying to use location 1 as gournd and take measurements of voltage from the following pairs: 1-2, 1-3, 1-4, and 1-5. The second figure is the DAQ I'm using. When I was trying to set up the RSE configuration, it was ussing ground A for the channels 6 & 7 (locations 2 and 3 in figure 1) but ground B for channels 4 & 5 (locations 4 and 5 in figure 1). What I am asking is which is the best way to use the signal from location 1 as the ground for all 4 channels. Is this more clear?
    Thank you for your time!
    Maria

  • Selecting physical channel from list with DAQmx

    I'm trying to write a simple VI for reading and writing digital data. However, when I have a DAQmx physical channel control, the only options it presents to me are the various analog inputs (and doesn't allow me to type in the port I actually want to use). In other examples, e.g., "Write Dig Port.vi", the apparently identical control instead shows me digital port options rather than the analog in channels. As far as I can tell, there is no real difference between the controls as there is nothing in properties that I can really modify.
    How can I get this control to let me choose the channels I want? Or is there some difference in these controls that I am not aware of?

    The channel lists adapts to the type of DAQmx Create Channel that you use. Do you see the text below the DAQmx Create Channel? If your channel is displaying only analog input channels, then the DAQmx Create Channel type is AI Voltage. If you want to use digital input channels, change the type to Digital Input. Click on the little arrow on the right side. This is called a polymorphic VI selector. You can do the same thing by right clicking on the VI and do a Select Type.
    Mark has a good point. If you change the type of DAQmx Create Channel and you already have a physical channel wired, you will have to go to I/O Name Filtering to change the channel types displayed. If you change the DAQmx Create Channel and then create a channel control by selecting Create Control, you'll get the correct type automatically.
    Message Edited by Dennis Knutson on 03-11-2008 12:12 PM

  • Which comm. channel is configured with a certain ftp server?

    Hi,
    i wold like to have a list of all comm.channels which are using a certain ftp server. How can i get this list

    i dont think we have any shortes way to find..by checking manually then only we can differentiate else if your company follwoing proper naming standards then they will create individual bussiness component for every FTP.
    Regards,
    Raj

  • How to configure a continuous pulse generation that doesn't end after the VI exits with DAQmx?

    Hi,
    I'm just learning the DAQmx and I have run into a problem.
    With the legacy DAQ API I could configure a counter to create continuous pulses and
    when I needed change the freq or duty cycle, I would just call the the configuration function
    again. The pulses were generated even after I closed LV, so it was all in the hardware.
    Now, with DAQmx api, it seems that this is not possible. I read a forum post saying that
    LV will end the pulse generation after the VI exits. Is there a workaround for this?
    I could ofcourse create a LV thread for this, but I liked the old one better
    It was simpler and I didn't need to worry about threads so much.
    All LV operations are going to be inside a DLL that is called from outside of LV, so I can't
    use LV threads in a simple way, e.g. putting things inside a while loop. Just that you'll
    know why I wan't to avoid using the threads.
    Thanks.

    It is possible to achieve this behavior using the DAQmx API by using the DAQmx Create Task VI to explicitly create the task (rather than relying on DAQmx Create Channel to do it implicitly) and setting the AutoCleanup attribute to False.  This method prevents LabVIEW from automatically clearing the task when your VI (or the function you'll be exporting to your C .dll) finishes executing.  The disadvantage is that you might accidentally "leak" a task if you're not careful.  In order to stop the pulse generation on command, you can either reset the device or somehow store the task name you created and come back later to call DAQmx Stop and/or Clear Task.
    Here's how you would start the generation:
    ...and how you could come back and stop it later, using the task name you created:
    Hopefully this helps-
    Message Edited by Tom W [DE] on 11-16-2007 07:54 AM
    Tom W
    National Instruments
    Attachments:
    autoCleanup.JPG ‏17 KB
    clearTask.JPG ‏4 KB

  • Pci 6602: configuring a frequency-divider with daqmx using labview7.1

    i´m using labview 7.1 and the pci6602 counter-board. i want to configure a counter as an frequency-divider with varaibale division-rate, witch is a easy thing to do with the classic "old" daq-driver.
    it´s recommended to use the "new" daqmx-driver, and i want to do so, cause i´m using also other ni-devices and want to use the same driver for all of them, but i can´t find any possibility in the daqmx-vi´s to configure such a frequency-divider.
    i also couldn´t find any example-code for this problem.
    please help me!!

    hi, thanks for the answer, but unfortunatly it´s not what i ment.
    i need to configure a counter on the pci6602 wich divides down the frequency "f_in" of the square pulses connected to it´s "source" pin by "divisor" and puts out square pulses with frequency f_out=f_in/divisor at another pin. That process should take place only on the 6602-board without using the cpu.
    i´ve found the solution already, how to configure a counter on the pci6602 with daqmx like described above. see attachment.
    servus
    markus
    Attachments:
    Divider_Config_mw.vi ‏40 KB

  • Problem with DAQMX on a 6025E !!

    Problem with DAQMX on a 6025E
    I work on a DAQ 6025E and I can't use the example "Write Dig Port.vi" and all others example on digital output with DAQMX. There isn't any hardware failure because the same installation functions correctly with the traditional DAQ. I want to use these channel parameters: Dev1/port2.
    I already tested to make a reset device and use "line or port configuring vi" but without successes.
    Thanks for your help!
    Attachments:
    Write_Dig_Port.vi ‏48 KB

    I took a look at the example you attached and it looks fine. Here are a few things to try out BEFORE running the example from MAX:
    1) Remove any SCXI, SCC, and accessories from the configuration in MAX so that no DIO lines are reserved for communication.
    2) Reset the driver to work in DAQmx mode for your board. To do this, first right-click the "Traditional DAQ Devices" and say "Reset Driver" and then right-click your 6025E under DAQmx Devices and say "Reset Driver" again. This should enable the driver for DAQmx.
    3) In MAX, under DAQmx Devices, run the test panel and make sure you can read/write all the DIO lines there first. If that works fine you should be able to run the example.
    Remember that the port names for the 6025E are Port 0, Port 2, Port
    3, and Port 4 (no Port 1).
    Good Luck!!!
    Sincerely,
    Brooks Bailey
    Application Engineering
    National Instruments

  • Can read TEDS in MAX but not with DAQmx VIs

    Hi,
    I have a cdaq 9181 with a 9234 accelerometer module.  I have 3 teds equipped accelerometers connected to ai0, ai1, and ai2 repectively.  In MAX, when I reserve the chassis I can read all three teds, no errors.  When I do the same thing in labview (ie reserve the chassis, create a daqmx task, associate teds data with each physical channel, all with daqmx VIs) I can only read two out of three teds.  The third one throws a "no teds sensor detected" error.  This code has been in use for about four months now, though I just rewrote the calling VIs, and hasn't displayed this problem.  I've attached a snippet of the task building VI for reference.
    Any ideas what's going on?
    Thanks.
    Using LV2012 and MAX 5.3.1 running on Windows 7 32 bit.
    CLAD
    Attachments:
    Build Daq Task Snippet.png ‏58 KB

    Nope.  That's a delete from array, length 1, index 3.
    In any case, I eliminated that block since the string array wired to the for loop controls how many devices the VI attempts to configure.  Same result, verified it was trying to configure ai2.  Here's the updated snippet:
    CLAD
    Attachments:
    Build Daq Task Snippet v2.png ‏54 KB

  • SCXI 1001, SCXI-1102 and SCXI-1303 not working correctly with DAQmx

    I have recently upgraded from Labview 6.5 to Labview 8.2 and now my SCXI 1001 with a SCXI 1102 and SCXI 1303 terminal block no longer reads the correct voltage.  Using the old version of labview thermocouple measurements are correct at 0.5mV; however using the new version of labview and DAQmx the thermocouples are reading 5V.  Everything is installed correctly as it still works with the older version of Labview, is there something that needs to be reset or change so that teh SCXI will function properly with DAQmx?

    Hello ilabtech,
    From my understanding you are using an SCXI 1001 chassis with an SCXI 1102 and 1303 terminal block to perform thermocouple measurements.  You are upgrading to LabVIEW 8.2 and DAQmx.  I am assuming you were using LabVIEW 6.1 since there isn’t a LabVIEW 6.5.  You mentioned that are able to get a correct reading of 0.5 mV with LabVIEW 6.1 but you see a rail of 5V with LabVIEW 8.2 and DAQmx. 
    My first suggestion is that you ensure that the SCXI is set at the appropriate range and for the correct thermocouple type.  You can also configure these settings in MAX as detailed on page 27 of the SCXI 1102 User Manual and Specifications Guide. 
    My second suggestion is for you to start off using an example program to see if you see the same error.  When you are in a LabVIEW 8.2 VI you can go to Help>>Find Examples to open the NI Example Finder.  You then choose Hardware Input and Output>>DAQmx>>Analog Measurements>>Temperature>> Cont. Acq Thermocouple Samples-Int CLK.vi.   This example program is supported by your hardware and is a good resource to use to troubleshoot.
    If these suggestions aren't helpful please answer the following questions in your reply.
    1.        I would like to know what range you have set the SCXI 1102 to read. 
    2.       What version of DAQmx are you using?  You can find the version my opening Measurement and Automation explorer (MAX), expanding the “Software “and clicking on NI-DAQmx.
    3.       What operating system are you using?
    4.  Does your Traditional DAQ program work in LabVIEW 8.2?
    Regards,
    Ima
    Applications Engineer
    National Instruments
    LabVIEW Introduction Course - Six Hours
    Getting Started with NI-DAQmx

  • Multiple tasks with daqmx

    Hello,
    I am currently working on a Senior Design Project where I have to measure torque, RPM, pressure and temperature.  I am using strain gages, a Hall Effect Sensor, pressure sensor and thermocouples to obtain these readings.  A myDAQ collects the RPM and pressure readings while a cDAQ collects the torque and temperature readings with the NI 9237 and NI 9211 modules.  I created LabVIEW VIs for each sensor and they work.  The problem I am having is when I try create a VI with DAQmx that reads all these sensor values simultaneously.  The VI that I have attached randomly displays one of the measurements while all the other measurements remain blank.  How should I edit my VI so I can display all my readings at once?
    Solved!
    Go to Solution.
    Attachments:
    SD.vi ‏87 KB

    You can form all of your cDAQ readings into a single DAQmx task.  Do the same for the myDAQ channels.  On the read side, you just read multiple channels.  You can then use the Array Index to separate your channel data and do whatever calculations you need.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines
    Attachments:
    Multichannel task.png ‏40 KB

  • Can I measure pulswidths with daqmx base and NI-USB6501

    Can I measure pulswidths with daqmx base 1.4 and NI-USB6501? I can measure edges width this function: DAQmxBaseCreateCICountEdgesChan. But, when using DAQmxBaseCreateCIPulseWidthChan I always get an error message back (DAQmxBase Error: <err>Value passed to the Task/Channels In control is invalid).
    I also cannot find any examples about this topic in the software on CD nor on the internet.
    I also don't know what values to use for the float64 minVal and float64 maxVal arguments when using the pulse width function of above (see the NI-DAQ™mx Base 1.x C Function Reference Help).
    Maybe my device (NI USB6501) cannot measure pulse width's and when it does measure pulse width's, what value will it give back? Seconds or ticks and what is the accuracy?
    Ok, enough questions for now. Thank you in avance for answering.
    D. Stollman

    The USB-6501 counter is capable of falling edge edge counting
    measurements only, so the type of measurement you wish to do is not
    possible with that device.  The data sheet for the USB-6501 can be
    found at the following link:
    http://www.ni.com/pdf/products/us/20054920301101dlr.pdf
    I believe the DAQPad-6015 and DAQPad-6016 USB devices are capable of
    measuring pulse width, as well as many of NI's PCI data acquisition
    devices.

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

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

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

  • An issue with DAQmx Error messages

    Greetings,
    I'm using a 6602 counter board with DAQmx 7.4, ANSI C API.  A strange issue concerning the errors due to faulty attribute values keeps occuring, that being no error is reported when the (faulty) attribute value is set but only when it is read back afterwards.  Shouldn't the faulty value be reported by the Set function?
    To be specific, I'm creating a period measurement counter input channel with implicit timing, sample mode = finite, then setting the number of samples per channel to 0 (bear with me, I know the 0 value makes no sense here, the point is how the errors are being reported so that they can be handled in a reliable and consistent way).  While DAQmxSetSampQuantSampPerChan(taskHandle, 0) does not produce an error, calling DAQmxGetSampQuantSampPerChan(taskHandle, &SampPerChan) for verification on the very next line returns Error -200077 : "Requested value is not a supported value for this property".  So, my question is why the error is reported by the Getter instead of the Setter?  Is this normal behavior (if so why?) or is something amiss here?
    Jeff

    This is the expected behavior. Validating attributes is tricky when attributes are dependent upon other attributes. There are two main approaches that can be taken by NI-DAQmx.
    One, when every attribute is set, NI-DAQmx could verify the value of that attribute in the context of the task (i.e., in the context of all other attributes). This is problematic for at least a couple of reasons. One, validating the task after every attribute is set is time consuming and not efficient. Two, validating the task after every attribute is set requires that customers set attributes in a specific order such that dependent attributes are set after their dependencies. This would dramatically decrease the usability of NI-DAQmx. In fact, if attributes are mutually dependent, this approach is impossible.
    The second approach is that NI-DAQmx doesn't verify the task until it is forced to do so. Starting a task forces it to be validated. Querying an attribute also forces the task to be verified since the value of an attribute may be dependent upon the value of another attribute.
    As you've noticed, we've taken the second approach with NI-DAQmx. This approach leads to a more efficient execution as well as allow customers to set attributes in an arbitrary order. If you want to force the task to be verified in order to check for errors, you can do so explicitly at the desired time. However, the need to check attributes for errors is most often needed when the application is under development and the NI-DAQmx error reporting features makes it easy to determine which attribute has been set to an invalid value even when that error is not reported immediately.
    Now, in reality, the way NI-DAQmx handles attributes is a bit more complicated than what I just described. Since some attributes are not dependent on other attributes or, since some attribute values can never be valid regardless of the values of other attributes, these attributes are verified when they are set and errors are returned immediately. We refer to this as coarse attribute verification. For example, if you set the sample rate to 100 MHz on an E-Series device you will immediately get an error.
    Hope this helps clarify the behavior.
    geoff
    Geoffrey Schmit
    Fermi National Accelerator Laborary

  • PCI-4472 not functioning with DAQmx Linux 8.0

    We have multiple systems with PCI-4472 cards in them running SUSE Linux, and all but one of them function properly.  On the particular system in question (which has identical hardware and software to the functioning systems), nilsdev lists no devices.  Further investigation revealed the following excerpt from dmesg:
    allocation failed: out of vmalloc space - use
    vmalloc=<size> to increase size.
    Unable to handle kernel NULL pointer dereference at virtual address
    000002fc
     printing eip:
    f9ede608
    *pde = 00000000
    Oops: 0002 [#1]
    SMP
    Modules linked in: nidsark nistcrk nicdrk nistc2k nimru2k nimxpk ipt_pkttype
    ipt_LOG ipt_limit nipxirmk nidimk nimsdrk nidmxfk nimxdfk nimstsk nimdbgk
    niorbk speedstep_lib freq_table nipalk nikal snd_pcm_oss snd_mixer_oss snd_seq
    snd_seq_device button battery ac af_packet video1394 raw1394 edd ide_cd cdrom
    sk98lin ohci1394 ieee1394 snd_intel8x0 snd_ac97_codec snd_ac97_bus snd_pcm
    snd_timer snd soundcore snd_page_alloc i2c_i801 i2c_core hw_random generic
    ehci_hcd intel_agp agpgart uhci_hcd usbcore shpchp pci_hotplug ip6t_REJECT
    ipt_REJECT ipt_state iptable_mangle iptable_nat iptable_filter ip6table_mangle
    ip_conntrack ip_tables ip6table_filter ip6_tables ipv6 parport_pc lp parport
    nls_iso8859_1 nls_cp437 vfat fat nls_utf8 ntfs dm_mod ext3 jbd sg fan thermal
    processor ata_piix libata piix sd_mod scsi_mod ide_disk ide_core
    CPU:    1
    EIP:    0060:[<f9ede608>]    Tainted: PF    U VLI
    EFLAGS: 00010246   (2.6.13-15-smp)
    EIP is at nidsark-unversioned0004550+0x70/0x11e4 [nidsark]
    eax: 00000000   ebx: f6be1d68   ecx: 00000000   edx: 00000000
    esi: f6514770   edi: f6514760   ebp: f6be1964   esp: f6be1958
    ds: 007b   es: 007b   ss: 0068
    Process nipalsm (pid: 6952, threadinfo=f6be0000 task=c2344540)
    Stack: f6be1d68 f6514b68 f6be1d68 f6be197c f9efb4d0 f6514760 f6be1d68 f6514b68
           f6b82690 f6be1a1c f9e93409
    f6514b68 f6be1d68 f6514760 f6be1d68 00000004
           f6be1d6c 00000100 f6be19b8
    f95bbf19 f6be1bd0 f6be1d6c f6be1d6c f6be1b98
    Assuming that the NULL pointer deference was caused by the preceding failed vmalloc, I attempted to increase the vmalloc size to 512MB (which is certainly overkill).  This did nothing to clear the error.  One final detail is that this computer dual boots Windows, while the others have only ever run Linux.  It shouldn't matter, but I feel it is worth mentioning in the event that DAQmx for Windows somehow mangles the configuration of the card to a point where it no longer functions with DAQmx for Linux.  It should be noted that the card works just fine under Windows.
    I have the output from niSystemReport available in the event that it will help in diagnosing the problem, but am unable to attach it due to the size restriction of this forum.  The call trace from dmesg is in the attached file.  Any help would be greatly appreciated.
    -Peter Lisherness
    Message Edited by PeterLisherness on 07-10-2006 12:36 PM
    Attachments:
    dmesg.txt ‏5 KB

    Peter,
    I have a couple of other questions which might help us narrow this down.
    1.  You said both the working and non working machines have identical hardware and software.  I'm assuming this means both machines are Pentium 4 3.2 GHz SMP machines 2 GB of RAM, have the same motherboards etc.  I also assume that this means that they also are both running SUSE 10.0 and have the same updates, and kernel versions.  Is this correct?  A system report from the working machine could also help us confirm this.
    2.  Can you easily reproduce the Oops?  When does it occur?  Does it happen when the machine first boots up, or do you have to run nilsdev first?
    Thanks,
    Shawn B.
    Use NI products on Linux? Come join the NI Linux Users Community

  • Problem to compile new configuration with imsimta

    After I patched 116568-53, iit was impossible to compile new configuration with "imsimta chbuild". The response is:
    13:57:09.20: Internal error in cl_init -- cannot open command definition file IMTA_BIN:pmdf.cld
    Any one know how to solve this problem?
    Thanks in advance.

    I checked the file as you suggested and i didn't find any tcp_lmtpss-daemon channel so i inserted the following lines:
    [CHANNEL=tcp_lmtpss*]
    master_command=IMTA_BIN:tcp_lmtp_server
    [CHANNEL=tcp_lmtpsn*]
    master_command=IMTA_BIN:tcp_lmtpn_server
    but i obtained the same errors.
    what's wrong? (i am new to sun one messaging server)
    thanks

Maybe you are looking for