Create NI task#
In addition to specifying the task in the NI MAX, the task can also be specified in the code.
Input task#
First create a NITask
object:
task = LDAQ.national_instruments.NITask('task', sample_rate=1000, settings_file=None)
The arguments of the NITask
class are:
task_name
: The name of the task.sample_rate
: The sample rate of the task in Hz.settings_file
: The path to the settings (xmlx) file. Optional.
Then, the channels can be added to the task:
task.add_channel(channel_name='Channel_1', device_ind=0, channel_ind=0, sensitivity=100, sensitivity_units='mV/g', units='g')
task.add_channel(channel_name='Channel_2', device_ind=0, channel_ind=1, sensitivity=100, sensitivity_units='mV/g', units='g')
After all channels are added to the task, the task can be passed to the NIAcquisition
object:
acq = LDAQ.national_instruments.NIAcquisition(task, acquisition_name='source_name')
For more details, see getting started page.
Note
The task is not created until the acquisition is started or the save
method is called (see Save task).
Settings file#
To simplify the creation of the settings file, a settings file can be created. The settings file is a
xmlx
file which has the following column names:
serial_nr
: serial number of the sensor.sensitivity
: sensitivity of the sensor.sensitivity_units
: units of the sensitivity (seeLDAQ.UNITS
for the list of supported units).units
: units of the sensor.
To use the settings file, pass it to the NITask
object:
task = LDAQ.national_instruments.NITask('task', sample_rate=1000, settings_file='settings.xmlx')
Then, when adding the channels, the sensitivity, sensitivity units and units can be ommitted.
The channel_name
, device_ind
and channel_ind
are still required. Additionally, the
serial number of the sensor is required to find the correct settings in the settings file.
task.add_channel(channel_name='Channel_1', device_ind=0, channel_ind=0, serial_nr='123')
task.add_channel(channel_name='Channel_2', device_ind=0, channel_ind=1, serial_nr='456')
Custom scale#
It is possible to defina a custom linear scale for the sensor. This can be done by passing the scale
argument
to the add_channel
method (the sensitivity
and sensitivity_units
arguments are then not required):
task.add_channel(channel_name='Channel_1', device_ind=0, channel_ind=0, units='N', scale=113.2)
The scale
argument must be float
or tuple
:
float
: The scale is the slope of the linear function.tuple
: The first element of the tuple is the slope and the second element is the offset of the linear function.
If the scale
argument is passed, it is assumed, that the measured signal is in Volts
.
The output (scaled) units are specified by the units
argument.
For the example above, the measured signal is in Volts
and the output units are in Newtons
.
The scaled units are an arbitrary string and do not have to be in the LDAQ.UNITS
list.
Save task#
When the task is created and the channels are added, the task can be saved. The saved task will then appear in NI MAX, where it can be edited, deleted, etc.
To save the task, call the save
method of the NITask
object:
task.save()
When the task is saved, the clear_task()
method is automatically called. This means that the task cannot be
directly passed to the NIAcquisition
object. In this case the task’s name must be passed to the NIAcquisition
(see getting started page).
Note
If the user would like to create and save the task and still pass the NITask
object to the NIAcquisition
class directly,
the following must be called:
task.save(clear_task=False)
Output task#
Output task can also be create by LDAQ
. First, create LDAQ.national_instruments.NITaskOutput
object:
output_task = LDAQ.national_instruments.NITaskOutput('task', sample_rate=1000)
Then add the analog output channels:
output_task.add_channel(channel_name='Channel_1', device_ind=0, channel_ind=0, min_val=-10, max_val=10)
output_task.add_channel(channel_name='Channel_2', device_ind=0, channel_ind=1, min_val=-10, max_val=10)
Finally, add the output_task
to the NIGenerator
class (instead of the task name):
gen = LDAQ.national_instruments.NIGeneration(output_task, generator_name='source_name')
For more details on LDAQ.national_instruments.NIGenerator
class, see generation page.
Note
The units of the output channels are Volts
.