9.379 Moxa-ioLogik-4000

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 .

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