{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Unipi Technology",
  "model": "Neuron xS40",
  "models": ["xS40", "Neuron xS40"],
  "vendor_website": "www.unipi.technology",
  "description": "Unipi Neuron xS40 I/O extension module: 8 digital inputs, 14 relay outputs",
  "revision": 3,
  "revised": "2026-11-10",
  "source": "neuron_xs40_modbus_map.xlsx, Unipi knowledge base page https://kb.unipi.technology/en:hw:04-extensions:downloads",
  "sources": [
    {"title": "Neuron xS40 Modbus map (neuron_xs40_modbus_map.xlsx)", "url": "https://kb.unipi.technology/_media/files:products:extensions_gateyways:extensions:modbus_maps/neuron_xs40_modbus_map.xlsx", "note": "Sheets Registers - group 1, Coils - group 1 and Description; listed on https://kb.unipi.technology/en:hw:04-extensions:downloads"}
  ],
  "notes": [
    "The spreadsheet is titled Neuron xS40: the xS modules are the extensions of the Unipi Neuron controllers. Unipi also publishes per-model holding-register maps for the xS series (xS11, xS51-xS54), which are separate files.",
    "Addresses are those of the column 'Via Unit 1' (the module addressed directly, group 1). The column 'Via Unit 0' gives the same address for the shared registers but has no entries for the RS485 configuration registers (500-504), which are included here.",
    "Connection defaults (baud rate, parity, unit id) are not stated in the spreadsheet; the module's Modbus address is configurable (1-254) in the register named Modbus Address Configuration.",
    "Registers marked reserved, internal or obsolete in the spreadsheet are left out. Multi-register values are big-endian (most significant register first), as the Description sheet states.",
    "Coils repeat the digital inputs, outputs and some settings that also appear as bits of holding registers."
  ],
  "protocol": "rtu",
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "enums": {
    "baud_rate": {"11": "2400", "12": "4800", "13": "9600", "14": "19200", "15": "38400", "4097": "57600", "4098": "115200"}
  },
  "x_status": "official",
  "registers": [
    {"name": "Digital Input 1.1", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 0},
    {"name": "Digital Input 1.2", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 1},
    {"name": "Digital Input 1.3", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 2},
    {"name": "Digital Input 1.4", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 3},
    {"name": "Digital Input 1.5", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 4},
    {"name": "Digital Input 1.6", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 5},
    {"name": "Digital Input 1.7", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 6},
    {"name": "Digital Input 1.8", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 7},
    {"name": "Relay Output 1.1", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Relay Output 1.2", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Relay Output 1.3", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Relay Output 1.4", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Relay Output 1.5", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Relay Output 1.6", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Relay Output 1.7", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Relay Output 1.8", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "Relay Output 1.9", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 8, "access": "RW"},
    {"name": "Relay Output 1.10", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 9, "access": "RW"},
    {"name": "Relay Output 1.11", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 10, "access": "RW"},
    {"name": "Relay Output 1.12", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 11, "access": "RW"},
    {"name": "Relay Output 1.13", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 12, "access": "RW"},
    {"name": "Relay Output 1.14", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 13, "access": "RW"},
    {"name": "MWD Enable", "group": "Watchdog", "area": "holding", "address": 2, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "MWD Reboot Detected", "group": "Watchdog", "area": "holding", "address": 2, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Counter of Digital Input 1.1", "group": "Counters", "area": "holding", "address": 3, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.2", "group": "Counters", "area": "holding", "address": 5, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.3", "group": "Counters", "area": "holding", "address": 7, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.4", "group": "Counters", "area": "holding", "address": 9, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.5", "group": "Counters", "area": "holding", "address": 11, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.6", "group": "Counters", "area": "holding", "address": 13, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.7", "group": "Counters", "area": "holding", "address": 15, "type": "uint32", "access": "RW"},
    {"name": "Counter of Digital Input 1.8", "group": "Counters", "area": "holding", "address": 17, "type": "uint32", "access": "RW"},
    {"name": "User LED 1.1", "group": "LEDs", "area": "holding", "address": 23, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "User LED 1.2", "group": "LEDs", "area": "holding", "address": 23, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "User LED 1.3", "group": "LEDs", "area": "holding", "address": 23, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "User LED 1.4", "group": "LEDs", "area": "holding", "address": 23, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Synchronised DO/RO 1.1", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Synchronised DO/RO 1.2", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Synchronised DO/RO 1.3", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Synchronised DO/RO 1.4", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Synchronised DO/RO 1.5", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Synchronised DO/RO 1.6", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Synchronised DO/RO 1.7", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Synchronised DO/RO 1.8", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "Synchronised DO/RO 1.9", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 8, "access": "RW"},
    {"name": "Synchronised DO/RO 1.10", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 9, "access": "RW"},
    {"name": "Synchronised DO/RO 1.11", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 10, "access": "RW"},
    {"name": "Synchronised DO/RO 1.12", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 11, "access": "RW"},
    {"name": "Synchronised DO/RO 1.13", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 12, "access": "RW"},
    {"name": "Synchronised DO/RO 1.14", "group": "Relay outputs", "area": "holding", "address": 24, "type": "bool", "bit": 13, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.1", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.2", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.3", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.4", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.5", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.6", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.7", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.8", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.9", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 8, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.10", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 9, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.11", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 10, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.12", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 11, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.13", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 12, "access": "RW"},
    {"name": "Synchronised DO/RO Lock 1.14", "group": "Relay outputs", "area": "holding", "address": 25, "type": "bool", "bit": 13, "access": "RW"},
    {"name": "RS485 TERMIOS CFlags 1.1", "group": "RS485 and Modbus configuration", "area": "holding", "address": 500, "type": "uint16", "access": "RW"},
    {"name": "RS485 TERMIOS LFlags 1.1", "group": "RS485 and Modbus configuration", "area": "holding", "address": 501, "type": "uint16", "access": "RW"},
    {"name": "RS485 TERMIOS IFlags 1.1", "group": "RS485 and Modbus configuration", "area": "holding", "address": 502, "type": "uint16", "access": "RW"},
    {"name": "RS485 TERMIOS LDisc 1.1", "group": "RS485 and Modbus configuration", "area": "holding", "address": 503, "type": "uint16", "access": "RW"},
    {"name": "RS485 ModBus Timeout 1.1", "group": "RS485 and Modbus configuration", "area": "holding", "address": 504, "type": "uint16", "access": "RW"},
    {"name": "Firmware Version", "group": "Device information", "area": "holding", "address": 1000, "type": "uint16"},
    {"name": "Number of DIs", "group": "Device information", "area": "holding", "address": 1001, "type": "uint16", "bit": 0, "bits": 8},
    {"name": "Number of DOs", "group": "Device information", "area": "holding", "address": 1001, "type": "uint16", "bit": 8, "bits": 8},
    {"name": "Number of internal RS485 lines", "group": "RS485 and Modbus configuration", "area": "holding", "address": 1002, "type": "uint16", "bit": 0, "bits": 4},
    {"name": "Number of AOs", "group": "Device information", "area": "holding", "address": 1002, "type": "uint16", "bit": 4, "bits": 4},
    {"name": "Number of AIs", "group": "Device information", "area": "holding", "address": 1002, "type": "uint16", "bit": 8, "bits": 8},
    {"name": "Firmware ID", "group": "Device information", "area": "holding", "address": 1003, "type": "uint16"},
    {"name": "Hardware ID", "group": "Device information", "area": "holding", "address": 1004, "type": "uint16"},
    {"name": "PCB Serial Number", "group": "Device information", "area": "holding", "address": 1005, "type": "uint32"},
    {"name": "RS485 RX queue not empty", "group": "Interrupt mask", "area": "holding", "address": 1007, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "RS485 TX queue empty", "group": "Interrupt mask", "area": "holding", "address": 1007, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "RS485 ModBus RX frame finished", "group": "Interrupt mask", "area": "holding", "address": 1007, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Digital Input changed state", "group": "Interrupt mask", "area": "holding", "address": 1007, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Group MasterWatchDog (MWD) Timeout (in 1ms)", "group": "Watchdog", "area": "holding", "address": 1008, "type": "uint16", "access": "RW", "unit": "ms"},
    {"name": "VRef of MCU", "group": "Device information", "area": "holding", "address": 1009, "type": "uint16"},
    {"name": "Debounce time (in 100us) for DI 1.1", "group": "DirectSwitch and debounce", "area": "holding", "address": 1010, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.2", "group": "DirectSwitch and debounce", "area": "holding", "address": 1011, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.3", "group": "DirectSwitch and debounce", "area": "holding", "address": 1012, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.4", "group": "DirectSwitch and debounce", "area": "holding", "address": 1013, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.5", "group": "DirectSwitch and debounce", "area": "holding", "address": 1014, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.6", "group": "DirectSwitch and debounce", "area": "holding", "address": 1015, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.7", "group": "DirectSwitch and debounce", "area": "holding", "address": 1016, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Debounce time (in 100us) for DI 1.8", "group": "DirectSwitch and debounce", "area": "holding", "address": 1017, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"},
    {"name": "Enable DirectSwitch on DI 1.1", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.2", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.3", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.4", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.5", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.6", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.7", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.8", "group": "DirectSwitch and debounce", "area": "holding", "address": 1018, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.1", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.2", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.3", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.4", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.5", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.6", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.7", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.8", "group": "DirectSwitch and debounce", "area": "holding", "address": 1019, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.1", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.2", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.3", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.4", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.5", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.6", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.7", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Enable DirectSwitch Toggle on DI 1.8", "group": "DirectSwitch and debounce", "area": "holding", "address": 1020, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "Baud rate", "group": "RS485 and Modbus configuration", "area": "holding", "address": 1023, "type": "uint16", "bit": 0, "bits": 13, "access": "RW", "enum": "baud_rate", "description": "Value coded as in the manufacturer baud rate table, which is marked obsolete"},
    {"name": "Parity enable", "group": "RS485 and Modbus configuration", "area": "holding", "address": 1023, "type": "bool", "bit": 13, "access": "RW"},
    {"name": "Parity (0 = even, 1 = odd)", "group": "RS485 and Modbus configuration", "area": "holding", "address": 1023, "type": "bool", "bit": 14, "access": "RW"},
    {"name": "Modbus Address Configuration (1-254)", "group": "RS485 and Modbus configuration", "area": "holding", "address": 1024, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 254, "description": "Modbus address of the module on its RS485 line"},
    {"name": "Relay Output 1.1 (coil)", "group": "Relay outputs", "area": "coil", "address": 0, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.2 (coil)", "group": "Relay outputs", "area": "coil", "address": 1, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.3 (coil)", "group": "Relay outputs", "area": "coil", "address": 2, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.4 (coil)", "group": "Relay outputs", "area": "coil", "address": 3, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.5 (coil)", "group": "Relay outputs", "area": "coil", "address": 4, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.6 (coil)", "group": "Relay outputs", "area": "coil", "address": 5, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.7 (coil)", "group": "Relay outputs", "area": "coil", "address": 6, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.8 (coil)", "group": "Relay outputs", "area": "coil", "address": 7, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.9 (coil)", "group": "Relay outputs", "area": "coil", "address": 8, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.10 (coil)", "group": "Relay outputs", "area": "coil", "address": 9, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.11 (coil)", "group": "Relay outputs", "area": "coil", "address": 10, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.12 (coil)", "group": "Relay outputs", "area": "coil", "address": 11, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.13 (coil)", "group": "Relay outputs", "area": "coil", "address": 12, "type": "bool", "access": "RW"},
    {"name": "Relay Output 1.14 (coil)", "group": "Relay outputs", "area": "coil", "address": 13, "type": "bool", "access": "RW"},
    {"name": "Digital Input 1.1 (coil)", "group": "Digital inputs", "area": "coil", "address": 14, "type": "bool"},
    {"name": "Digital Input 1.2 (coil)", "group": "Digital inputs", "area": "coil", "address": 15, "type": "bool"},
    {"name": "Digital Input 1.3 (coil)", "group": "Digital inputs", "area": "coil", "address": 16, "type": "bool"},
    {"name": "Digital Input 1.4 (coil)", "group": "Digital inputs", "area": "coil", "address": 17, "type": "bool"},
    {"name": "Digital Input 1.5 (coil)", "group": "Digital inputs", "area": "coil", "address": 18, "type": "bool"},
    {"name": "Digital Input 1.6 (coil)", "group": "Digital inputs", "area": "coil", "address": 19, "type": "bool"},
    {"name": "Digital Input 1.7 (coil)", "group": "Digital inputs", "area": "coil", "address": 20, "type": "bool"},
    {"name": "Digital Input 1.8 (coil)", "group": "Digital inputs", "area": "coil", "address": 21, "type": "bool"},
    {"name": "User Programmable LED 1.1 (coil)", "group": "LEDs", "area": "coil", "address": 22, "type": "bool", "access": "RW"},
    {"name": "User Programmable LED 1.2 (coil)", "group": "LEDs", "area": "coil", "address": 23, "type": "bool", "access": "RW"},
    {"name": "User Programmable LED 1.3 (coil)", "group": "LEDs", "area": "coil", "address": 24, "type": "bool", "access": "RW"},
    {"name": "User Programmable LED 1.4 (coil)", "group": "LEDs", "area": "coil", "address": 25, "type": "bool", "access": "RW"},
    {"name": "MWD reset indication (coil)", "group": "Watchdog", "area": "coil", "address": 1000, "type": "bool", "access": "RW"},
    {"name": "Reset group MCU (coil)", "group": "Device information", "area": "coil", "address": 1002, "type": "bool"},
    {"name": "Save current configuration and use on startup (coil)", "group": "Device information", "area": "coil", "address": 1003, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.1 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1007, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.2 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1008, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.3 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1009, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.4 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1010, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.5 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1011, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.6 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1012, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.7 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1013, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch on DI 1.8 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1014, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.1 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1015, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.2 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1016, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.3 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1017, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.4 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1018, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.5 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1019, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.6 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1020, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.7 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1021, "type": "bool", "access": "RW"},
    {"name": "Invert DirectSwitch Polarity on DI 1.8 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1022, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.1 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1023, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.2 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1024, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.3 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1025, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.4 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1026, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.5 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1027, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.6 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1028, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.7 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1029, "type": "bool", "access": "RW"},
    {"name": "Enable DirectSwitch Toggle Mode on DI 1.8 (coil)", "group": "DirectSwitch and debounce", "area": "coil", "address": 1030, "type": "bool", "access": "RW"}
  ]
}
