EN | CZ
About companyProductsShopTechnical support
Moravian Instruments
Main page
About company
Software download
Documents download
Products
The Control Web System
VisionLab Machine Vision Software
DataCam Cameras and DataLight Lighting Units
DataLab industrial input/output system
Scientific cameras
Price list
Services
Custom-made Solutions
Technical support
Control Web Examples

Main pageProductsDataLab industrial input/output systemDataLab - Industrial input/output devices

DataLab IO driver for Control Web
 The driver provides digital and analog values of input/output modules of DataLab IO4 and DataLab IO1 devices to the Control Web application or to any application capable to communicate with Active X components.

Contents of section:

Connecting multiple DataLab IO devices to single computer
Driver exceptions
Driver status channel
Driver parameter file
Section [device]
Module sections [module_x]
Channels and modes of individual module types
Digital input modules DI1 and DI2
Digital counter module CNT1
Incremental counter module CNT2
Digital output modules DO1, DO2 and DO3
Analog input module AI1
Analog input module AI2
Analog input module AI3
Analog output module AO1
Combined analog input and digital input/output module AD1
Combined analog input/output and digital input/output module AD2
Combined analog input/output module AIO1
Module for Resistive Temperature Detectors RTD1
Mode and control channel usage
Driver-specific error codes
Module positions and device slots
Driver configuration in the Control Web development environment
DataLab IO system driver
Operating system support
History of function enhancements

Channel data types (either numbers representing analog values or two-state logical values) and directions (either inputs or outputs) are defined by the module types plugged to individual slots of the particular unit. It is necessary to define used module types in the driver parameter file to enable application development. The driver creates a set of channels of appropriate type and direction for each module according to module type.

Channel numbers associated to used modules are freely selectable, but always must create a continuous range. So it is possible to choose only the number of the first channel, other channels are numbered automatically up to the total number of channels available in the module. Channel numbers assigned to individual modules cannot overlap.

If the particular module provides both input and output channels, channel numbers can be assigned independently for both channel groups —number of the first input channel is defined independently on the number of the first output channel.

If the module type plugged to device slot does not correspond to the module type define in the parameter file, the driver detects it and any attempt to read or write to channel of the particular module causes error (see chapter Driver specific error codes).

No other configuration (e.g. unit addressing, communication speed, parity, handshake, stop-bits settings etc.) is required due to the USB interface used in the DataLab IO units. The system works in the pure Plug-and-Play manner.

Remark:

The driver requires Windows 2000 (the Windows NT v5.0) and higher versions—e.g. Windows XP (the Windows NT v5.1). Windows versions lower than 5.0 do not contain APIs necessary to run the driver. But the robustness and reliability, required in the industrial applications, is provided only by the Windows NT based operating systems either way. So the necessity to use Windows NT to run the driver should cause no problems.

The DataLab IO driver for Control Web relies on the DataLab IO system driver (see chapter DataLab IO system driver). It is not possible to communicate with the device over USB without properly installed system driver.

Connecting multiple DataLab IO devices to single computer

It is possible to connect multiple DataLab IO devices to single computer, be it directly to USB ports available on the computer I/O panel or through the USB hub. The operating system assigns unique name to every connected USB device. The name is rather complex string derived from the device driver GUID, USB hub identifiers, USB port number on the particular hub etc. Simply put, these identifiers are intended for distinguishing USB devices within operating system, not to be used by computer users.

But if the application communicates with multiple DataLab IO devices, it is necessary to distinguish them—the concrete signal wired to concrete terminal port of the concrete module must be properly identified in the application. The device serial number is used identify devices. The serial number is always printed on the label on device case and is necessary to write it as parameter id of section [device] in driver parameter file. It is necessary to use one driver instance for every DataLab IO unit. One driver instance (with corresponding one parameter file) cannot handle multiple units at once.

Warning:

It is necessary to define the id parameter not only when single application uses multiple devices, but always when multiple DataLab IO devices are connected to one computer. If the id parameter is not defined, the driver uses the first device it finds.

Sometimes it can be necessary to obtain device identifier in running application. The driver offers special input channel, from which the device identifier can be read (its number is defined by the parameter id_channel of section [device] in the parameter file).

Driver exceptions

The driver generates exceptions always when its state changes. The application (the virtual instrument within application) can handle these exceptions (virtual instrument is activated when the driver exception occurs if its parameter driver_exception contains particular driver name). The exception handling procedure can read the driver status channel to determine device state. An example of the indicator instrument, which handles DataLab IO driver exception and switches on or off according to the device state is in the chapter Driver status channel.

Driver status channel

The status channel (its number is defined by the parameter status_channel of section [device] in the parameter file) provides the DataLab IO device status information. Currently only one bit number 0 is defined—it represents the “connected” status (that means if the device is connected to the USB port and properly powered). If the DataLab IO device is unplugged (or without power in the case of self-powered devices), the status channel is the only channel which can be read without error. An attempt to read any other channel will generate error 1.

Status channel value should be interpreted as bit mask. It is always necessary to check only the particular bit of interest. Undocumented bits represents other states and their meaning can change in different driver versions. It is possible to use function bitget or operator and to extracting just one bit from the number.

The following example demonstrates how to read DataLab IO “connected” state and how this state is represented by indicator instrument. This example assumes that there is a parameter status_channel = 99 in the [device] section in parameter file.

driver
  datalab : 'dldrv.dll', 'DataLab USB test Analog In.dmf', 'DataLab USB test Analog In.par';
end_driver;

data
  channel {driver = datalab; direction = input};
    ...
    dlStatus : longcard {driver_index = 99};
  end_channel;
  ...
end_data;

instrument
  indicator ConnectionStatus;
    driver_exception = datalab;
    ...
    procedure OnActivate( ByTimer, ByInstrument, ByDriver, ByData : boolean );
    begin
      if ByDriver then
        (* mask bit 0 by logical and with mask 1 *)
        SetValue( dlStatus & 1 <> 0 );
        (* it is possible get the bit using bitget function, the second parameter is bit index, not mask
        SetValue( bitget( dlStatus, 0 ) <> 0 );
        *)
      end;
    end_procedure;
    ...
  end_indicator;
  ...
end_instrument;

Driver parameter file

Driver parameter file is an ordinary text file and can be edited by any text editor (e.g. Control Web Editor or Notepad). It has very simple structure following '.INI' file conventions.

Section [device]

If there are multiple DataLab IO units connected to one computer, it is necessary to specify for which unit is the particular parameter file intended. The parameter id of section [device] defines the particular unit. Parameter value is a number or list of numbers separated by commas. If the parameter is present, the driver instance (with this parameter file) will work only with the DataLab IO of the serial number defined as id. The syntax of parameter is id = number,number,..,number. If there is only one device connected to the computer, this parameter is optional and can be omitted with the whole [device] section (if no other parameter of [device] section is used, of course).

Hint:

The number list can be used when the DataLab IO device should be replaced by another device without stopping of the application and editing the parameter file. The list then should contain the serial numbers of both primary and the backup devices. The number of devices in the list is not limited.

