Data Acquisition Idea Exchange

Community Browser
Top Authors
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

The use of NI DAQmx Global Virtual Channels is the best way that I have found to configure and manage parameter scaling to provide measurement data directly in engineering units. The software architecture of our data acquisition applications is centered around the use of Global Channels (aka Virtual Channels). Configuring Global Channels using NI MAX (Measurement & Automation Explorer) is convenient for a small number of measurement channels. However, in system configurations with hundreds of channels, to create and manage them effectively, you need to build your own application for this task.  We have built custom Global Channel creation VIs in LabVIEW for each type of analog input or sensor type that we use. These VIs are designed to read a configuration table in CSV format, and then loop through creating a Global Channel for each table row of information.  This process allows for more flexibility in naming the channels as well as setting different scaling and storage of other channel-specific metadata.

 

We employ multiple networked data acquisition systems with Linux-based NI controllers, and we manage those DAQmx Global Channels across our network.  Currently, to create DAQmx Global Channels on these systems, we must directly connect to the NI controller in the LabVIEW Project View and run our suite of Global Channel creation apps on that particular controller using their accompanying, locally-stored CSV configuration file.  Currently, our networked distributed data acquisition system has grown to 10 controllers, each with their own set of common I/O.  The creation of those Global Channels has now become cumbersome because we have five I/O types to manage and hence five custom LabVIEW applications each with a specific configuration file to run on 10 controllers individually.

 

A potential simplification to the process would be to run our custom LabVIEW applications on a Windows host PC and create the DAQmx Global Channels remotely.  That would eliminate the need to directly connect to each controller from the LabVIEW Project View and copy a common set of config files to each controller and run the same applications on individually on each controller.  However, the current version of DAQmx makes no provision for remotely creating DAQmx Global Channels.  Note that NI-MAX is able to create DAQmx Global Channels remotely, but this functionality is not exposed for LabVIEW programmers to utilize.  My idea/suggestion is that NI make this functionality available in LabVIEW.

After consulting the community and raising a ticket with NI’s support team, we have determined that there is no good way of programmatically removing old or disconnected remote systems.

DeleteDisconnectedSystems.png

I propose that Ni Sys Config pallet be expanded to include a “Delete Disconnected Systems”. This would clear MAX’s cache of disconnect remote systems. Just like the manual method available through MAX.

IMAQdx Timeout is a non settable property. It is fixed on 5s

When I do not trigger my camera for 5 seconds (and that is what I want regularly after aquisitions at 100FPS) , I get a timeout error.

In dealing with multiple projects and systems that each have different sets of tasks in MAX, I think it would be very handy if you could make virtual folders in the directory style listing under "NI-DAQmx Tasks" - that way you could folder up tasks by project or section of a project instead of having a long list of task names.

 

Anyone else think this would be helpful? or might it cause an issue in some way?

 

-pat

A DAQmx channel control allows available channels to be filtered for IO type (Analogue Input, Analogue Output etc) using the "IO Name Filtering..." function

 

channel.jpg

 

A DAQmx task control on the other hand doesn't.

task.jpg

 

I'd find the option to filter listed tasks on IO type pretty usefull.

 

cheers.

 

  1. DAQmx Flatten Channel to String.vi still uses an unbundle function to wire the error status to the case structure.
  2. The Call Library Function Node should be wired to the error cluster.

 

DAQmx Flatten Channel String.jpg

 

 

For each device, MAX will use an unique device number.

This is no problem with fixed measurement equipments.

With USB devices this may become a problem.

On a school, a student will work with different combinations of computer and device.

 

If the student wants to use his program with a different device, he will get an error.

Even if the device is the same type, but has a different serial number.

New Picture (1).png

To solve it, the student needs to open all DAQ routines and to alter the device number.

Or he needs to change the DAQ assistant routine into a VI and change the constant device number by a routine as shown in DAQmx device to use.vi.

 DAQmx device to use.png

This same problem occurs when using NI-IMAQdx devices.

 

Solution:

Make it possible to select a device by type instead of a device by number.

New Picture.png


I recently had a customer create a global virtual channel in Measurement and Automation Explorer (MAX).  They then set the maximum and minimum values for the input range of their signal. 

 

GlobalVirtualChannel.jpg

 

 

 

 

minmax.jpg

 

My customer wanted to access the +2 and -2 values entered above and display them in LabVIEW.  However, the property nodes for global virtual channels only accesses the limits of the board.  For example, the customer's board may only be able to handle voltages between +/- 10 Volts.  No matter which property node we chose... all that was returned was the +/- 10 Volt range.  Could we please give customers access to this information?

Background question here:

http://forums.ni.com/t5/Multifunction-DAQ/Channel-Calibration-information/m-p/1295908

 

Channel calibration in MAX is too limited to be very useful. According to NI AE, from MAX you can only create a table for calibration, not a polynomial fit. I assume intermediate values are linearly interpolated, but that wasn't specified. Programmatic calibration to enable polynomial cal as described in the above listed topic makes traceability problematic. 

 

 

I propose that the channel calibration capabilities in MAX be amended to allow the user to select calibration mapping, either TABLE or POLYNOMIAL FIT. 

OF course, the user should be able to select the polynomial order, and the R-value should be clearly indicated.

 

All of these properties should be included in any report generated from MAX. 

 

 

 

 

Problem:  When creating large numbers of virtual channels, the calibraton of these channels can be very time consuming and cumbersome.  In large applications there can be literally hundreds of channels requiring days to calibrate. 

 

Calibration equipment these days can be purchased with programmable capability or remote communication.  Having low level functions available in Labview to calibrate MAX virtual channels programmatically would greatly reduce the time needed for calibration and reduce the potential errors of calibrating each point individually.  It would also be useful to view the calibration data and scaling data from MAX in the Labview environment.

I am learning how to use the scripting feature of NI-RFSG and the script editor is an incredible frustrating tool.

 

Why do you show text if you can't type? Show a diagram if you don't want people typing.

 

I am using Notepad to type my scripts and then moving the text over.

 

There should be a way to allow people to type in the script editor and do on the fly syntax checking... or even do it after. I can export my script to the clipboard, but why can't I paste into it?

 

Just let people type.

In the DAQmx Physical Channel Control if Analog Input is selected I would like to filter on the type of module i.e. Thermocouple, strain, Current, etc.

Filter Analog Input Measurement Type.jpg

I configure DAQmx channels, tasks, and scales as well as CAN messages and channels in MAX. It would be nice, if I could change the ordering of these elements after creation. It would also be nice to have an option to remove all configured channels (and tasks and scales) as well as CAN messages and channels, if I want to load the configuration of another project. Now I have to go to every section and delete the configuration by hand.

 

It would also be cool, if I could configure DAQmx variables in MAX, which I can use (write and read) in LabVIEW, too. E.g. I have a lot of tasks, which all use the same aquisition rate. If I have to change the rate, I have to change every task by hand. If I could use a variable, I just would change the variable. This would save a LOT OF WORK with huge DAQmx configurations.