The USB-1616HS Series includes the following hardware:
The USB-1616HS Series support the following features.
Functions
UL: cbAIn(), cbAInScan(), cbALoadQueue(), cbFileAInScan(), cbAPretrig()*
UL for .NET: AIn(), AInScan(), ALoadQueue(), FileAInScan(), APretrig()*
Python for Windows: a_in(), a_in_scan(), a_load_queue(), a_trig()
* Pretrigger capability is implemented in software. PretrigCount must be less than the TotalCount and cannot exceed 100,000 samples. TotalCount must be greater than the PretrigCount. If a trigger occurs while the number of collected samples is less than the PretrigCount, that trigger will be ignored. Requires a call to SetTrigger for the analog trigger type.
Options
BACKGROUND, BLOCKIO, CONTINUOUS, DMAIO, EXTCLOCK, EXTTRIGGER*, HIGHRESRATE
* With EXTTRIGGER mode, the first channel in the scan is the analog trigger channel.
HighChan
0 to 15 in single-ended mode; 0 to 63 single-ended when the AI-EXP48 expansion board is installed.
0 to 7 in differential mode; 0 to 31 differential when the AI-EXP48 expansion board is installed.
Rate
Up to 1 MHz
Range
| BIP10VOLTS (±10 volts) | BIPPT5VOLTS (±0.5 volts) |
| BIP5VOLTS (±5 volts) | BIPPT2VOLTS (±0.2 volts) |
| BIP2VOLTS (±2 volts) | BIPPT1VOLTS (±0.1 volts) |
| BIP1VOLTS (±1 volts) |
Functions
UL: cbAOut(), cbVOut(), cbAOutScan()
UL for .NET: AOut(), VOut(), AOutScan()
Python for Windows: a_out(), v_out(), a_out_scan()
Options
ADCCLOCK, ADCCLOCKTRIG, BACKGROUND, CONTINUOUS, EXTCLOCK, NONSTREAMEDIO, SIMULTANEOUS
NONSTREAMEDIO can only be used with the number of samples set equal to the size of the FIFO or less. The FIFO holds 524,288 samples.
HighChan
USB-1616HS-4: 0 to 3
USB-1616HS-2: 0 to 1
Rate
1 MHz
Range
Ignored - not programmable; fixed at BIP10VOLTS (±10 volts)
DataValue
0 to 65,535
Refer to 16-bit values using a signed integer data type for information on 16-bit values using unsigned integers.
Pacing
Hardware pacing, external or internal clock supported.
Configuration
Functions
UL: cbDConfigPort()
UL for .NET: DConfigPort()
Python for Windows: d_config_port()
PortNum
FIRSTPORTA, FIRSTPORTB, FIRSTPORTC
Port I/O
Functions
UL: cbDIn(), cbDOut(), cbDInScan(), cbDOutScan()*
UL for .NET: DIn(), DOut(), DInScan(), DOutScan()*
Python for Windows: d_in(), d_out(), d_in_scan(), d_out_scan()
*FIRSTPORTA and FIRSTPORTB must be set for output to use this function. Refer to DIO PortNum in the Hardware Considerations section for more information.
Options
ADCCLOCK, ADCCLOCKTRIG, BACKGROUND, CONTINUOUS, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, NONSTREAMEDIO, WORDXFER
Rate
12 MHz
PortNum
FIRSTPORTA, FIRSTPORTB, FIRSTPORTC
DataValue
0 to 255
0 to 65,535 using the WORDXFER option with FIRSTPORTA
Bit I/O
Functions
UL: cbDBitIn(), cbDBitOut()
UL for .NET: DBitIn(), DBitOut()
Python for Windows: d_bit_in(), d_bit_out()
PortType
FIRSTPORTA
BitNum
0 to 23
Functions
UL: cbCIn(), cbCIn32(), cbCConfigScan(), cbCInScan(), cbCClear()
UL for .NET: CIn(), CIn32(), CConfigScan, CInScan(), CClear()
Python for Windows:c_in(), c_in_32(), c_config_scan(), c_load(), c_load_32(), c_clear()
Note: Counters on these boards are zero-based (the first counter number is "0").
Rate
6 MHz
CounterNum
0 to 3
Options
BACKGROUND, CONTINUOUS, CTR32BIT, EXTCLOCK, EXTTRIGGER, HIGHRESRATE
You can use the cbSetTrigger() function to program the trigger for rising edge, falling edge, or the level of the digital trigger input (TTL).
Mode
When using Period and PulseWidth modes, note that the initial period is dependent upon the frequency of the signal being measured, a signal is required in order to latch data into the register, and the first sample in a scan is always zero, since it is not data that has been latched by the measured signal.
When using cbCIn()/CIn()/c_in() and cbCIn32()/CIn32/c_in_32(), PERIOD, PULSEWIDTH, and ENCODER modes are not available.
LoadValue
0 to 65,535 (Refer to 16-bit values using a signed integer data type in the Universal Library Description and Use section for information on 16-bit values using unsigned integers.)
Functions
UL: cbTimerOutStart(), cbTimerOutStop()
UL for .NET: TimerOutStart(), TimerOutStop()
Python for Windows: timer_out_start(), timer_out_stop()
TimerNum
0 to 1
Frequency
15.260 Hz to 1.0 MHz
Functions
UL: cbSetTrigger()
UL for .NET: SetTrigger()
Python for Windows: set_trigger()
TrigType
TRIGABOVE, TRIGBELOW, TRIGHIGH, TRIGLOW, TRIGPOSEDGE, TRIGNEGEDGE
Digital triggering (TRIGHIGH, TRIGLOW, TRIGPOSEDGE, TRIGNEGEDGE) is not supported for pre-trigger acquisitions (cbAPretrig() function).
Analog triggering (TRIGABOVE, TRIGBELOW) is not supported for the cbDInScan() function and the cbCInScan() function.
Threshold
Analog hardware triggering, 12-bit resolution: 0 to 4,095 (supported for cbAInScan() only)
Analog software triggering, 16-bit resolution: 0 to 65,535 (supported for cbAPretrig() only)
Functions
UL: cbTIn(), cbTInScan(), cbGetTCValues()
UL for .NET: TIn(), TInScan(), GetTCValues()
Python for Windows: t_in(), t_in_scan(), get_tc_values()
Options
NOFILTER
Scale
CELSIUS, FAHRENHEIT, KELVIN
HighChan
0 to 7
0 to 31 when the AI-EXP48 expansion board is installed.
Functions
UL: cbDaqInScan()
UL for .NET: DaqInScan()
Python for Windows: daq_in_scan()
Options
BACKGROUND, BLOCKIO, CONTINUOUS, DMAIO, EXTCLOCK, EXTTRIGGER, HIGHRESRATE
ChanTypeArray
ANALOG, DIGITAL8, DIGITAL16, CTR16, CTR32LOW, CTR32HIGH, CJC, TC, SETPOINTSTATUS
When mixing the ANALOG channel type with any other input types, the ANALOG channels should be first in the list.
Note: For information on associating CJC channels with TC channels, refer to the Associating CJC channels with TC channels discussion in the Hardware considerations section below.
ChanArray
ANALOG:
DIGITAL8: FIRSTPORTA, FIRSTPORTB, FIRSTPORTC
DIGITAL16: FIRSTPORTA
CTR16: 0-3 counters
CTR32LOW: 0-3 counters
CTR32HIGH: 0-3 counters
CJC: 0 to 5; 0 to 11 when the AI-EXP48 expansion board is installed.
TC: 0 to 7; 0 to 31 when the AI-EXP48 expansion board is installed.
SETPOINTSTATUS: 16-bit port that indicates the current state of the 16 possible setpoints.
ChanTypeArray flag value:
Rate
Analog: Up to 1 MHz.
Digital: Up to 12 MHz if no analog channel is selected. Otherwise up to 1 MHz.
Counter: Up to 12 MHz if no analog channel is selected. Otherwise up to 1 MHz.
GainArray
ANALOG only; ignore for other ChanTypeArray values.
BIP10VOLTS (±10 volts)
BIP5VOLTS (±5 volts)
BIP2VOLTS (±2 volts)
BIP1VOLTS (±1 volts)
BIPPT5VOLTS (±0.5 volts)
BIPPT2VOLTS (±0.2 volts)
BIPPT1VOLTS (±0.1 volts)
PretrigCount
100000 max
Functions
UL for .NET: DaqSetTrigger()
Python for Windows: daq_set_trigger()
TrigSource
TRIG_IMMEDIATE, TRIG_EXTTTL, TRIG_ANALOGHW, TRIG_ ANALOGSW, TRIG_DIGPATTERN, TRIG_COUNTER, TRIG_SCANCOUNT
TrigSense
RISING_EDGE, FALLING_EDGE, ABOVE_LEVEL, BELOW_LEVEL, EQ_LEVEL, NE_LEVEL
TrigEvent
START_EVENT, STOP_EVENT
Functions
UL for .NET: DaqSetSetpoints()
Python for Windows: daq_set_setpoints()
SetpointFlagsArray
SF_EQUAL_LIMITA, SF_LESSTHAN_LIMITA, SF_GREATERTHAN_LIMITB, SF_OUTSIDE_LIMITS, SF_HYSTERESIS, SF_UPDATEON_TRUEONLY, SF_UPDATEON_TRUEANDFALSE
SetpointOutputArray
SO_NONE, SO_FIRSTPORTC, SO_TMR0, SO_TMR1
Also available for USB-1616HS-2:
SO_DAC0, SO_DAC1
Also available for USB-1616HS-4:
SO_DAC0, SO_DAC1, SO_DAC2, SO_DAC3
LimitAArray
Any value valid for the associated input channel.
Ignored for SF_GREATERTHAN_LIMITB
LimitBArray
Any value valid for the associated input channel and less than LimitA.
Ignored for SF_EQUAL_LIMITA, SF_LESSTHAN_LIMITA
Output#Array
For SetpointOutputArray = SO_NONE: Ignored
For SetpointOutputArray = SO_FIRSTPORTC: 0 to 65,535
For SetpointOutputArray = SO_TMR#: 0 (to disable the timer) or 15.26 to 1000000 (to set the output frequency)
For SetpointOutputArray = SO_DAC#: Voltage values between -10 and +10
OutputMask#Array
For SetpointOutputArray = SO_FIRSTPORTC: 0 to 65,535
For SetpointOutputArray = all other values: Ignored
SetpointCount
0 (to disable setpoints) to 16
Functions
UL: cbDaqOutScan()
UL for .NET: DaqOutScan()
Python for Windows: daq_out_scan()
Options
ADCCLOCK, ADCCLOCKTRIG, BACKGROUND, CONTINUOUS, EXTCLOCK, NONSTREAMEDIO, SIMULTANEOUS
ChanType
ANALOG, DIGITAL16
ChanArray
ANALOG:
DIGITAL16:
Rate
ANALOG: Up to 1 MHz
DIGITAL16: Up to 12 MHz (system-dependent) if no analog channel is selected. Otherwise up to 1 MHz.
Range
BIP10VOLTS (±10 volts)
This hardware supports device detection with the API. Refer to the InstaCal, API Detection, or Both? section for information about whether to use InstaCal or the API to detect and configure hardware.
Factory serial number
Listed as Serial # (read only)
Input mode
Input Mode drop-down combo box for single-ended or differential.
Calibration coefficients table
Calibration Coefficients drop-down combo box.
Input pacer clock edge
APR Edge drop-down combo box.
Input pacer clock direction
APR Pin Direction drop-down combo box.
Output pacer clock edge
DPR Edge drop-down combo box.
Output pacer clock direction
DPR Pin Direction drop-down combo box.
ADC settling time
ADC Settling Time drop-down combo box.
Rejection frequency
Reject Frequency drop-down combo box.
No. samples/average
No. Samples/Avg drop-down combo box.
Thermocouple type
Chanx drop-down combo box for channel 0 to 3.
Factory serial number
ConfigItem = BIDEVSERIALNUM
UL for .NET: GetDeviceSerialNum()
Python for Windows: get_config_string()
config_item = DEVSERIALNUM
Input mode
UL: cbAInputMode()
UL for .NET: AInputMode()
Python for Windows: a_input_mode
Calibration coefficients table
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BICALTABLETYPE
ConfigVal = CAL_TABLE_FACTORY, CAL_TABLE_FIELD
UL for .NET: GetCalTableType(), SetCalTableType()
Python for Windows: get_config(), set_config()
config_item = CALTABLETYPE
config_val = FACTORY, FIELD
Input pacer clock edge
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BIEXTINPACEREDGE
ConfigVal = EXT_PACER_EDGE_RISING, EXT_PACER_EDGE_FALLING
UL for .NET: GetExtInPacerEdge(), SetExtInPacerEdge()
Python for Windows: get_config(), set_config()
config_item = EXTINPACEREDGE
config_val = ExtPacerEdge enum
Input pacer clock direction
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BIINPUTPACEROUT
ConfigVal = ENABLED, DISABLED
UL for .NET: GetInputPacerOut(), SetInputPacerOut()
Python for Windows: get_config(), set_config()
info_type = BOARDINFO
config_item = INPUTPACEROUT
config_val = State enum
Output pacer clock edge
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BIEXTOUTPACEREDGE
ConfigVal = EXT_PACER_EDGE_RISING, EXT_PACER_EDGE_FALLING
UL for .NET: GetExtOutPacerEdge(), SetExtOutPacerEdge()
Python for Windows: get_config(), set_config()
config_item = EXTOUTPACEREDGE
config_val = ExtPacerEdgeType
Output pacer clock direction
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BIOUTPUTPACEROUT
ConfigVal = ENABLED, DISABLED
UL for .NET: GetOutputPacerOut(), SetOutputPacerOut()
Python for Windows: get_config(), set_config()
config_item = OUTPUTPACEROUT
config_val = ENABLED (output), DISABLED
ADC settling time
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BIADCSETTLINGTIME
ConfigVal = SETTLE_DEFAULT, SETTLE_1us, SETTLE_5us, SETTLE_10us, SETTLE_1ms
UL for .NET: GetAdSettlingTime(), SetAdSettlingTime()
Python for Windows: get_config(), set_config()
config_item = ADCSETTLETIME
config_val = SettleTime
Rejection frequency
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BITEMPREJFREQ
ConfigVal = 0 (off), 50 (50 Hz), 60 (60 Hz)
UL for .NET: GetTempRejFreq(), SetTempRejFreq()
Python for Windows: get_config(), set_config()
config_item = TEMPREJFREQ
config_val = 0, 50, 60
No. samples/Average
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BITEMPAVG
ConfigVal = 1 to 16384 (Rejection Frequency is off), 16 to 16384 (Rejection Frequency is on)
UL for .NET: GetTempAvg(), SetTempAvg()
Python for Windows: get_config(), set_config()
config_item = TEMPAVG
config_val = 1 to 16384 (if the TEMPREJFREQ rejection frequency is off (0), 16 to 16384 (if the TEMPREJFREQ rejection frequency is on (50 or 60)
Thermocouple type
UL: cbGetConfig(), cbSetConfig()
ConfigItem = BICHANTCTYPE
ConfigVal = TC_TYPE_J, TC_TYPE_K, TC_TYPE_S, TC_TYPE_R, TC_TYPE_B, TC_TYPE_E, TC_TYPE_T, TC_TYPE_N
UL for .NET: GetChanTcType(), SetChanTcType()
Python for Windows: get_config(), set_config()
config_item = CHANTCTYPE
config_val = TcType enum
The TC channels must immediately follow their associated CJC channels in the channel array. For accurate thermocouple readings, associate CJC channels with the TC channels as listed in the following table:
| CJC channels | TC channels |
| CJC0 | TC0 |
| CJC1 | TC1 and TC2 |
| CJC2 | TC3 |
| CJC3 | TC4 |
| CJC4 | TC5 and TC6 |
| CJC5 | TC7 |
| When the AI-EXP48 board is installed: | |
| CJC6 | TC8 through TC11 |
| CJC7 | TC12 through TC15 |
| CJC8 | TC16 through TC19 |
| CJC9 | TC20 through TC23 |
| CJC10 | TC24 through TC27 |
| CJC11 | TC28 through TC31 |
The board must be configured for differential inputs when using thermocouples. TC inputs are supported by differential mode configuration only.
For input and output scans, the count must be set to an integer multiple of the number of channels or a BADCOUNT error is returned.
Sampling and update rates are system-dependent. Data overruns/underruns may occur with higher sampling rates when using BACKGROUND and CONTINUOUS modes. To avoid this, use a larger buffer/count size, or use NONSTREAMEDIO mode, if supported.
The minimum size buffer is 256 for cbAOutScan(). Values less than that result in a BADBUFFERSIZE error.
For most applications, settling time should be left at the default value of 1 µs. However, if you are scanning multiple channels and one or more channels are connected to a high impedance source, you may get better results by increasing the settling time. Keep in mind that increasing the settling time reduces the maximum acquisition rate. You can set the time between A/D conversions with the ADC Settling Time option in InstaCal. Select between 1 µs, 5 µs, 10 µs, or 1 ms.
You enable setpoints with the SETPOINT_ENABLE flag. This flag must be OR'ed with the ChanTypeArray argument values. Configure setpoint criteria with cbDaqSetSetpoints()/DaqSetSetpoints()/daq_set_setpoints(). The number of channels set with the SETPOINT_ENABLE flag must match the number of setpoints set by the SetpointCount argument (cbDaqSetSetpoints()/DaqSetSetpoints()).
With NONSTREAMEDIO mode, you can output non-streamed data to a specific DAC output channel. The aggregate size of the data output buffer must be less than or equal to the size of the internal data output FIFO in the device. This allows the data output buffer to be loaded into the device's internal output FIFO. Once the sample updates are transferred or downloaded to the device, the device is responsible for outputting the data. You can't make any changes to the output buffer once the output begins.
Specify the ADCCLOCK option to trigger a data output operation upon the start of the ADC clock.
For digital output scans, FIRSTPORTA and FIRSTPORTB are treated as one 16-bit port. These functions can only be used with FIRSTPORTA. Configure both FIRSTPORTA and FIRSTPORTB for output using cbDConfigPort()/DConfigPort()d_config_port().
You can operate up to four USB-1616HS Series boards devices by setting the direction of the A/D and D/A pacer pins (APR or DPR) in InstaCal.
On the board used to pace each device, set the pacer pin that you want to use (APR or DPR) for Output. On the board(s) that you want to synchronize with this board, set the pacer pin that you want to use (APR or DPR) for Input.
You set the direction using the InstaCal configuration dialog's APR Pin Direction and DPR Pin Direction settings.
Wire the pacer pin configured for output to each of the pacer input pins that you want to synchronize.
To configure a counter channel as a multi-axis quadrature encoder, use the cbCConfigScan()/CConfigScan()/c_config_scan() Mode values to set a specified counter to encoder mode, set the encoder measurement mode to X1, X2, or X4, and then set the count to be latched either by the internal "start of scan" signal (default) or by the signal on the mapped channel.
You can optionally perform the following operations:
The CConfigScan() method's Bit32 counter mode option only affects counter resolution for asynchronous calls (CIn()/CIn32()/), and only when the counter is configured for StopAtMax.
This mode is recommended for use only with CIn32(). Using the Bit32 option with CIn() is not very useful, since the value returned by CIn() is only 16 bits. The effect is that the value returned by CIn() rolls over 65,535 times before stopping.
When using Period and PulseWidth modes, note that the initial period is dependent upon the frequency of the signal being measured, a signal is required in order to latch data into the register, and the first sample in a scan is always zero, since it is not data that has been latched by the measured signal.
Concurrent operations are not allowed. If you invoke a function while another function is already running on the device, the ALREADYACTIVE error is returned.