If the status channel is required by the application, its number must be defined by the parameter status_channel in the [device] section. If the parameter file defines this channel, it is necessary to define this number in '.DMF' file as input channel of type longcard. The status channel is described in the Driver status channel chapter.

Also the channel returning DataLab IO identifier number can be defined in the [device] section. The identifier channel number must be defined by the parameter id_channel. If the parameter file defines this channel, it is necessary to define this number in '.DMF' file as input channel of type longcard.

It is also possible to define logical parameter reset_outputs in the [device] section. If the parameter is true (reset_outputs = true), all output channels are reset to their initial state (the sate in which channels are when the device is powered on) when the application is terminated or when the host PC (or connection to host PC) fails.

Module sections [module_x]

Every I/O module, plugged into the device, must have a section in the parameter file named according to the device slot (see chapter Module positions and device slots). Sections names are in square brackets : [module_a] to [module_d]. There are two mandatory parameters in each section: module_type and first_channel. Other parameters (control_channel and mode) are optional.

  • module_type defines module type:

    • DI1, DI2—8 logical inputs module. Both modules are compatible from the software point of view so both identifiers can be used. The drive also accepts the L and H variants of module identifiers (DI1L, DI1H, etc.), but their usage is not recommended.

    • DO1, DO2, DO3—8 logical outputs module. All modules are compatible from the software point of view so any identifier can be used.

    • AI1—8 16-bit analog inputs module. The AI1 module is discontinued and the driver supports it only to maintain backward compatibility.

    • AI2—8 16-bit analog inputs module. The AI2 module replaced the AI1 module. Although it also provides 8 16-bit inputs, the new module is faster and has better capabilities (e.g. the input range can be defined independently for each channel) so it is different module from the driver point of view.

    • AI3—enhanced AI2 module with 8 16-bit analog inputs. The analog part of this module is optimized compared to AI2 module, so the AI3 module provides lower noise and better precision. Number of input ranges was extended from 4 bipolar modes of AI2 module to 7 bipolar and 7 unipolar ranges.

    • AO1—8 12-bit analog outputs module.

    • AD1—module combines 4 16-bit analog inputs (with input ranges equivalent to the AI3 module) with 4 digital inputs/outputs. The digital channel direction as well as the input resistance can be chosen by the jumpers on the module board.

    • AD2—module combines 4 16-bit analog inputs (with input ranges equivalent to the AI3 module), two analog outputs with 8-bits resolution and 2 digital inputs/outputs. The digital channel direction as well as the input resistance can be chosen by the jumpers on the module board.

    • CNT1—4 counter inputs module.

    • CNT2—1 incremental counter module.

    • RTD1—module contains 4 inputs for Resistive Temperature Detectors. It is possible to connect various Pt100, Pt1000 and Ni1000 RTDs with different Temperature Coefficient of Resistance (TCR).

  • first_input_channel and first_output_channel define number of the first channel of the respective direction assigned to the module. The following channels are numbered with increasing numbers up to maximal number of channels provided by the particular module. It is possible to use keyword first_channel instead of first_input_channel or first_output_channel providing the particular module has channels of one direction only.

  • control_channel defines number of the module control channel (control channel functionality depends on the module type).

  • mode defines module working mode. The meaning of the mode is different for various modules and mode can be meaningless for some modules. Some modules enable definition of mode independently for each channel using keywords mode1, mode2, etc.

  • unit defines the representation of data read from or written to particular module channels. Unit has meaning only for analog modules, digital modules use simple boolean values or unit-less count.

    Default unit is ADU (Analog/Digital Unit), which represents native counts of the A/D or D/A converter used in the particular module. But module can also use physical units:

    • V for volts

    • mV for millivolts

    • A for amperes

    • mA for milliamperes

    • Ohm for electrical resistance Ω

    • C for degrees Celsius

    • F for degrees Fahrenheit

    • K for Kelvins

    Unit can be defined for all channels of the module or independently for each channel using the keywords unit1, unit2 etc.

    Hint:

    Unit definition for the particular channel has precedence over the definition for the whole module. If for instance the all channels of the AO1 module are configured as voltage output and only the first two channel are configured as current outputs, units can be defined as follows:

    module_type = AO1
    unit = V
    unit1 = mA
    unit2 = mA

DataLab IO1 has only one module slot, which corresponds to position A. The parameter file for DataLab IO1 should contain only one module section [module_a].

Remark:

Numbers in parameter file can be written not only in decimal format, but also in binary and hexadecimal notation. Numbers in binary notation should be followed by letter “B”, numbers in hexadecimal notation should be followed by letter “H”. Example of hexadecimal and binary notations:

mode = 0A012C0FH
mode = 00001001B

Parameter file example:

[device]
id = 1234567
status_channel = 1
id_channel = 2
reset_outputs = true

[module_a]
module_type = DI1
first_channel = 100
mode1 = AC
mode2 = AC

[module_b]
module_type = DO2
first_channel = 108
control_channel = 120

[module_c]
module_type = AO1
first_channel = 200
unit = V
unit1 = A
unit2 = A
unit3 = A
unit4 = A

[module_d]
module_type = CNT1
first_input_channel = 300
first_output_channel = 310
control_channel = 320
mode1 = enable
mode2 = enable
mode3 = enable
mode4 = enable

Channels and modes of individual module types

Every module (depending on its module type) provides channels for reading or writing of values. Some module types offer control channel and/or mode. Channel types, directions, control channel functions and modes for various module types are as follows:

Digital input modules DI1 and DI2

  • Module type designation in parameter file: DI1 or DI2.

  • Data channels: 8 input channels of boolean type.

  • Control channel: bidirectional channel of shortcard type:

    • Control channel provides values of all 8 inputs as one number when read—every input defines one bit in the read number.

    • Writing to control channel defines mode for individual inputs (see mode description).

  • Mode: digital inputs can work with both positive and negative signal polarity, so they are capable to detect not only DC but also AC signals. If the input is configured to detect DC signal, its logical value represents current level of input voltage. But the logical value determination is more complex in the AC mode:

    • Inputs are sampled at 1 kHz.

    • If the voltage of any polarity occurs on the terminal connector, the logical 1 (true) value is returned from the time of the first sample, which detects it. This means logical 0 (false) can be read up to 1 ms from the time of the voltage occurrence.

    • If the voltage disappears from the terminal connector, logical 1 (true) is read for the following 10 ms. When no one sample indicates voltage on the input for 10 ms, the read value becomes logical 0 (false) again. The 10 ms delay corresponds to one half-wave of 50 Hz AC signal, which means zero crossings of the 50 Hz or 60 Hz signal do not cause switch to 0.

    The sampling mode can be defined individually for each input. Numerical value of the mode parameter (or control channel write anytime at application runtime) corresponds to the bit mask created from 0s and 1s for each input channel. If the particular bit is 1 then the input will work in AC mode, 0 means the DC mode will be used. For instance the value 0 means all inputs will work in DC mode, 255 (or 0FFH) means all inputs will work in AC mode and 15 (or 0FH) sets channels 0 to 3 to AC mode and channels 4 to 7 to DC mode.

    Mode can be also defined by keywords DC and AC. Mode for each channel must be defined individually in such case. Because the DC mode is default, only channels which should work in AC mode must be mentioned, for instance:

    mode1 = AC
    mode5 = AC

    If the mode is not defined, the 0 (all inputs in DC mode) is used by default.

