DAQmx Channel Calibratio​n on PCI-4472

I am reading Analog Input signals from a PCI-4472 device and I need to calibrate the channels independently of each other.
I am using DAQmx Create Channel.vi followed by a DAQmx Timing.vi followed by a DAQmx Start Task.vi and then in a while loop I have a DAQmx Read.vi that reads continous samples on a specified amount of time.
I want to be able for the user to change calibration settings for the different channels before he/she starts the data acquisition process. I want to use the SVL Calibrate Sensor.vi but don't know where to place it on the block diagram. None of the outputs from the SVL Calibrate Sensor.vi can be hooked up to the DAQmx VIs listed above.
How would I use the SVL Calibrate Sensor.vi to calibrate the different channels? I need to be able to set the coupling, excitation, weighting, and etc. on a channel per channel basis.
Thank you.

Hi,
First of all, The SVL calibrate sensor is a stand alone functional VI and you do not have to connect it with any of the following, DAQmx Create Channel.vi, DAQmx Timing.vi or DAQmx Start Task.vi.
Just double click on it and open its block diagram. You will understand what i am trying to explain
I have attached a VI which you can use to perform cal on each channel with seperate config settings
Just put this part of code inside a case structure and see to it that executes before your DAQ mx create channel to perform SVT calibration before your DAQ process
Hope this helps
Regards
Dev
Message Edited by devchander on 01-20-2006 11:21 PM
Attachments:
svt.vi ‏102 KB

