This page describes the device driver and the device window for the * Moxa ioLogik 4200* data acquisition unit. The device driver monitors and controls the digital inputs/outputs of various modules hosted by the ioLogik 4200 unit. The driver supports digital I/O modules, the M-3802 current sensor module and the M6200 temperature measurement module (see below for details about the analog input modules).
The Moxa-ioLogik-4200 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-4200 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 fixed address mapping mode to work with the driver. In this mode, each module has a fixed Modbus address range which can be evaluated from the module's position (its distance to the main module. The driver tests the addressing mode at startup, if the Moxa is configured to "DYNAMIC" addressing, a "Addressing mode" fault is raised. The driver supports up to 16 digital I/O modules at one device. The Moxa ioLogik 4200 main module limits the system to this size.
The sat-nms device driver for the Moxa ioLogik 4200 provides one input variable (named I0000 to I000F) and one output variable (named Q0000 to Q000F) for each module position. If for example an input module is at the third position from the main unit, its readings are in the variable I0002. The enumeration scheme (hexadecimal notation and starting with 0000 for the first one) is for compatibility with other PLC devices.
Output modules are treated in the same way but with the variables Q0000 Q000F. If for example the module next to the main module is an output or relay module, it gets controlled through the variable Q0000.
Analog readings
The sat-nms device driver for the Moxa ioLogik 4200 supports the usage of the M-6200 temperature measurement module and M-3802 8-channel current measurement module. It however limits the number of analog readings to 16 in total. This means, all analog modules installed may not provide more than 16 measurement values. If the driver detects more than 16 analog channels, it raises an "Analog channels" fault and ignores all analog reading beyond the limit.
The sat-nms device driver treats analog readings in a special way: There are 16 variables (named A0000 to A000F) provided which get the analog readings dynamically assigned. A0000 contains the first channel of the first module, A0001 the second channel. With the A???? variables not the absolute position of the module selects the variable but its relative position in the sequence of analog input modules.
If for example a M-3800 current sensor module is located next to the main module and the only other analog input module in the system is a M-6200 located somewhere more to the right, the variables A0000 to A0007 contain the eight current readings of the M-3802 and the variables A0008 and A0009 the temperature readings of the M-6200.
Converting analog readings to readable format
The A???? variables contain the analog readings (temperature or current) in the native format as read from the device. This is a raw hexadecimal value of the ADC reading with a special coding for faults like broken cables.
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. Analogously to this, the Moxa-ioLogik-Current logical device translates the ADC readings to a value in milliamperes.
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 if the device is controlled Modbus over a serial line. With Modbus/TCP the device address doesn't matter. |
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 |
| info.serialno | TEXT | R/O | StringRange R/O |
| info.revision | TEXT | R/O | StringRange R/O |
| info.addressing | TEXT | R/O | StringRange R/O |
| info.modules | TEXT | R/O | StringRange R/O |
| info.module.1 | TEXT | R/O | StringRange R/O |
| info.module.2 | TEXT | R/O | StringRange R/O |
| info.module.3 | TEXT | R/O | StringRange R/O |
| info.module.4 | TEXT | R/O | StringRange R/O |
| info.module.5 | TEXT | R/O | StringRange R/O |
| info.module.6 | TEXT | R/O | StringRange R/O |
| info.module.7 | TEXT | R/O | StringRange R/O |
| info.module.8 | TEXT | R/O | StringRange R/O |
| info.module.9 | TEXT | R/O | StringRange R/O |
| info.module.10 | TEXT | R/O | StringRange R/O |
| info.module.11 | TEXT | R/O | StringRange R/O |
| info.module.12 | TEXT | R/O | StringRange R/O |
| info.module.13 | TEXT | R/O | StringRange R/O |
| info.module.14 | TEXT | R/O | StringRange R/O |
| info.module.15 | TEXT | R/O | StringRange R/O |
| info.module.16 | TEXT | R/O | StringRange R/O |
| 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) |
| A0000 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0001 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0002 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0003 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0004 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0005 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0006 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0007 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0008 | HEX | R/O | HexRange R/O (0 .. 0) |
| A0009 | HEX | R/O | HexRange R/O (0 .. 0) |
| A000A | HEX | R/O | HexRange R/O (0 .. 0) |
| A000B | HEX | R/O | HexRange R/O (0 .. 0) |
| A000C | HEX | R/O | HexRange R/O (0 .. 0) |
| A000D | HEX | R/O | HexRange R/O (0 .. 0) |
| A000E | HEX | R/O | HexRange R/O (0 .. 0) |
| A000F | HEX | R/O | HexRange R/O (0 .. 0) |
| Q0000 | HEX | HexRange (0 .. 0) | |
| Q0001 | HEX | HexRange (0 .. 0) | |
| Q0002 | HEX | HexRange (0 .. 0) | |
| Q0003 | HEX | HexRange (0 .. 0) | |
| Q0004 | HEX | HexRange (0 .. 0) | |
| Q0005 | HEX | HexRange (0 .. 0) | |
| Q0006 | HEX | HexRange (0 .. 0) | |
| Q0007 | HEX | HexRange (0 .. 0) | |
| Q0008 | HEX | HexRange (0 .. 0) | |
| Q0009 | HEX | HexRange (0 .. 0) | |
| Q000A | HEX | HexRange (0 .. 0) | |
| Q000B | HEX | HexRange (0 .. 0) | |
| Q000C | HEX | HexRange (0 .. 0) | |
| Q000D | HEX | HexRange (0 .. 0) | |
| Q000E | HEX | HexRange (0 .. 0) | |
| Q000F | HEX | HexRange (0 .. 0) | |
| Y0000 | HEX | HexRange (0 .. 0) | |
| Y0001 | HEX | HexRange (0 .. 0) | |
| Y0002 | HEX | HexRange (0 .. 0) | |
| Y0003 | HEX | HexRange (0 .. 0) | |
| Y0004 | HEX | HexRange (0 .. 0) | |
| Y0005 | HEX | HexRange (0 .. 0) | |
| Y0006 | HEX | HexRange (0 .. 0) | |
| Y0007 | HEX | HexRange (0 .. 0) | |
| Y0008 | HEX | HexRange (0 .. 0) | |
| Y0009 | HEX | HexRange (0 .. 0) | |
| Y000A | HEX | HexRange (0 .. 0) | |
| Y000B | HEX | HexRange (0 .. 0) | |
| Y000C | HEX | HexRange (0 .. 0) | |
| Y000D | HEX | HexRange (0 .. 0) | |
| Y000E | HEX | HexRange (0 .. 0) | |
| Y000F | HEX | HexRange (0 .. 0) | |
| initialized | TEXT | R/O | StringRange R/O |
| 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) |
| faults.01 | ALARM | R/O | AlarmFlagRange R/O (Addressing mode) |
| faults.02 | ALARM | R/O | AlarmFlagRange R/O (Analog channels) |