Digital counter module CNT1

The module contains 4 counters with 24 bit range (numeric range of every counter is 0 to 16,777,215). First two counters have more configuration options compared to the second pair of counters (last two counters are limited to simple counting with the possibility to preset their value). Counter modes (e.g. counting enabled/disabled, logical levels etc.) are defined by setting module mode or by writing to module configuration channel.

  • Module type designation in parameter file: CNT1.

  • Output channels: 7 channels of longcard type:

    No. 0—Preset0: sets first counter value. Write to PresetX channel overwrites the value of counter X. The counter then continues incrementing the written value. Writing value 0 to channel PresetX zeros the counter. It is also possible to automatically zero counter upon its read (see the description of counter modes).

    No. 1—Preset1: sets second counter value.

    No. 2—Preset2: sets third counter value.

    No. 3—Preset3: sets fourth counter value.

    No. 4—Compare0: first counter compare value. Surpassing of the CompareX value can, depending on the counter mode, cause setting of the counter X alarm output.

    No. 5—Compare1: second counter compare value.

    No. 6—Config: counter configuration. Values written to this channel are described later.

  • Input channels: 4 channels of longcard type.

    No. 0—Counter0: first counter value. Reading of the CounterX channel returns current value of counter X. Read operation can, depending on the counter mode, zero the counter X.

    No. 1—Counter1: second counter value.

    No. 2—Counter2: third counter value.

    No. 3—Counter3: fourth counter value.

  • Control channel: output channel of longcard type is identical to output channel No. 6: Config.

  • Mode: numeric value of the mode parameter is the same as the value written to the Config or control channel. Mode can be also defined as a list of keywords for individual channels as described later.

Functionality of the first two counters (counters number 0 and 1) can be more complex:

  • When the counter X exceed the value written to the CompareX channel, the alarm output can be set. Alarm output logic (if active low or high) can be defined in the counter X configuration.

  • Counting can be enabled/disabled by the external input (gate). Gate logic (if active low or high) can be defined in the counter X configuration. The inputs of counters 2 and 3 are used as gate inputs (counter 0 is enabled by the counter 2 input, counter 1 is enabled by the counter 3 input).

    Remark:

    Also when the counter 2 and 3 inputs are used as gate inputs for counters 0 and 1, counters 2 and 3 continue working—it is still possible to read and preset their values.

Counter configuration can be written to the output channel No. 6 Config, to the control channel (control_channel) or can be defined as the module mode parameter. Configuration value is 4B long unsigned integer. Every byte contains configuration of one counter, the less significant byte contains configuration of counter 0, the most significant byte contains configuration of counter 3. Every byte meaning is defined by the bitmask according to the following table:

Bit Counter 0 Counter 1 Counter 2 Counter 3 Meaning
0 Counting enabled
1 Counting of falling edges
2 Zero counter upon read
3  ×   ×  Test the gate input
4  ×   ×  Set the alarm output
5  ×   ×  Gate input is inverted (active low)
6  ×   ×  Alarm output is inverted (active low)
7  ×   ×   ×   ×  Reserved, must be 0

Individual counter configuration

Remark:

The shift of the configuration byte of counter N can be performed by its multiplying by number 256 powered to N. For instance configuration, which enables all four counters, has a value 1 + 1 × 256 + 1 × 2562 + 1 × 2563 = 16,843,009.

However, the better way is to use the possibility to write binary or hexadecimal numbers in parameter file. The above example can be written simply as a hexadecimal number 01010101H.

Mode can be defined also for every channel individually:

mode1 = 1001B
mode2 = 1011B
mode3 = 101B
mode4 = 101B

Alternative way to define mode is using a list of keywords:

  • enable—Counting enabled

  • falling_edge—Counting of falling edges

  • reset_on_read—Zero counter upon read

  • test_gate—Test the gate input

  • set_alarm—Set the alarm output

  • gate_inverted—Gate input is inverted (active low)

  • alarm_inverted—Alarm output is inverted (active low)

Modes from the previous example can be defined as follows:

mode1 = enable, test_gate
mode2 = enable, falling_edge, test_gate
mode3 = enable, reset_on_read
mode4 = enable, reset_on_read

Incremental counter module CNT2

The module contains 1 incremental counter 1 with 32-bit range (numerical range is from -2,147,483,648 to 2,147,483,647). The counter is able to decode quadrature modulation from position/angle sensors as well as to work in up/down and step/direction modes. The counter is also capable to preset counter value and capture value according to logical inputs and to signal alarm outputs if the counter value underflows low limit or overflows high limit.

  • Module type designation in parameter file: CNT2.

  • Output channels: 5 channels of longint type:

    No. 0 – CounterPreset: sets counter value. This value is used not only as new counter value (counter then counts from this value), but it is also stores to separate register and it will be used for overwriting of counter value when the external input preset is signaled (module input and output signals are described in the DataLab IO device documentation).

    No. 1 – CapturePreset: sets capture register value. Current counter value is copied into capture register when the external input capture is signaled (module input and output signals are described in the DataLab IO device documentation). Writing to this channel can be used e.g. to zero this register.

    No. 2 – CompareLo: counter low compare value. If the current counter value is less than this value then the alarm_lo logical output will be signaled (module input and output signals are described in the DataLab IO device documentation).

    No. 3 – CompareHi: counter high compare value. If the current counter value is greater than this value then the alarm_hi logical output will be signaled (module input and output signals are described in the DataLab IO device documentation).

    No. 4 – Config: counter configuration. Values written to this channel are described later.

  • Input channels: 2 channels of longint type:

    No. 0 – Counter: current counter value.

    No. 1 – Capture: capture register value. Either the value written to channel CapturePreset (if no capture input signal was detected between writing to CapturePreset an reading of Capture) or the counter value in the time of the capture input signaling is returned through this channel.

  • Control channel: output channel of longint type is identical to output channel No. 4: Config.

  • Mode: numeric value of the mode parameter is the same as the value written to the Config or control channel.

Counter configuration can be written to the output channel No. 4 Config, to the control channel (control_channel) or can be defined as the module mode parameter. Configuration value is 32-bit integer number. Individual bit meaning is defined in the following table:

Bit Meaning
0 alarm_lo output enabled (when counter underflows CompareLo value)
1 alarm_hi output enabled (when counter overflows CompareHi value)
2 preset input enabled
3 capture input enabled
4 Invert alarm_lo output (active low)
5 Invert alarm_hi output (active low)
6 Invert preset output (active low)
7 Invert capture output (active low)
8-9 Counter function (functions are described later)
10-11 Reserved, must be 0
12 Invert input A (only for functions 01 and 10)
13 Invert input B (only for functions 01 and 10)
14-31 Reserved, must be 0

Bits meaning in incremental counter configuration