Similar Messages

  • 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

  • Configuring channel indices on multi-board PCI-4472 systems

    When using multiple PCI-4472, I've not been able to predict which card will index as ch.1-8, 9-16, etc. based on the PCI slot position. Is there a way to define the card position with a channel index programmatically?

    Marni,
    It is of great interest to me to be able to correlate a PCI bus and PCI device number to the device numbers (Traditional NI-DAQ) that MAX assigns to the PCI NI-4472s. My goal is to be able to designate a particular slot in the PCI bus as the location of the PCI NI-4472 "master" in a multi PCI NI-4472 synchronous configuration, and do it programmatically. To accomplish this, I need to be able to determine the NI-DAQ device number for the PCI NI-4472 that is in the "master" PCI slot. Once I know the NI-DAQ device number of the card in the master slot, I can do the appropriate clock routing. One reason makes this correlation necessary is that the device numbers that MAX assigns do not necessarily remain the same. Do you know of a way that I can determine a card's device number if I know the PCI bus and PCI device number? I am really trying to make a specific physical PCI slot be analogous to a PXI Slot 2.
    Thanks for your help,
    Mark

  • Synchronisation de PCI-4472 et PCI-4474 et support DAQ traditionnel/DAQmx

    Bonjour,
    comment émuler la fonction RTSI (synchronisation de l'acquisition entre
    les
    cartes PCI 4472 et 4474) avec DAQmx version 7.2 ?
    A l'éxécution de l'exemple Multi-Device Synch-Shared Timebase-Cont
    Acquisition.vi, j'obtiens le message d'erreur suivant :
    L'erreur -200452 s'est produite à Noeud de propriété DAQmx Timing (arg 1)
    dans
    Multi-Device Synch-Shared Timebase-Cont Acquisition.vi
    Raison(s) possible(s) :
    Specified property is not supported by the device or is not applicable to
    the
    task.
    Property: MasterTimebase.Src
    Task Name: _unnamedTask<3>

    (Réponse identique au forum posté le 10/05/2004).
    Bonjour,
    Les cartes PCI-4472 et PCI-4474 ne sont pas dans la liste des cartes compatibles avec l'exemple "Multi-Device Synch-Shared Timebase-Cont Acquisition.vi".
    Ceci peut expliquer pourquoi le noeud de propriété renvoie une erreur DAQmx.
    Vous pouvez utiliser l'exemple "Multi-Device Sync AI Shared Timebase & Trig DSA" qui a été développé spécialement pour les cartes DSA (et donc les PCI-4472 & 4474).
    Cet exemple permet de faire de l'acquisition simultanée finie avec déclenchement commun. Pour faire une acquisition continue, il vous suffira de paramétrer le NI-DAQmx Timing à "Continuous samples" et d'intégrer le NI-DAQmx Read dans une boucle While.
    Cordialement.

  • PCI-4472 -- Measuring Resistance

    Is it possible to measure resistance with a PCI-4472 DAQ card? When I use the DAQMX create measurement channel.vi and set it to resistance measurement I get a error message saying 'this physical channel cannont measure resistance, please select voltage....'

    The PCI-4472 is a DSA (Dynamic Signal Analyzer) variety of DAQ board.  This means it is optimized for measuring dynamic signals and accurately measuring the frequency components.  To measure resistance you will provide a current as gwd mentions, and read back the voltage.  You will need to take at least 2 measurements (a requirement of the DSA design).
    From the voltage measurement you can scale using Ohms Law (R=V/I) to determine resistance.
    Regards,
    Jennifer O.

  • PCI-4472 self calibration error under MAX

    Hi,
    Our PCI-4472 appeared to have offsets on the order of several hundred microvolts, so I tried a self calibration under MAX (version 4.1.0.3001) to try to reduce them. The self calibration gave me the error message:
    "Measurement taken during calibration produced an invalid AI gain calibration constant."
    Does anyone know where I can find troubleshooting information for this issue, or have any suggestions on how to fix it?
    Thanks,
    Ron Norton
    Faculty Research Assistant
    Gravitation Experiment Research Group
    Department of Physics
    University of Maryland
    College Park, MD

    I am posting this for an applications engineer, intended for this to post last in a linear fashion ~
    I have attached screen grabs of the self test and calibration panels.
    When running the "self-test" panels within MAX, all tests pass.
    I performed the tests after hitting "reset" in MAX.
    Current versions of software installed: Labview Full Dev 8.2., and Max 8.5.
    All upgrades have been applied.
    Ai1 is setup to measure a voltage differential of 1-5 VDC based upon a "differential" input
    across a precision resistor. I have setup custom scale, 1V = -40`C 5V = +180`C.
    I have tried setting sample rates of: 3 @3Hz, 10@60Hz, 100 @600Hz, etc...
    As I run the self test, and it's the same when I launch Labview and work within a VI, I see
    the wave output with what looks like a square wave. I have put a scope on the wire pair
    and do see steady voltage levels. Sensor has a current loop supplying external excitation.
    Sensor output passes thru a linearization circuit operating at 60Hz.
    In the 3rd image I captured Ai0 which is similarly setup in "differential" 1-5VDC input to scaled output.
    You can see the graph image captures the trailing signal just like on Ai1 analog channel.
    I have verified from Omega that the sensor is wired correctly supplying current loop,
    and also taken the wires and "twisted" the pairs for less EMI/RFI crosstalk/noise.
    The sensor and it's power supply are brand new purchased directly from Omega.
    I am planning to send this to a local vendor for calibration, SE Labs in Santa Clara, but if it's
    a matter of the boards circuitry being damaged than it needs repair. I started here about
    3 months ago and after asking around found the PCI-6250 DAQmx board was available.
    Problem is I don't know the history, besides the 2 year calibration expiring Nov of 2006.
    The 1 thing I have not tried is moving the PCI to another slot, but FYI I have just this week
    moved the PCI card over to another workstation that exceeds minimum hdw requirements.
    This card was installed in a Pentium III @848MHz workstation with 424MB of ram.
    Facts are the graph output of both channels look exactly the same in either pc.
    The previous user was an engineer, whom may have exceeded voltages/parameters
    on the analog and/or digital inputs. Thank you again for your knowledgeable replies!
    Sincerely,
    Phil Johnson
    Hardware Technician
    http://www.digitalpersona.com/

  • Does performing a DAQmx Clear Task on a PCI-4474 card change the state of the IEPE current?

    Does performing a DAQmx Clear Task on a PCI-4474
    card change the state
    of the IEPE current?  If the IEPE current was on, does it remain
    on even though the task as been cleared?  If the IEPE current
    remains on, then I assume I don't have to wait for the IEPE current to
    settle if I make a new Task and start a new measurement--is this
    correct?
    Thank you in advance for your help.
    Ken

    DAQmx Clear Task should not turn off IEPE current. You will have to explicity set IEPE current to On (for that channel) whenever you use any of the AI channels on your 4474 in order to keep the IEPE On because the IEPE for all channels in the AI subsystem will be set to the default state (Off) unless explicitly configured. That said, if you clear a task that had IEPE On, and then initialize a new task and set IEPE On, the IEPE will be uninterrupted and there should be no need to wait for the IEPE to settle. Other components of your measurement system might need time to settle if their state was changed between tasks (DUT, sensor, AC coupling, etc.)
    Doug
    NI Sound and Vibration

  • Daqmx channel property node

    Hi all,
    I've downloaded an example for a quad counter which uses a daqmx channel property node to specify A,B,Z channels.
    I have tried to replicate the example using LV8.1 but the only properties that I get are 'Active Channel' and 'General Properties' with 4 sub properties. Why don't the channel properties show up? What am I missing here?
    I have attached a jpeg of what im talking about. Any help is appreciated.
    Cheers,
    Dave
    Attachments:
    prop node.jpg ‏16 KB

    Hi David,
    This happens when you have not inserted a DAQ device in your system or your DAQ device is not detected by your MAX.
    You could do one of the following
    1. Insert a DAQ card into the PCI/PXI slot
    or
    2. Simulate a DAQmx device in MAX.
    By doing this, the corresponding DAQmx properties will show up

  • High CPU load when sampling from two PCI 4472

    Hi,
    LabVIEW 8.6, DAQmx 8.7.2  PC: Pentium 4  3.2 GHz, 2 GB Ram, Windows XP Prof Service Pack 2
    I have an application with two PCI-4472 cards connected together with a RTSICable and I am sampling at 44.1 kHz.
    When I only sample from one of the cards the CPU load is about 2-3 % regardles of whitch off the cards I am sampling from.
    But when I sample from both cards ths CPU load goes up to 50-60 %.
    I have made an clean VI with only an DAQ Assistant and this gives the same result: 3% + 3%  = 60% ... ???
    What can I do to get the CPU load down when using two PCI-4472 cards ?
    Kind regards
    Leif Christensen

    This is happening to me too, but i found a solution. try to change the way you look at music , on the left of search is 4 buttons, List view , Album List view, Grid view , Cover Flow view. try to change the view, then view your cpu usage, it worked for me, but not for my friend, so im not sure that it will work

  • Change a DAQmx channel property for a single channel from a channel group

    Hi,
    I'm doing some digital output, and I'd like to tristate certain lines in each port. However, I'm having difficulty figuring out how to specify which individual lines to tristate. I input a port and a line range, e.g. PXI-6533/port0/line0:7, specify to use one channel for each line in the DAQmx Create Virtual Channel VI, retrieve the channels from the DAQmx Task Property, and try to operate on the individual channels that way.  However, this results in the following error:
    Error -200428 occurred at Property Node DAQmx Channel (arg 1) in tristate_test.vi
    Possible reason(s):
    Measurements: Value passed to the Task/Channels In control is invalid.
    The value must refer to a valid task or valid virtual channels.
    Task Name: PXI-6533/port0/line0
    The NI knowledge base article that deals with this error code talks about creating a task with the DAQ assistant, or ensuring that a task has been created. However, I'm not using the DAQ assistant, as my I/O is pretty complicated; I'm just using a bunch of virtual channels. 
    Is there a way to specify individual channels to changethe properties of without having to create additional virtual channels? I have 48 digital channels I plan to use, so the less virtual channels I have to create the better. 
    Please reference the attached VI, which demonstrates the problem I am facing. 
    Thanks for any assistance. 
    Attachments:
    tristate_test.vi ‏11 KB

    You can only software-time tristate for the 6533/6534. Have a look at the attached example.
    Adnan Zafar
    Certified LabVIEW Architect
    Coleman Technologies
    Attachments:
    tristate6533.vi ‏58 KB

  • Several DAQmx Channels with Start and Clear Task VI's

    Hi,
    I'm trying to read in several DAQmx channels in a while loop. When I just place the channels within the while loop and connect them directly to the read VI's, everything is fine. But I read in the help, that this will slow down my system, because it's opening and closing the task each cycle. So I used Start Task and Clear Task VI's to open and clear them before and after the loop. But now it's only reading one of my channels in, although I wired all of them in exactly the same manner. Anyone has an idea, what I did wrong?
    Thanks,
    Miclas
    Attachments:
    Save&Stop DAQ.JPG ‏87 KB

    You would have seen the error if you had wired up and error indicator.
    You cannot run multiple tasks of the same type (i.e. an analog input) at the same time. What you read about stopping and closing tasks is correct but it was the only way your program could work. What you don't realize is that you can have multiple channels with a single task. If you used a physical channel constant, it would be something like 'dev1/ai0:2' if you had consecutive channels or 'dev1/ai0, dev1/ai2' for non-consecutive. Global channels are done in a similar fashion. You would have 'FSR1, FSR2, Knee Angle', etc.

  • How do I Delete DAQmx Channels

    I am pretty much a novice to LabVIEW, and many of you may see this as a very easy question, but how do i remove DAQmx channels (If this is the correct term, or is it tasks?).
    I have been playing about, and seem to have a few redundant channels and wish to remove them. I have been looking for a while now and can't seem to find it anywhere.
    Solved!
    Go to Solution.
    Attachments:
    Removing DAQ Channels.jpg ‏74 KB

    You need to open DaqMX by clicking:
    Once DaxMX is open you need to open the channels area:
    THen you need to right click on the channel or task that you want to delete and select the delete function.
    Tim
    Johnson Controls
    Holland Michigan

  • Querying DAQmx channel types in LabVIEW

    I want to have my LabVIEW application look through all the DAQmx tasks
    defined on the computer and display to the user a list of only analog
    input tasks.  I tried to do this by:
    Use the DAQmx System property node to retrieve a list of all tasks.
    For each tasks, use the DAQmx Task property node to retrieve a list of all channels.
    For each channel, use the DAQmx Channel property node to query its ChanType.
    If all ChanTypes turn out to be Analog Input, then I admit the task into the list.
    The problem is that I have tasks that I know are analog output tasks,
    but the DAQmx Channel property node still return "Analog Input" as
    their ChanType.  Am I seeing things, or is this a bona fide
    problem?  Is there a better way to get a list of the tasks I'm
    interested in?

    Hello,
    That is strange.  I built a VI which queries the DAQmx Task Types like you describe, and it works correctly for me.  If all channels in a task are analog input (by the way, this is a little redundant as all channels in a task must be of the same type), then the task name is passed to an array.  Otherwise, an empty constant is passed.
    Try running the attached VI and see if it works correctly for you.
    Regards,
    Sean C.
    Attachments:
    QueryTaskType.vi ‏34 KB

  • Accessing DAQmx channel information without DAQmx device attached to system.

    I am currently writing a LabView VI that makes use of a PXI-6229 card on a seperate chassis. The chassis is connected to a seperate computer from the one that I am using to develope the program. My problem is that I need to be able to obtain the DAQmx channel settings for various global channels, but since I don't have the DAQmx card attached to the system, I can't create global channels, and I can't set the channel nodes to return the data I need. In example, I need to be able to retrieve the Max and Min values for a voltage channel, but the channel properties node only lets me access/see the properties Active Channel, Channel Type, Physical Channel Name, and Description. Is there anyway to define a simulated channel for purposes of programming without the DAQmx card being there?
    I'm trying to avoid defining the channels at run time by using globals, but if I need to, I can define them via config file and pull the settings off that as well.
    Jon D
    Certified LabVIEW Developer.

    It is possible to have a DAQmx global channel in MAX without having the DAQ Device in that system. You will need to create the global channel in MAX on the system that does have the DAQ Device. Then select File>>Export in MAX on that system to create a .nce configuration file for MAX. You can then load that file into MAX on your development system by selecting File>>Import. That will import your global channels into MAX on your development system. However, they will show up in MAX with a red X next to them indicating that the device is not present.
    -Alan A.

  • How to Programmatically Set Scale on DAQmx Channel? Possible LabView Bug?

    Hi folks.  I have researched this question here on the forums and think I know what I need to do, but it doesn't work.
    What I'm Trying to Do
    I am creating a DAQmx Analog Out task that will write to a dozen channels.  I would like to set the scale on each of those channels to one of a handful of custom scales that I've already defined in my project.  From reading various posts on this forum, it sounds like I want to pull each channel out of the task using the DAQmx Task property node, then set each scale by writing to the AO.CustomScaleName property within the DAQmx Channel property node.  See the attached screenshots and VI file.
    The Problem
    I keep getting error 200378 "Custom scale specified does not exist".  The custom scale definitely exists in the project, but the VI won't recognize it.  It sounds similar to the bug described in this thread:  http://forums.ni.com/t5/LabVIEW/Why-do-I-receive-Error-200378-quot-Custom-scale-specified-does/td-p/...  However, I've tried the various workarounds mentioned in that thread (opening VI outside of project, then from within project, etc) and I don't get any different results.  I'm running LV 8.6.1
    Questions
    Does this VI work for anyone else once you've defined a custom scale with the same name as the one in the VI?
    Am I doing something obviously wrong?
    Is there a better way to do this?
    Thanks for any advice, it is much appreciated.  I've attached screenshots of both the VI and the Project window showing the custom scale exists, and I've attached the VI itself.
    Attachments:
    custom_scale_screenshot.JPG ‏38 KB
    project_explorer.JPG ‏68 KB
    daqmx_task_property_nodes.vi ‏64 KB

    This workaround isn't exactly what you are trying to do, but I have made a set of VI's that will let you open up the DAQmx Assistants from LabVIEW code programmatically.
    Programmatically Call NI DAQmx Assistants
    You can call the VI to edit a channel and manually reassign the scale if you want to avoid going straight to MAX.

Maybe you are looking for