This page describes the device driver and the device window for the Moxa ioLogik 4000 data acquisition unit. The device driver monitors and controls the digital inputs/outputs of various modules hosted by the ioLogik 4000 unit. The driver supports digital I/O modules and the M6200 temperature measurement module (see below for details about the latter one).
The Moxa-ioLogik-4000 device driver is part of the sat-nms framework for M&C of plain digital I/O functions. Monitoring alarm circuits or controlling waveguide switches are indicatives for applications of this framework.
The application configuration normally does not access the Moxa-ioLogik-4000 device driver directly. There are a couple of application level logical devices (e.g. Input , Output or WG-Switch ) which may use the Moxa-ioLogik-4000 device driver as a low level driver to access the physical I/O ports.
Port adressing
The ioLogik device must be configured to work in dynamic address mapping mode to work with the driver. In this mode, each module gets assigned the lowest possible Modbus address. As a result, the modules can be accessed as a continuous sequence of registers.
The driver supports up to 32 16-bit input registers and 32 16-bit output registers appearing as variables I0000 to I001F and Q0800 to Q081F. The variable names reflect the Modbus addresses of these registers in hexadecimal notation. Beside I0000 to I001F, the driver provides 31 variables called J0000 to J001E containing the input registers shifted by 8 bit. J0000 for example contains the high byte if I0000 as low byte and the low byte of I0001 as high byte.
The Moxa administration tool for the ioLogix 4000 (for the NA-4010 also the Web-GUI of the device) shows the addresses, the device has assigned to each module.
The ioLogix 4000 does not permit to read non-existing registers, hence the device driver needs to know, how many input and output registers the device has configured. Evaluate these numbers from the address map shown in the Moxa administration utility and set the driver configuration variables accordingly.
M-6200 Temperature modules
Beside all digital I/O modules the driver also supports The M-6200 temperature measurement module. However, the device window shows the temperature values in hexadecimal notation (tenths of centigrade), which is hard to read / interpret.
For a temperature display in °C the sat-nms software provides the Moxa-ioLogik-Temperature logical device, which translates this value into a readable floating point number. The device also recognizes the special reading '0x8000' which is shown by the module to signal a broken cable to the temperature sensor and generates a fault flag from this.
Configuration settings
If used with the sat-nms framework for M&C of plain digital I/O functions, the Moxa ioLogik device acts like an unprogrammed PLC device. It is intended, that the device driver processes switch settings and changes of input circuits as fast as possible. The following settings are necessary to achieve this:
Device window pages
The following table shows which device window pages are available with this individual device type. Tool-bar functions not mentioned here are described at the general description of device windows .
--- Shows / commands I/O port states.
--- The faults page.
--- The device info page.
--- The maintenance page. The configuration parameters described below are set at this page.Configuration parameters
At the maintenance page of the device window there are a couple of configuration parameters which must be set to make the software talk to the device.
| parameter | description |
|---|---|
| address | Must always be set to 1 |
| inputRegisters | Must be set to the number of 16-bit input registers, the ioLogik device supports with the actual module configuration. Setting this value too low makes the driver ignore the state of registers (I/O modules) outside this range, setting it too high causes an communication fault because the driver tries to access registers which do not exist in the device. |
| outputRegisters | Must be set to the number of 16-bit output registers, the ioLogik device supports with the actual module configuration. Setting this value too low makes the driver ignore the state of registers (I/O modules) outside this range, setting it too high causes an communication fault because the driver tries to access registers which do not exist in the device. |
Variables defined by this device driver
| name | type | flags | range |
|---|---|---|---|
| info.driver | TEXT | R/O | StringRange R/O |
| lowLevel.cmd | TEXT | StringRange | |
| lowLevel.reply | TEXT | R/O | StringRange R/O |
| faults.99 | ALARM | R/O | AlarmFlagRange R/O (Communication) |
| faults.commstat | TEXT | R/O | StringRange R/O |
| info.type | TEXT | R/O | StringRange R/O |
| info.port | TEXT | R/O | StringRange R/O |
| info.frame | TEXT | R/O | StringRange R/O |
| config.inputRegisters | INTEGER | SAVE SETUP | IntegerRange (0 .. 32) |
| config.outputRegisters | INTEGER | SAVE SETUP | IntegerRange (0 .. 32) |
| I0000 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0001 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0002 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0003 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0004 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0005 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0006 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0007 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0008 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0009 | HEX | R/O | HexRange R/O (0 .. 0) |
| I000A | HEX | R/O | HexRange R/O (0 .. 0) |
| I000B | HEX | R/O | HexRange R/O (0 .. 0) |
| I000C | HEX | R/O | HexRange R/O (0 .. 0) |
| I000D | HEX | R/O | HexRange R/O (0 .. 0) |
| I000E | HEX | R/O | HexRange R/O (0 .. 0) |
| I000F | HEX | R/O | HexRange R/O (0 .. 0) |
| I0010 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0011 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0012 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0013 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0014 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0015 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0016 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0017 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0018 | HEX | R/O | HexRange R/O (0 .. 0) |
| I0019 | HEX | R/O | HexRange R/O (0 .. 0) |
| I001A | HEX | R/O | HexRange R/O (0 .. 0) |
| I001B | HEX | R/O | HexRange R/O (0 .. 0) |
| I001C | HEX | R/O | HexRange R/O (0 .. 0) |
| I001D | HEX | R/O | HexRange R/O (0 .. 0) |
| I001E | HEX | R/O | HexRange R/O (0 .. 0) |
| I001F | HEX | R/O | HexRange R/O (0 .. 0) |
| J0000 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0001 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0002 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0003 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0004 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0005 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0006 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0007 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0008 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0009 | HEX | R/O | HexRange R/O (0 .. 0) |
| J000A | HEX | R/O | HexRange R/O (0 .. 0) |
| J000B | HEX | R/O | HexRange R/O (0 .. 0) |
| J000C | HEX | R/O | HexRange R/O (0 .. 0) |
| J000D | HEX | R/O | HexRange R/O (0 .. 0) |
| J000E | HEX | R/O | HexRange R/O (0 .. 0) |
| J000F | HEX | R/O | HexRange R/O (0 .. 0) |
| J0010 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0011 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0012 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0013 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0014 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0015 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0016 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0017 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0018 | HEX | R/O | HexRange R/O (0 .. 0) |
| J0019 | HEX | R/O | HexRange R/O (0 .. 0) |
| J001A | HEX | R/O | HexRange R/O (0 .. 0) |
| J001B | HEX | R/O | HexRange R/O (0 .. 0) |
| J001C | HEX | R/O | HexRange R/O (0 .. 0) |
| J001D | HEX | R/O | HexRange R/O (0 .. 0) |
| J001E | HEX | R/O | HexRange R/O (0 .. 0) |
| Q0800 | HEX | HexRange (0 .. 0) | |
| Q0801 | HEX | HexRange (0 .. 0) | |
| Q0802 | HEX | HexRange (0 .. 0) | |
| Q0803 | HEX | HexRange (0 .. 0) | |
| Q0804 | HEX | HexRange (0 .. 0) | |
| Q0805 | HEX | HexRange (0 .. 0) | |
| Q0806 | HEX | HexRange (0 .. 0) | |
| Q0807 | HEX | HexRange (0 .. 0) | |
| Q0808 | HEX | HexRange (0 .. 0) | |
| Q0809 | HEX | HexRange (0 .. 0) | |
| Q080A | HEX | HexRange (0 .. 0) | |
| Q080B | HEX | HexRange (0 .. 0) | |
| Q080C | HEX | HexRange (0 .. 0) | |
| Q080D | HEX | HexRange (0 .. 0) | |
| Q080E | HEX | HexRange (0 .. 0) | |
| Q080F | HEX | HexRange (0 .. 0) | |
| Q0810 | HEX | HexRange (0 .. 0) | |
| Q0811 | HEX | HexRange (0 .. 0) | |
| Q0812 | HEX | HexRange (0 .. 0) | |
| Q0813 | HEX | HexRange (0 .. 0) | |
| Q0814 | HEX | HexRange (0 .. 0) | |
| Q0815 | HEX | HexRange (0 .. 0) | |
| Q0816 | HEX | HexRange (0 .. 0) | |
| Q0817 | HEX | HexRange (0 .. 0) | |
| Q0818 | HEX | HexRange (0 .. 0) | |
| Q0819 | HEX | HexRange (0 .. 0) | |
| Q081A | HEX | HexRange (0 .. 0) | |
| Q081B | HEX | HexRange (0 .. 0) | |
| Q081C | HEX | HexRange (0 .. 0) | |
| Q081D | HEX | HexRange (0 .. 0) | |
| Q081E | HEX | HexRange (0 .. 0) | |
| Q081F | HEX | HexRange (0 .. 0) | |
| initialized | TEXT | R/O | StringRange R/O |
| i.0 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.2 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.3 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.4 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.5 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.6 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.7 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.8 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.9 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.a | HEX | R/O | HexRange R/O (0 .. 0) |
| i.b | HEX | R/O | HexRange R/O (0 .. 0) |
| i.c | HEX | R/O | HexRange R/O (0 .. 0) |
| i.d | HEX | R/O | HexRange R/O (0 .. 0) |
| i.e | HEX | R/O | HexRange R/O (0 .. 0) |
| i.f | HEX | R/O | HexRange R/O (0 .. 0) |
| i.10 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.11 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.12 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.13 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.14 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.15 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.16 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.17 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.18 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.19 | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1a | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1b | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1c | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1d | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1e | HEX | R/O | HexRange R/O (0 .. 0) |
| i.1f | HEX | R/O | HexRange R/O (0 .. 0) |
| i.q | HEX | R/O | HexRange R/O (0 .. 0) |
| l | TEXT | R/O | StringRange R/O |