NI4462_TEST

Section: User Commands (1)
Updated: July 2012
Index Return to Main Contents
 

NAME

ni4462_test - capture from the NI4462 card, experiment with parameters  

SYNOPSIS


 Sets up the NI4462 device with desired parameters: channel, freq, count, gain, coupling, terminal mode, triggering
 Outputs data in format containing one or more columns of int/float data, and statistics.
 Can also do diagnostics, self-calibration and reset of the device.
 The source (in C) is highly commented as example code for NI DAQmx (libdaqmx).

 

DESCRIPTION


 This is a simple program for basic usage and experimentation with the National Instruments NI 4462 PCI device, configuring the various modes,
 and capturing some data. The source is highly commented, as example code. Debugging reads settings back from the device.
 This program creates a DAQmx Analog_Voltage_Input Task, configures the Gain, AC/DC Coupling, Differential Input, Triggering, Count,
 Sample Frequency, then runs the task, while writing out data. After the task stops, overloads are detected, and statistics are printed.
 
 USAGE:  ni4462_test  [OPTIONS]  outfile.dat
 
 OPTS:  -c  N, all, sum          Capture on channel N (0-3), or all 4, or sum of all 4. [default: 0].
        -f  freq          (Hz)   Capture at freq Hz. Range is [31.25 Hz, 204.8 kHz]. Use -d to find the coerced freq. [default: 200000 Hz].
        -n  N, cont              Capture number of samples (for each channel), or continuously till Ctrl-C. Includes -p, not -j. [default: 10000].
        -i  ac, dc               Input coupling: AC-coupled, DC-coupled. [default: dc].
        -m  diff, pdiff          Terminal Mode: Differential, Pseudodifferential. [default: diff].
        -v  v_limit       (V)    Set voltage range for (symmetric) input voltage swing of [-v_limit, +v_limit]. [default: 10.00 V].
        -t  fe, re, now          Triggering: Falling-edge, Rising-edge, Start immediately. [default: now].
        -p  N                    Pretriggering: N of the total samples will be acquired before the trigger. Enables 'Reference Trigger'. [default: 0]
        -j  N, auto              Junk samples: acquire/discard N extra initial samples. Can compensate for ADC Filter Delay pre-capturing. [default: 0].
        -g                       Gain is new/Preamp was saturated. Sleep after setting the gain, to allow a (possibly saturated) preamp to settle.
        -o  floatV, int32adc     Set output format: ASCII floating-point-64 in Volts, ASCII int32 in raw ADC-levels. [default: floatV].
        -l  on, off              Enable NI's 'Low Frequency Enhanced Alias Rejection'. Recommended. [default: off].
        -e  fe, re               Sample on the this edge of the internal clock. Negligible effect. [default: re]
        -T  triggerready_file    When ready for ext-trigger, delete this (pre-created) empty file. Other processes can inotifywait() on it.
 
        -s                       Calculate summary statistics after running (or after Ctrl-C interrupt). Print to stderr.
        -b                       Brief output on last-line: rounded std-dev(s), in uV (or ADC-levels, depending on -o). Useful for speech-synth.
        -B                       Like -b, but print the mean(s) in mV. Useful for parsing in a pipe. (When combined with -b, this prints first)
 
        -x                       Allow overwriting of existing output file. [default: no].
        -d                       Enable verbose debugging. Read back exact values of coerceable settings. Make all warnings fatal.
        -A                       Stay Alive. Continue, even after fatal errors (even with -d). Makes voltage-overloads non-fatal.
        -D                       Debug log to syslog (identifier: Dev1, level: log_debug, facility: log_user). For reverse-engineering.
        -h                       Show this help message.
 
        -I                       Get detailed information about the card (ni4462_test): serial number, DAQmx version, calibration, then exit.
        -S                       Self-Calibrate, then exit. This takes about 2.5 minutes, and is not implicit at power-on.
        -R                       Reset the device first. Useful to kill any background tasks, or break locks held by another running instance.
        -Q                       Reset and then Quit immediately (without acquiring data).
 
 NOTES:   * The device is actually more flexible than this program supports: it can combine channels and modes in an arbitrary manner, can
             support other input types (IEPE / TEDS sensors), and can use analog level/window triggers.
          * The output format is suitable for python's numpy.loadtxt(): multiple columns (Channel 0 on left), of ASCII int/float data, with
             comment lines prepended by '#'. Useful for fftplot/linregplot. If outfile is '-', it will be stdout.
          * The frequency of the sampling rate is coerced to the nearest 181.9 uS/s. Use -d to show actual value.
          * The voltage range is coerced to [-x,+x] where x={0.316, 1, 3.16, 10, 31.6, 100}. Use -d to show actual value. (Max safe input is 42.4 V).
          * The NI 4462 doesn't support configuration of the input impedance; it is fixed at 1 M.
          * When selecting AC coupling, a settling time of 0.782 s is added at TaskCommit (see manual: Analog Input Channel Configurations).
          * When the pre-amp had been saturated, and we have now reduced the gain, -g delays by 1.000 s after TaskCommit. Pre-amp can settle.
          * The max (finite) number of samples supported is 16777215; more will be treated as cont+break, i.e. slightly over-sample and discard.
          * Digital filtering in the ADC causes triggers to appear 'early'; up to 63 samples can be received before the trigger pulse. (this
             value can vary with sample frequency if Low Freq Enhanced Alias Rejection is enabled [default: off]). Use: '-j auto'.
          * Numbering: -n includes -p but excludes -j. E.g. "-n500 -p100 -j20" acquires 500 data-points, of which 80 precede the trigger pulse,
             (discarding 20 preceeding points). This assumes that the filter-delay has also been externally-compensated by a delay-line on PFI0.
             For compensation without a delay-line (at high-frequency, eg 200000 Hz), use '-p0 -j63', or '-p2 j65', and set -n to what you want.
          * To view output, use dat2wav (convert to wav file), linregplot (plot linear regression), fftplot (plot fft spectrum).
          * RTSI and clock outputs are:
             - RTSI2 ai/ReferenceTrigger: 25 ns _-_ pulse on reference trigger start. 
             - RTSI3 ai/StartTrigger: 25 ns _-_ pulse on acquisition start. 
             - RTSI6 ai/SampleClock: pulse train at sample freq. Ref_trigger starts this immediately, else silent till trigger; then N pulses.
             - RTSI8 SampleClockTimebase: constant clock at the oversampled rate, 128x f_sample.
             - RTSI9 SyncPulse: very short pulse to sync multiple NI4462s.
             - clock output: 100 MHz extracted directly from Crystal oscillator via LVDS (FIN1001)
          * The PulseBlaster's HW_Trigger is gated by RTSI6 (D flip-flop) to avoid jitter; must operate in reference-trigger mode.
          * The filter-delay can be compensated by externally delaying the trigger pulse to PFI0; use arduino_delay to control the delay-line.
 
 SIGNALS: * SigINT (Ctrl-C) cleanly stops sampling at end of loop; SigQUIT (Ctrl-\) quits immediately
          * SigUSR1 prints state to stderr: Initialising, Calibrating, Configuring, Committing, Committed, Ready/Running, Running, Stopping, Stopped.
          * IPC: external process should create empty tempfile, use -T. Then wait for deletion ('inotifywait -e delete'), before sending trigger pulse'.
 
 ERRORS:  * The following errors are detected and handled: invalid/out-of-range configuration, input voltage overload (pre+post digitisation),
            sample-buffer underflow (error: -200278) or overflow (error: -200279), locking i.e. device already in use (error: -50103), R
          * Missed triggering (i.e. a 2nd trigger arrives before the task completes) is NOT detected.
 
 DOCS:    * NI Dynamic Signal Acquisition User Manual, NI 446x Specifications, /usr/local/natinst/nidaqmx/docs/cdaqmx.chm/_main.html (C library).
          * NOTES.txt ( /usr/local/share/doc/ni4462 ).
 

 

AUTHOR

The author of ni4462_test and this manual page is Richard Neill, <ni4462#AT(spamblock)#richardneill.org>
Copyright July 2012; this is Free Software (GPL v3+, with exception for linking against libdaqmx), see the source for copying conditions.

 

SEE ALSO

ni4462_check(1), dataplot(1), linregplot(1), fftplot(1), dat2wav(1), pb_ni4462_trigger(1), inotifywait(1), ni4462_speak_noise(1), pb_convey_hwtrigger(1), nilsdev(1), DAQmxTestPanels(1)


 

Index

NAME
SYNOPSIS
DESCRIPTION
AUTHOR
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 19:55:53 GMT, March 01, 2014