The counter is capable to handle three input signal types, depending on its function. Counter function is defined by configuration bits 8 and 9 as follows:

  • 00 - quadrature counter: A and B inputs are used as inputs from positional or angle sensors using quadrature encoding (every edge causes counting, phase shift of A and B inputs determines up or down direction). It is not possible to invert A and B input signals in this case.

  • 01 - up/down counter: The A input causes counter increment, input B causes counter decrement. Input logic (if the rising or falling edge is active) is defined by bits 12 and 13 of configuration register.

  • 10 - step/direction counter: The counter is incremented or decremented by the logical input A. The direction (whether counter is incremented or decremented) is defined by the logical input B. Input logic (if the rising or falling edge is active) is defined by bits 12 and 13 of configuration register.

  • 11 - invalid value, reserved for future use.

Remark:

The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous when specifying modes. For instance the line:

mode = 11001000001100B

configures the incremental counter to step/direction mode, inverts both A and B inputs, enables preset and capture inputs and disables alarm underflow and overflow outputs.

Alternative way to define mode is using a list of keywords:

  • Counter function is defined by one of the following three identifiers: quadrature, up_down, step_direction

  • enable_alarm_loalarm_lo output enabled (when counter underflows CompareLo value)

  • enable_alarm_hialarm_hi output enabled (when counter overflows CompareHi value)

  • enable_presetpreset input enabled

  • enable_capturecapture input enabled

  • invert_alarm_lo—Invert alarm_lo output (active low)

  • invert_alarm_hi—Invert alarm_hi output (active low)

  • invert_preset—Invert preset output (active low)

  • invert_capture—Invert capture output (active low)

  • invert_a—Invert input A (only for up_down and step_direction)

  • invert_b—Invert input B (only for up_down and step_direction)

Mode from the previous example can be defined as follows:

mode = step_direction, enable_preset, enable_capture, invert_a, invert_b

Digital output modules DO1, DO2 and DO3

  • Module type designation in parameter file: DO1, DO2, DO3.

  • Data channels: 8 output channels of boolean type.

  • Control channel: output channel of shortcard type sets values of all 8 outputs as one number when written—every bit is set to appropriate output.

  • Mode: N/A.

Remark:

The driver does not distinguish if the connected module is e.g. open-collector output module or relay output module. However, it can be necessary to distinguish them on the application level—e.g. the switching speed of the relays is much lower than the speed of transistors and application must take it into account.

Analog input module AI1

Remark:

The AI1 module is discontinued and the driver supports it only to maintain backward compatibility.

  • Module type designation in parameter file: AI1.

  • Data channels: 8 input channels of real type.

  • Control channel: output channel of shortcard type sets input range—the range number corresponds to value defined in the mode parameter.

  • Mode: number 0 to 3 defines input voltage range, actual range depends also on module hardware settings and available ranges are described later.

There are a small array of jumpers on the module printed circuit board (PCB), associated with every input channel. Jumper configurations are described in the module technical documentation. Basically, jumpers define two settings:

  • Inserting of precision 120 ohm resistor converts voltage input to current input.

  • It is possible to multiply the input range 4 times using two BIAS jumpers.

So the actual input range depends on the mode of analog inputs (defined by the parameter mode in parameter file and/or by control channel write) and also on the BIAS jumpers position.

Hint:

While the mode can be set for the whole module only (for all 8 channels), jumpers can be set independently for each channel. Every channel can be configured to measure voltage or current and every channel can have input range multiplied 4 times by BIAS jumpers.

It is also clear that while the jumpers can be set only while the unit is unplugged fro USB and not powered, the mode can be changed programmatically. But thanks to Plug and Play features of DataLab IO it is not necessary to stop the application—the device can be unplugged, jumpers can be altered and the plugged again.

Input voltage ranges of individual modes for both BIAS jumper positions are:

BIAS mode Max. voltage between inputs Full range
on 0 +/-20 V 40 V
on 1 +/-10 V 20 V
on 2 +/-5 V 10 V
on 3 +/-2,5 V 5 V
off 0 +/-5 V 10 V
off 1 +/-2,5 V 5 V
off 2 +/-1,25 V 2,5 V
off 3 +/-0,625 V 1,25 V

Input ranges of analog inputs

The BIAS column represents BIAS jumper positions on the module PCB.

Values “Max. voltage between inputs” a “Full range” needs a brief explanation:

  • No one terminal connector pin is grounded so it does not matter if the input voltage is -20 V and 0V, -10 V and +10 V or 0 V and +20 V. This is why the maximal voltage between inputs is defined instead simply symmetrical difference. The maximum difference causes reading of the maximum number from the ADC 32767 (215 - 1).

  • Inputs are fully bipolar so when we switch the input polarity, negative numbers will be read. After connecting 0 V and -20 V number -32768 (-215) will be read. Although the maximal voltage between pins is 20 V, both polarities creates full input range 40 V.

Hint:

Ranges 10 V and 5 V can be measured when BIAS is on (modes 2 and 3) or off (modes 0 and 1). Due to ADC internal workings and signal filtration it is always better to use highest input ranges. It is recommended to configure BIAS off and use modes 0 and 1 for these ranges.

Analog input module AI2

  • Module type designation in parameter file: AI2.

  • Input channels: 8 channels of real type for analog inputs.

  • Output channels: 8 channels of shortcard type for setting of input range of related channel. Value 0 turns off measuring of the particular input.

    Range Voltage input Current input
    0 input inactive input inactive
    1 +/-10 V N/A
    2 +/-5 V N/A
    3 +/-2.5 V +/-20.8 mA
    4 +/-1.25 V +/-10.4 mA

    Input ranges of AI2 analog input module

    The default input range is +/-10 V.

  • Control channel: output channel of longcard type sets input range for all 8 inputs. Every input is represented by 4 bits, so 8 channels occupy 32 bits. Writing to control channel the replaces eight writes to all output channels.

  • Mode: number representing input range for all 8 inputs, every 4 bits define range for one input channel (the value has the same meaning as value written to control channel).

    Remark:

    The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous. For instance the line:

    mode = 11112222H

    sets channels 1 to 4 to range +/-5 V and channels 5 to 8 to range +/-10 V.

    Mode can be also defined individually for every channel using keywords mode1, mode2, etc.

    mode1 = 2;
    mode2 = 4;

    Mode definition and writing to control channel upon application startup are equivalent. If the input ranges are not changed during application runtime mode definition is a better way. If the ranges are defined in the program, mode definition is superfluous.

  • Unit: module supports values in three units—native A/D converter counts (ADUs), volts or millivolts and amperes or milliamperes. Preferred units are defined using one of the predefined keywords: ADU, V, mV, A or mA. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

    If the ADU unit is chosen, minimal value (e.g. -10 V) is represented by the number -32768 and maximal value (e.g. 10V) by number 32767. If physical units are chosen, numbers -10 a nd 10 are directly read.

There is a jumper on the module PCB associated with every input channel. Closing the jumper causes a precision 120 Ω resistor is inserted into the input, which changes voltage input into the current one.

Hint:

Input ranges can be defined for every input channel independently by the application program. But the voltage or current mode is selected by jumper on the PCB and this cannot be performed on application runtime.

The AI2 module allows not only input range setting for individual inputs, but also allows switching each input off. Skipping of particular input speeds up the sampling frequency of remaining inputs.

The module is able to sample data at frequency 50 Hz (50 samples per second) on one channel. If all 8 channels are measured, the sampling speed is 6.25 Hz. If it is for instance necessary to sample data 10× per second, only 5 channels can be turned on, remaining 3 channels must be turned off.

It is not necessary to wait for the digital filter to settle down when only one channel is measured and the input multiplexer is not switched. The data sampling frequency is then 200 Hz. But keep on mind that the A/D converter is not able to pass the step over the full input range to its output at this speed. If the input voltage changes e.g. from -10 V to +10 V, the converter needs 4 cycles to propagate the step to the output. So the sampling frequency is again 50 Hz.

Remark:

The USB interface of DataLab IO devices can transfer data much faster than the AI2 module can measure them. But faster communication with the device does not bring any advantages. More frequent read requests only causes more frequent communication of the same data.

Analog input module AI3

  • Module type designation in parameter file: AI3.

  • Input channels: 8 channels of real type for analog inputs.

  • Output channels: 8 channels of cardinal type for setting of input range of related channel. Values 0 and 8 turns off measuring of the particular input.

    Range Voltage input Current input
    0 input inactive input inactive
    1 +/-10 V N/A
    2 +/-5 V N/A
    3 +/-2 V +/-20 mA
    4 +/-1 V +/-10 mA
    5 +/-0.5 V +/-5 mA
    6 +/-0.2 V +/-2 mA
    7 +/-0.1 V +/-1 mA
    8 input inactive input inactive
    9 0..10 V N/A
    10 0..5 V N/A
    11 0..2 V 0..20 mA
    12 0..1 V 0..10 mA
    13 0..0.5 V 0..5 mA
    14 0..0.2 V 0..2 mA
    15 0..0.1 V 0..1 mA

    Input ranges of AI3 analog input module

    The default input range is +/-10 V.

  • Control channel: output channel of longcard type sets input range for all 8 inputs. Every input is represented by 4 bits, so 8 channels occupy 32 bits. Writing to control channel the replaces eight writes to all output channels.

  • Mode: number representing input range for all 8 inputs, every 4 bits define range for one input channel (the value has the same meaning as value written to control channel).

    Remark:

    The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous. For instance the line:

    mode = 11112222H

    sets channels 1 to 4 to range +/-5 V and channels 5 to 8 to range +/-10 V.

    Mode can be also defined individually for every channel using keywords mode1, mode2, etc.

    mode1 = 2;
    mode2 = 4;

    Mode definition and writing to control channel upon application startup are equivalent. If the input ranges are not changed during application runtime mode definition is a better way. If the ranges are defined in the program, mode definition is superfluous.

  • Unit: module supports values in three units—native A/D converter counts (ADUs), volts or millivolts and amperes or milliamperes. Preferred units are defined using one of the predefined keywords: ADU, V, mV, A or mA. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

    If the ADU unit is chosen, minimal value (e.g. -10 V) is represented by the number -32768 and maximal value (e.g. 10V) by number 32767. If physical units are chosen, numbers -10 a nd 10 are directly read.

There is a jumper on the module PCB associated with every input channel. Closing the jumper causes a precision 100 Ω resistor is inserted into the input, which changes voltage input into the current one.

Hint:

Input ranges can be defined for every input channel independently by the application program. But the voltage or current mode is selected by jumper on the PCB and this cannot be performed on application runtime.

The AI3 module allows not only input range setting for individual inputs, but also allows switching each input off. Skipping of particular input speeds up the sampling frequency of remaining inputs.

The module is able to sample data at frequency 50 Hz (50 samples per second) on one channel. If all 8 channels are measured, the sampling speed is 6.25 Hz. If it is for instance necessary to sample data 10× per second, only 5 channels can be turned on, remaining 3 channels must be turned off.

It is not necessary to wait for the digital filter to settle down when only one channel is measured and the input multiplexer is not switched. The data sampling frequency is then 200 Hz. But keep on mind that the A/D converter is not able to pass the step over the full input range to its output at this speed. If the input voltage changes e.g. from -10 V to +10 V, the converter needs 4 cycles to propagate the step to the output. So the sampling frequency is again 50 Hz.

Remark:

The USB interface of DataLab IO devices can transfer data much faster than the AI3 module can measure them. But faster communication with the device does not bring any advantages. More frequent read requests only causes more frequent communication of the same data.

Analog output module AO1

  • Module type designation in parameter file: AO1.

  • Data channels: 8 output channels of real type.

  • Control channel: N/A.

  • Mode: N/A.

  • Unit: module supports values in three units—native D/A converter counts (ADUs), volts or millivolts and amperes or milliamperes. Preferred units are defined using one of the predefined keywords: ADU, V, mV, A or mA. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

Analog output module provides 8 voltage analog outputs with the range 0 to +10 V. D/A converter has 12 bit resolution. Each D/A converter count equals to 2.5 mV output voltage change.

Remark:

Because 12 bit resolution provides 4096 counts, 2.5 mV per count equals 10.24 V. If the output must not exceed 10 V, the software must not write value greater than 4000 to the output channel.

When the driver is configured to use physical units (volts), such problem does not occur. For instance writing 10 to the output channel means the 10 V (with the uncertainty about 0.1 % caused by used components) appears on the output pins.

First four of eight outputs can be configured as current outputs with range from 0 to 20 mA using jumpers on the module PCB. Due to the high resolution of the DAC the 4 to 20 mA range is implemented by software limitation of 0 to 20 mA range.

Remark:

The current source generates 20 mA when the DAC value is 3846 counts (with the uncertainty about 1 % caused by used components). Configuring the driver to use physical units (amperes) eliminates the necessity to recalculate written values. For instance writing 0.02 to the output channel means the current source will generate 20 mA current.

Combined analog input and digital input/output module AD1

  • Module type designation in parameter file: AD1.

  • Input channels:

    • 4 channels of real type for every analog input.

    • The following 4 channels of boolean type for every digital output. These channels return current logical value of digital inputs. The are intended for reading of DC signals.

    • Next 4 channels of boolean type return logical value of digital input evaluated as AC input. The rules to evaluate true and false of AC signal are described in the description of digital input modules.

    Remark:

    The AD1 module allows choosing of the digital channels direction by the jumpers on the module board. The module actually reads input values only if the jumpers are in the input position.

  • Output channels:

    • 4 channels of cardinal type for setting of input range of related channel. Values 0 and 8 turns off measuring of the particular input.

      Input ranges of analog input channels equal to the input ranges of the AI3 module. They are described in detail in the AI3 module description.

    • The following 4 channels of boolean type for every digital output.

    Remark:

    The AD1 module allows choosing of the digital channels direction by the jumpers on the module board. The module actually writes output values only if the jumpers are in the output position.

  • Control channel: output channel of longcard type sets input range for all 4 inputs. Every input is represented by 4 bits, so 4 channels occupy 16 bits. Writing to control channel the replaces writes to first four output channels.

  • Mode: number representing input range for all 4 inputs, every 4 bits define range for one input channel (the value has the same meaning as value written to control channel).

    Remark:

    The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous. For instance the line:

    mode = 1122H

    sets channels 1 and 2 to range +/-5 V and channels 3 and 4 to range +/-10 V.

    Mode can be also defined individually for every channel using keywords mode1, mode2, etc.

    mode1 = 2;
    mode2 = 4;

    Mode definition and writing to control channel upon application startup are equivalent. If the input ranges are not changed during application runtime mode definition is a better way. If the ranges are defined in the program, mode definition is superfluous.

  • Unit: module supports values in three units—native A/D converter counts (ADUs), volts or millivolts and amperes or milliamperes. Preferred units are defined using one of the predefined keywords: ADU, V, mV, A or mA. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

    If the ADU unit is chosen, minimal value (e.g. -10 V) is represented by the number -32768 and maximal value (e.g. 10V) by number 32767. If physical units are chosen, numbers -10 a nd 10 are directly read.

AD1 module analog inputs equal to the AI3 module inputs. Choosing voltage or current inputs, switching input ranges, sampling rate and other characteristics are described in the  AI3 module description. But because the AD1 module has only 4 analog input channels, the input sampling rate is 12.5 Hz, not 6.25 Hz as in the case of AI3 module.

Combined analog input/output and digital input/output module AD2

  • Module type designation in parameter file: AD2.

  • Input channels:

    • 4 channels of real type for every analog input.

    • The following 2 channels of boolean type for every digital output. These channels return current logical value of digital inputs. The are intended for reading of DC signals.

    • Next 2 channels of boolean type return logical value of digital input evaluated as AC input. The rules to evaluate true and false of AC signal are described in the description of digital input modules.

    Remark:

    The AD2 module allows choosing of the digital channels direction by the jumpers on the module board. The module actually reads input values only if the jumpers are in the input position.

  • Output channels:

    • 4 channels of cardinal type for setting of input range of related channel. Values 0 and 8 turns off measuring of the particular input.

      Input ranges of analog input channels equal to the input ranges of the AI3 module. They are described in detail in the AI3 module description.

    • The following 2 channels of real type for analog outputs.

    • Next 2 channels of boolean type for every digital output.

    Remark:

    The AD2 module allows choosing of the digital channels direction by the jumpers on the module board. The module actually writes output values only if the jumpers are in the output position.

  • Control channel: output channel of longcard type sets input range for all 4 inputs. Every input is represented by 4 bits, so 4 channels occupy 16 bits. Writing to control channel the replaces writes to first four output channels.

  • Mode: number representing input range for all 4 inputs, every 4 bits define range for one input channel (the value has the same meaning as value written to control channel).

    Remark:

    The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous. For instance the line:

    mode = 1122H

    sets channels 1 and 2 to range +/-5 V and channels 3 and 4 to range +/-10 V.

    Mode can be also defined individually for every channel using keywords mode1, mode2, etc.

    mode1 = 2;
    mode2 = 4;

    Mode definition and writing to control channel upon application startup are equivalent. If the input ranges are not changed during application runtime mode definition is a better way. If the ranges are defined in the program, mode definition is superfluous.

  • Unit: module supports values in three units—native A/D converter counts (ADUs), volts or millivolts and amperes or milliamperes. Preferred units are defined using one of the predefined keywords: ADU, V, mV, A or mA. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

    If the ADU unit is chosen, minimal value (e.g. -10 V) is represented by the number -32768 and maximal value (e.g. 10V) by number 32767. If physical units are chosen, numbers -10 a nd 10 are directly read.

AD2 module analog inputs equal to the AI3 module inputs. Choosing voltage or current inputs, switching input ranges, sampling rate and other characteristics are described in the  AI3 module description. But because the AD2 module has only 4 analog input channels, the input sampling rate is 12.5 Hz, not 6.25 Hz as in the case of AI3 module.

Analog outputs can be configured as voltage or current outputs using jumpers on the module PCB. Voltage output range is 0 to 10 V, current output range is 0 to 20 mA. The used D/A converter has 8-bit resolution and one count corresponds to 41.5 mV or 0.083 mA.

Remark:

Because 8 bit resolution provides 256 counts, 41.5 mV per count equals 10.625 V. If the output must not exceed 10 V, the software must not write value greater than 240 to the output channel.

When the driver is configured to use physical units (volts), such problem does not occur. For instance writing 10 to the output channel means the 10 V (with the module uncertainty) appears on the output pins.

The same is valid for current mode.

Combined analog input/output module AIO1

  • Module type designation in parameter file: AIO1.

  • Input channels:

    • 4 channels of real type for every analog input.

  • Output channels:

    • 4 channels of cardinal type for setting of input range of related channel. Values 0 and 8 turns off measuring of the particular input.

      Input ranges of analog input channels equal to the input ranges of the AI3 module. They are described in detail in the AI3 module description.

    • The following 4 channels of real type for analog outputs.

  • Control channel: output channel of longcard type sets input range for all 4 inputs. Every input is represented by 4 bits, so 4 channels occupy 16 bits. Writing to control channel the replaces writes to first four output channels.

  • Mode: number representing input range for all 4 inputs, every 4 bits define range for one input channel (the value has the same meaning as value written to control channel).

    Remark:

    The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous. For instance the line:

    mode = 1122H

    sets channels 1 and 2 to range +/-5 V and channels 3 and 4 to range +/-10 V.

    Mode can be also defined individually for every channel using keywords mode1, mode2, etc.

    mode1 = 2;
    mode2 = 4;

    Mode definition and writing to control channel upon application startup are equivalent. If the input ranges are not changed during application runtime mode definition is a better way. If the ranges are defined in the program, mode definition is superfluous.

  • Unit: module supports values in three units—native A/D converter counts (ADUs), volts or millivolts and amperes or milliamperes. Preferred units are defined using one of the predefined keywords: ADU, V, mV, A or mA. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

    If the ADU unit is chosen, minimal value (e.g. -10 V) is represented by the number -32768 and maximal value (e.g. 10V) by number 32767. If physical units are chosen, numbers -10 a nd 10 are directly read.

AIO1 module analog inputs equal to the AI3 module inputs. Choosing voltage or current inputs, switching input ranges, sampling rate and other characteristics are described in the  AI3 module description. But because the AIO1 module has only 4 analog input channels, the input sampling rate is 12.5 Hz, not 6.25 Hz as in the case of AI3 module.

Analog outputs can be configured as voltage or current outputs using jumpers on the module PCB. Voltage output range is 0 to 10 V, current output range is 0 to 20 mA. The used D/A converter has 12-bit resolution and one count corresponds to 2.5 mV or 0.005 mA.

Remark:

Because 12 bit resolution provides 4096 counts, 2.5 mV per count equals 10.24 V. If the output must not exceed 10 V, the software must not write value greater than 4000 to the output channel.

When the driver is configured to use physical units (volts), such problem does not occur. For instance writing 10 to the output channel means the 10 V (with the module uncertainty) appears on the output pins.

The same is valid for current mode.

Module for Resistive Temperature Detectors RTD1

  • Module type designation in parameter file: RTD1.

  • Input channels: 4 channels of real type for every input.

  • Output channels: 4 channels of cardinal type for setting of input range of related channel. Range values are bit-oriented and they are constructed according to the same rules valid for mode parameter described below. Value 0 switches off particular input. Allowed range values are stated in the following table.

    Detector Pt100
    Temperature range Temperature Coefficient of Resistance (TCR)
    3850 3750 3911 3926
    –50..+150°C 1 17 (11H) 33 (21H) 48 (31H)
    0..+100°C 2 18 (12H) 34 (22H) 49 (32H)
    0..+200°C 3 19 (13H) 35 (23H) 50 (33H)
    0..+400°C 4 20 (14H) 36 (24H) 51 (34H)
    –50..+50°C 5 21 (15H) 37 (25H) 52 (35H)
    Detector Pt1000
    Temperature range Temperature Coefficient of Resistance (TCR)
    3850 3750 3911 3926
    –50..+150°C 6 22 (16H) 38 (26H) 53 (36H)
    0..+100°C 7 23 (17H) 39 (27H) 54 (37H)
    0..+200°C 8 24 (18H) 40 (28H) 55 (38H)
    –50..+50°C 9 25 (19H) 41 (29H) 56 (39H)
    Detector Ni1000
    Temperature range Temperature Coefficient of Resistance (TCR)
    5000 6180 6370 6720
    –50..+150°C 70 (46H) 86 (56H) 102 (66H) 118 (76H)
    0..+100°C 71 (47H) 87 (57H) 103 (67H) 119 (77H)
    0..+200°C 72 (48H) 88 (58H) 104 (68H) 120 (78H)
    –50..+50°C 73 (49H) 89 (59H) 105 (69H) 121 (79H)
    Input off 0

    Ranges for RTD1 module

    Default value is 1 (Pt100/3850, -50 až +150°C).

  • Control channel: output channel of longcard type sets input range for all 4 inputs. Every input is represented by 1 byte, so 4 channels occupy 32 bits. Writing to control channel the replaces writes to all four output channels.

  • Mode: number representing input range for all 4 inputs, every byte defines range for one input channel (the value has the same meaning as value written to control channel). Particular byte value is bit-oriented and consists of two groups. Bits 0 to 3 determines one of nine available resistance ranges. Bits 4 to 6 determines Temperature Coefficient of Resistance (TCR), which depends on the RTD type. Bit 7 is not used and must be 0.

    Bits 0 to 3 meaning:

    Bit 0 to 3 Resistance range [Ω] Temperature range [°C]
    0000 input off input off
    0001 75..160 –50..+150°C
    0010 91..150 0..+100°C
    0011 91..180 0..+200°C
    0100 91..240 0..+400°C
    0101 75..130 –50..+50°C
    0110 680..2000 –50..+150°C
    0111 910..1800 0..+100°C
    1000 910..2500 0..+200°C
    1001 680..1300 –50..+50°C

    Temperature and resistance ranges

    Bits 4 to 6 meaning:

    Bit 4 to 6 TCR [PPM/°C] RTD Type
    000 3850 Pt100/Pt1000
    001 3750 Pt100/Pt1000
    010 3911 Pt100/Pt1000
    011 3926 Pt100/Pt1000
    100 5000 Ni1000
    101 6180 Ni1000
    110 6370 Ni1000
    111 6720 Ni1000

    Temperature Coefficient of Resistance (TCR)

    Remark:

    The possibility to write values in parameter file in binary (number terminated by character “B”) or hexadecimal (number terminated by character “H”) notation can be advantageous. For instance the line:

    mode = 05055656H

    sets channels 1 and 2 of RTD1 module to range -50 ÷ +150°C for Ni1000/6180 detectors and channels 3 and 4 to range-50 ÷ +50°C for detectors Pt100/3850.

    Mode can be also defined individually for every channel using keywords mode1, mode2, etc.

    mode1 = 5
    mode2 = 5
    mode3 = 56H
    mode4 = 56H

    Mode definition and writing to control channel upon application startup are equivalent. If the input ranges are not changed during application runtime mode definition is a better way. If the ranges are defined in the program, mode definition is superfluous.

    Another (and more clear) method of mode definition is using of predefined keywords. Mode parameter is the written as follows:

    mode = <sensor>, <coefficient>, <range>

    where individual items are:

    • <sensor>—RTD type. Available values are: Pt100, Pt1000, Ni1000. The default value is Pt100.

    • <coefficient>—Temperature Coefficient of Resistance (TCR). This coefficient is sometimes marked as α ( α = TCR / 106). Available values: 3850, 3750, 3911, 3926, 5000, 6180, 6370, 6720. Default value TCR is 3850 PPM/°C.

    • <range>—temperature range. Allowed ranges are 1 to 5 according to the following table:

    Range number Temperature range [°C]
    1 –50..+150°C
    2 0..+100°C
    3 0..+200°C
    4 0..+400°C
    5 –50..+50°C

    Temperature ranges

  • Unit: module supports values in different units—native A/D converter counts (ADUs), Ohms, degrees Celsius, Fahrenheit of Kelvins. Preferred units are defined using one of the predefined keywords: ADU, Ohm, C, F or K. Units can be defined for all output channels (using key unit) or independently for each channel (using keys unit1, unit2, etc.). The default unit is ADU.

    If the ADU unit is chosen, minimal value is represented by the number 0 and maximal value by number 65,535. The value 0 can also mean short circuit on input or disconnected detector. Value 65,535 can mean overflow of the selected temperature range. If physical units are chosen, numbers in particular units are directly read.

Hint:

Input ranges can be defined for every input channel independently by the application program.

Inputs are sampled at the same speed as in the case of the AI3 module. However, sampling speed is not critical in the case of temperature measurement using RTD.

Remark:

The USB interface of DataLab IO devices can transfer data much faster than the RTD1 module can measure them. But faster communication with the device does not bring any advantages. More frequent read requests only causes more frequent communication of the same data.

Mode and control channel usage

The same module configuration can be often defined in two ways—by writing to control channel or by setting the mode parameter in the parameter file. The numerical value is the same in both cases. Writing the control channel on application startup (e.g. in OnStartup() procedure of some instrument) has the same effect as defining the mode parameter in the parameter file.

The driver stores value written to control channel and uses it as module mode. If the module is disconnected and then connected again, the module is initialized with the last value written to the control channel and not with mode value defined in the parameter file.

Driver-specific error codes

The driver generates the following error codes:

  1. device unplugged: DataLab IO unit is without power (applicable to self-powered units only) or the USB cable is unplugged. This error should not occur if the DataLab IO unit is embedded to DataLab PC computer, because the power and USB cabling is internal in this case.

  2. wrong module: The module, plugged into the particular DataLab IO slot, is of different type that stated in the parameter file. It is usually easier to update the parameter file than to swap modules in the device. If the parameter file was created automatically by the driver configuration tool, this error should not occur.

  3. module does not support control channel read: Application attempted to read control channel of module, which does not support it (see chapterChannels and modes of individual module types).

  4. module does not support control channel write: Application attempted to write control channel of module, which does not support it (see chapterChannels and modes of individual module types).

Remark:

The driver-specific error codes are distinguished from Control Web system error codes by adding the 65536 (10000H) offset. The Control Web then can determine if the error code is system global code or driver specific code. The error codes displayed in the Log Window are already displayed without the offset (that means codes 1 to 4 are displayed in the case of DataLab IO). But if the application reads the error code attribute channel:error, the attribute value will be 65537 to 65540.

Module positions and device slots

DataLab IO4 has four slots marked by letters A, B, C and D. These slots are placed in the device as displayed on the picture:

Module positions on the DataLab IO unit

Module positions on the DataLab IO unit

Take care to orient the unit properly—slots A and B are on top when the device blue LED and also the USB and power connectors are on the right side.

The slot letters are necessary only for users—they do not affect the device functionality. Any module can be placed to any slot. The device automatically detects plugged module types and adopts to the current configuration. But if the device is used with the Control Web application, the parameter file contains parameters for concrete modules and it is necessary to uniquely identify these modules.

DataLab IO1 has only one module slot marked A. This is why the parameter file for DataLab IO1 unit should have only the [module_a] section.

Driver configuration in the Control Web development environment

The Control Web development environment offers tools for comfortable driver configuration. This tool automatically creates driver parameter file (.par) and driver map file (.dmf) according to the application author's needs.

The driver configuration tool scans the USB bus to search all DataLab IO units plugged to the computer. All units including their identifiers and plugged modules are displayed in a tree.

Scanning of all connected DataLab IO devices

Scanning of all connected DataLab IO devices

It is possible to choose the device with which the particular driver will communicate. Device parameters can be edited using the structured sheet editor, showing parameters of individual sections.

Driver parameter editing

Driver parameter editing

The driver configuration tool can create both parameter and mapping files from defined parameters. It is of course possible to edit these files using arbitrary text editor.

The parameter file in the text form

The parameter file in the text form

DataLab IO system driver

The operating system needs proper drivers to correctly detect and handle all USB devices. There is a system driver on the CD-ROM supplied with every DataLab IO device. Driver files are placed in '\English\DataLab IO_USB\Drivers\Windows' directory. This directory contains only two files: 'dlusb.sys' (the driver itself) and 'dlusb.inf' (installation information). The driver can be installed explicitly by clicking the 'dlusb.inf' file by right mouse button and choosing the Install menu item. But this way is not usual. The best way to install the system driver is just plug the DataLab IO device to USB port. The operating system will detect new USB device and prompts the user to enter path to driver files. It is possible to enter the path to '\dlusb' on CD-ROM or just to let the system to search the CD-ROM for drivers.

Hint:

It is not necessary to install the driver from the CD-ROM. Driver files can be copied to any disk storage. If for instance the target machine is not equipped with the CD-ROM drive, it is possible to copy driver files to USB Flash Disk and to install them from that copy.

Warning:

The 'dlusb.sys' driver is not signed by digital signature. Windows notifies the user about that and asks if the installation should continue. If you want to install the driver, just continue with installation. Digital signature is only a formal and should ensure using only drivers signed by Microsoft. It does not affect driver functionality.

Operating system support

The DataLab IO devices can theoretically work with any operating system supporting USB interface. However, as stated earlier, every operating system requires proper driver to work with USB device. Currently only Windows driver is supplied with DataLab IO devices.

But there are also differences among various Windows versions. The 'dlusb.sys' corresponds to WDM (Windows Driver Model) specification. WDM drivers should work in Windows 98SE, Windows Me and also in Windows 2000 and Windows XP. But there are APIs missing in Windows 9x (Windows 98 and Windows Me), necessary to correctly detect device arrival/removal from user mode. This is why the driver requires Windows 2000 and better versions of Windows (e.g. Windows XP).

History of function enhancements

Whenever the functionality of DataLab IO is enhanced, the new version of software support must be released. Both DataLab IO system driver (the 'dlusb.sys' file) and Control Web and Active X driver (the 'dldrv.dll' file) must be upgraded together. This is why the major and minor version numbers of both files are the same.

Version 1.0

The first released version.

Version 1.1

Analog output modules (AO1) are supported by the drivers.

Version 1.5

System driver version number is synchronized with Control Web and Active X driver (the 'dldrv.dll' file).

 

The USB communication is monitored by watchdog timer in the DataLab IO device. If the communication fails (e.g. due to EMI if the USB cable with broken shielding is used), the device electrically disconnects itself and reconnects again to restore connection to PC. Communication is restored approximately after 2 s.

Version 1.6

The drivers newly support digital counter input and incremental counter modules (CNT1, CNT2).

 

It is possible to explicitly declare channel directions in the parameter file using new keywords (first_input_channel and first_output_channel).

 

The device can return its identification number through id_channel.

 

Numbers in parameter file can be written not only in decimal format, but also in binary and hexadecimal notation. Numbers in binary notation should be followed by letter “B”, numbers in hexadecimal notation should be followed by letter “H”.

Version 1.7

It is possible to define logical parameter reset_outputs in the [device] section. If the parameter is true (reset_outputs = true), all output channels are reset to their initial state (the sate in which channels are when the device is powered on) when the application is terminated or when the host PC (or connection to host PC) fails.

Version 1.8

Module types in the parameter file are identified directly by the module name, not by symbolic name. For instance the DI1 is used instead of digital_input, CNT1 instead of counter etc. Older denotations (digital_input, analog_output, etc.) are accepted to maintain backward compatibility, but newly added modules must be identified by module name, no new symbolic name is introduced.

 

Support for physical units was added to the driver (new parameter file keyword unit was introduced). Analog modules can define if the read/written values are expressed in native A/D or D/A converter steps (ADU), in volts (V) or amperes (A). Units can be also defined for individual channels using keywords unit1, unit2, etc.

 

If the module allows mode definition, it can be defined for individual channels using new keywords mode1, mode2, etc.

 

Mode can be defined also as list of symbolic keywords in addition to numbers (e.g. mode = step_direction, enable_preset).

 

The driver stores configuration values (values written to module control channel) and uses them as mode when the device is unplugged and plugged again. If the configuration is changed by the program, it is no longer necessary to capture the driver exception notifying about module plug in and write the control channel—driver does it internally for all modules with the exception of already discontinued AI1 module.

 

Added support for AI2 analog input module.

Version 1.9

Added support for AI3 analog input module.

 

Added support for AD1 analog input module with digital I/O.

Version 1.10

Added support for AD2 analog I/O and digital I/O module.

 

Added support for RTD1 module.

 

Parameter id accepts number or number list.

 
 | About company | Products | Technical support | Software download | Documents download | 
Moravian Instruments, Masarykova 1148, Zlin 4, CZ-76302, Czech Republic