{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Advantech",
  "model": "ADAM-4150",
  "models": ["ADAM-4150"],
  "vendor_website": "advantech.com",
  "description": "Isolated digital I/O module, 7 DI with counters and 8 DO with pulse output, RS485 Modbus RTU",
  "revision": 2,
  "revised": "2026-10-17",
  "source": "Advantech, \"ADAM-4100 Series User's Manual\", Edition 1.3, Appendix B.3 (I/O Modbus mapping table)",
  "sources": [{"title": "ADAM-4100 Series User's Manual", "version": "Edition 1.3", "url": "https://support.elmark.com.pl/advantech/ia/CDROMS/ADAM-4k6k%20Series/Manual/ADAM-4100/ADAM-4100%20series%20user%20manual%20Ed.1.3.pdf", "note": "Appendix B.3; type codes from table 4-1"}],
  "notes": [
    "Addresses are the Modicon numbers of the manual (00001 = coil 1, 10001 = discrete input 1, 40001 = holding register 1).",
    "The module ships with the ADAM ASCII protocol; the manual's appendix explains how to switch it to Modbus RTU.",
    "32-bit values (counters, pulse settings, filter and delay widths) use two registers; the manual does not give their word order or the units of the filter and delay widths."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "N",
  "byte_order": "big",
  "word_order": "big",
  "address_base": 1,
  "x_status": "official",
  "registers": [
    {"name": "DI0", "group": "Inputs", "area": "coil", "address": 1, "type": "bool", "access": "R"},
    {"name": "DI1", "group": "Inputs", "area": "coil", "address": 2, "type": "bool", "access": "R"},
    {"name": "DI2", "group": "Inputs", "area": "coil", "address": 3, "type": "bool", "access": "R"},
    {"name": "DI3", "group": "Inputs", "area": "coil", "address": 4, "type": "bool", "access": "R"},
    {"name": "DI4", "group": "Inputs", "area": "coil", "address": 5, "type": "bool", "access": "R"},
    {"name": "DI5", "group": "Inputs", "area": "coil", "address": 6, "type": "bool", "access": "R"},
    {"name": "DI6", "group": "Inputs", "area": "coil", "address": 7, "type": "bool", "access": "R"},
    {"name": "DO0", "group": "Outputs", "area": "coil", "address": 17, "type": "bool", "access": "W"},
    {"name": "DO1", "group": "Outputs", "area": "coil", "address": 18, "type": "bool", "access": "W"},
    {"name": "DO2", "group": "Outputs", "area": "coil", "address": 19, "type": "bool", "access": "W"},
    {"name": "DO3", "group": "Outputs", "area": "coil", "address": 20, "type": "bool", "access": "W"},
    {"name": "DO4", "group": "Outputs", "area": "coil", "address": 21, "type": "bool", "access": "W"},
    {"name": "DO5", "group": "Outputs", "area": "coil", "address": 22, "type": "bool", "access": "W"},
    {"name": "DO6", "group": "Outputs", "area": "coil", "address": 23, "type": "bool", "access": "W"},
    {"name": "DO7", "group": "Outputs", "area": "coil", "address": 24, "type": "bool", "access": "W"},
    {"name": "Counter 0 run", "group": "Counters", "area": "coil", "address": 33, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 0 clear", "group": "Counters", "area": "coil", "address": 34, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 0 overflow", "group": "Counters", "area": "coil", "address": 35, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI0 latch", "group": "Counters", "area": "coil", "address": 36, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "Counter 1 run", "group": "Counters", "area": "coil", "address": 37, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 1 clear", "group": "Counters", "area": "coil", "address": 38, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 1 overflow", "group": "Counters", "area": "coil", "address": 39, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI1 latch", "group": "Counters", "area": "coil", "address": 40, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "Counter 2 run", "group": "Counters", "area": "coil", "address": 41, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 2 clear", "group": "Counters", "area": "coil", "address": 42, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 2 overflow", "group": "Counters", "area": "coil", "address": 43, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI2 latch", "group": "Counters", "area": "coil", "address": 44, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "Counter 3 run", "group": "Counters", "area": "coil", "address": 45, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 3 clear", "group": "Counters", "area": "coil", "address": 46, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 3 overflow", "group": "Counters", "area": "coil", "address": 47, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI3 latch", "group": "Counters", "area": "coil", "address": 48, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "Counter 4 run", "group": "Counters", "area": "coil", "address": 49, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 4 clear", "group": "Counters", "area": "coil", "address": 50, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 4 overflow", "group": "Counters", "area": "coil", "address": 51, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI4 latch", "group": "Counters", "area": "coil", "address": 52, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "Counter 5 run", "group": "Counters", "area": "coil", "address": 53, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 5 clear", "group": "Counters", "area": "coil", "address": 54, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 5 overflow", "group": "Counters", "area": "coil", "address": 55, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI5 latch", "group": "Counters", "area": "coil", "address": 56, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "Counter 6 run", "group": "Counters", "area": "coil", "address": 57, "type": "bool", "access": "RW", "enum": {"0": "Stop", "1": "Start"}},
    {"name": "Counter 6 clear", "group": "Counters", "area": "coil", "address": 58, "type": "bool", "access": "RW", "description": "Write 1 to clear the counter"},
    {"name": "Counter 6 overflow", "group": "Counters", "area": "coil", "address": 59, "type": "bool", "access": "RW", "description": "Write to clear"},
    {"name": "DI6 latch", "group": "Counters", "area": "coil", "address": 60, "type": "bool", "access": "RW", "description": "Latch status; write to clear"},
    {"name": "DO0 continuous pulse", "group": "Pulse output", "area": "coil", "address": 61, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO1 continuous pulse", "group": "Pulse output", "area": "coil", "address": 62, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO2 continuous pulse", "group": "Pulse output", "area": "coil", "address": 63, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO3 continuous pulse", "group": "Pulse output", "area": "coil", "address": 64, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO4 continuous pulse", "group": "Pulse output", "area": "coil", "address": 65, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO5 continuous pulse", "group": "Pulse output", "area": "coil", "address": 66, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO6 continuous pulse", "group": "Pulse output", "area": "coil", "address": 67, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "DO7 continuous pulse", "group": "Pulse output", "area": "coil", "address": 68, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}},
    {"name": "Counter 0", "group": "Counters", "area": "holding", "address": 1, "type": "uint32", "access": "R"},
    {"name": "Counter 1", "group": "Counters", "area": "holding", "address": 3, "type": "uint32", "access": "R"},
    {"name": "Counter 2", "group": "Counters", "area": "holding", "address": 5, "type": "uint32", "access": "R"},
    {"name": "Counter 3", "group": "Counters", "area": "holding", "address": 7, "type": "uint32", "access": "R"},
    {"name": "Counter 4", "group": "Counters", "area": "holding", "address": 9, "type": "uint32", "access": "R"},
    {"name": "Counter 5", "group": "Counters", "area": "holding", "address": 11, "type": "uint32", "access": "R"},
    {"name": "Counter 6", "group": "Counters", "area": "holding", "address": 13, "type": "uint32", "access": "R"},
    {"name": "DO0 pulse low time", "group": "Pulse output", "area": "holding", "address": 15, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO1 pulse low time", "group": "Pulse output", "area": "holding", "address": 17, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO2 pulse low time", "group": "Pulse output", "area": "holding", "address": 19, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO3 pulse low time", "group": "Pulse output", "area": "holding", "address": 21, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO4 pulse low time", "group": "Pulse output", "area": "holding", "address": 23, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO5 pulse low time", "group": "Pulse output", "area": "holding", "address": 25, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO6 pulse low time", "group": "Pulse output", "area": "holding", "address": 27, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO7 pulse low time", "group": "Pulse output", "area": "holding", "address": 29, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO0 pulse high time", "group": "Pulse output", "area": "holding", "address": 31, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO1 pulse high time", "group": "Pulse output", "area": "holding", "address": 33, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO2 pulse high time", "group": "Pulse output", "area": "holding", "address": 35, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO3 pulse high time", "group": "Pulse output", "area": "holding", "address": 37, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO4 pulse high time", "group": "Pulse output", "area": "holding", "address": 39, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO5 pulse high time", "group": "Pulse output", "area": "holding", "address": 41, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO6 pulse high time", "group": "Pulse output", "area": "holding", "address": 43, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO7 pulse high time", "group": "Pulse output", "area": "holding", "address": 45, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"},
    {"name": "DO0 absolute pulses", "group": "Pulse output", "area": "holding", "address": 47, "type": "uint32", "access": "RW", "description": "0 = continuous"},
    {"name": "DO1 absolute pulses", "group": "Pulse output", "area": "holding", "address": 49, "type": "uint32", "access": "RW"},
    {"name": "DO2 absolute pulses", "group": "Pulse output", "area": "holding", "address": 51, "type": "uint32", "access": "RW"},
    {"name": "DO3 absolute pulses", "group": "Pulse output", "area": "holding", "address": 53, "type": "uint32", "access": "RW"},
    {"name": "DO4 absolute pulses", "group": "Pulse output", "area": "holding", "address": 55, "type": "uint32", "access": "RW"},
    {"name": "DO5 absolute pulses", "group": "Pulse output", "area": "holding", "address": 57, "type": "uint32", "access": "RW"},
    {"name": "DO6 absolute pulses", "group": "Pulse output", "area": "holding", "address": 59, "type": "uint32", "access": "RW"},
    {"name": "DO7 absolute pulses", "group": "Pulse output", "area": "holding", "address": 61, "type": "uint32", "access": "RW"},
    {"name": "DO0 incremental pulses", "group": "Pulse output", "area": "holding", "address": 63, "type": "uint32", "access": "RW"},
    {"name": "DO1 incremental pulses", "group": "Pulse output", "area": "holding", "address": 65, "type": "uint32", "access": "RW"},
    {"name": "DO2 incremental pulses", "group": "Pulse output", "area": "holding", "address": 67, "type": "uint32", "access": "RW"},
    {"name": "DO3 incremental pulses", "group": "Pulse output", "area": "holding", "address": 69, "type": "uint32", "access": "RW"},
    {"name": "DO4 incremental pulses", "group": "Pulse output", "area": "holding", "address": 71, "type": "uint32", "access": "RW"},
    {"name": "DO5 incremental pulses", "group": "Pulse output", "area": "holding", "address": 73, "type": "uint32", "access": "RW"},
    {"name": "DO6 incremental pulses", "group": "Pulse output", "area": "holding", "address": 75, "type": "uint32", "access": "RW"},
    {"name": "DO7 incremental pulses", "group": "Pulse output", "area": "holding", "address": 77, "type": "uint32", "access": "RW"},
    {"name": "DI0 mode", "group": "DI settings", "area": "holding", "address": 79, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI0 counter record", "group": "DI settings", "area": "holding", "address": 79, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI0 digital filter", "group": "DI settings", "area": "holding", "address": 79, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI0 invert", "group": "DI settings", "area": "holding", "address": 79, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DI1 mode", "group": "DI settings", "area": "holding", "address": 80, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI1 counter record", "group": "DI settings", "area": "holding", "address": 80, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI1 digital filter", "group": "DI settings", "area": "holding", "address": 80, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI1 invert", "group": "DI settings", "area": "holding", "address": 80, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DI2 mode", "group": "DI settings", "area": "holding", "address": 81, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI2 counter record", "group": "DI settings", "area": "holding", "address": 81, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI2 digital filter", "group": "DI settings", "area": "holding", "address": 81, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI2 invert", "group": "DI settings", "area": "holding", "address": 81, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DI3 mode", "group": "DI settings", "area": "holding", "address": 82, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI3 counter record", "group": "DI settings", "area": "holding", "address": 82, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI3 digital filter", "group": "DI settings", "area": "holding", "address": 82, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI3 invert", "group": "DI settings", "area": "holding", "address": 82, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DI4 mode", "group": "DI settings", "area": "holding", "address": 83, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI4 counter record", "group": "DI settings", "area": "holding", "address": 83, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI4 digital filter", "group": "DI settings", "area": "holding", "address": 83, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI4 invert", "group": "DI settings", "area": "holding", "address": 83, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DI5 mode", "group": "DI settings", "area": "holding", "address": 84, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI5 counter record", "group": "DI settings", "area": "holding", "address": 84, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI5 digital filter", "group": "DI settings", "area": "holding", "address": 84, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI5 invert", "group": "DI settings", "area": "holding", "address": 84, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DI6 mode", "group": "DI settings", "area": "holding", "address": 85, "type": "uint16", "bit": 0, "bits": 3, "access": "RW", "enum": {"0": "DI", "1": "Counter", "2": "Low to high latch", "3": "High to low latch", "4": "Frequency"}},
    {"name": "DI6 counter record", "group": "DI settings", "area": "holding", "address": 85, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "DI6 digital filter", "group": "DI settings", "area": "holding", "address": 85, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "DI6 invert", "group": "DI settings", "area": "holding", "address": 85, "type": "bool", "bit": 7, "access": "RW"},
    {"name": "DO0 mode", "group": "DO settings", "area": "holding", "address": 86, "type": "uint16", "access": "RW"},
    {"name": "DO1 mode", "group": "DO settings", "area": "holding", "address": 87, "type": "uint16", "access": "RW"},
    {"name": "DO2 mode", "group": "DO settings", "area": "holding", "address": 88, "type": "uint16", "access": "RW"},
    {"name": "DO3 mode", "group": "DO settings", "area": "holding", "address": 89, "type": "uint16", "access": "RW"},
    {"name": "DO4 mode", "group": "DO settings", "area": "holding", "address": 90, "type": "uint16", "access": "RW"},
    {"name": "DO5 mode", "group": "DO settings", "area": "holding", "address": 91, "type": "uint16", "access": "RW"},
    {"name": "DO6 mode", "group": "DO settings", "area": "holding", "address": 92, "type": "uint16", "access": "RW"},
    {"name": "DO7 mode", "group": "DO settings", "area": "holding", "address": 93, "type": "uint16", "access": "RW"},
    {"name": "DI0 filter low width", "group": "DI settings", "area": "holding", "address": 94, "type": "uint32", "access": "RW"},
    {"name": "DI1 filter low width", "group": "DI settings", "area": "holding", "address": 96, "type": "uint32", "access": "RW"},
    {"name": "DI2 filter low width", "group": "DI settings", "area": "holding", "address": 98, "type": "uint32", "access": "RW"},
    {"name": "DI3 filter low width", "group": "DI settings", "area": "holding", "address": 100, "type": "uint32", "access": "RW"},
    {"name": "DI4 filter low width", "group": "DI settings", "area": "holding", "address": 102, "type": "uint32", "access": "RW"},
    {"name": "DI5 filter low width", "group": "DI settings", "area": "holding", "address": 104, "type": "uint32", "access": "RW"},
    {"name": "DI6 filter low width", "group": "DI settings", "area": "holding", "address": 106, "type": "uint32", "access": "RW"},
    {"name": "DI0 filter high width", "group": "DI settings", "area": "holding", "address": 108, "type": "uint32", "access": "RW"},
    {"name": "DI1 filter high width", "group": "DI settings", "area": "holding", "address": 110, "type": "uint32", "access": "RW"},
    {"name": "DI2 filter high width", "group": "DI settings", "area": "holding", "address": 112, "type": "uint32", "access": "RW"},
    {"name": "DI3 filter high width", "group": "DI settings", "area": "holding", "address": 114, "type": "uint32", "access": "RW"},
    {"name": "DI4 filter high width", "group": "DI settings", "area": "holding", "address": 116, "type": "uint32", "access": "RW"},
    {"name": "DI5 filter high width", "group": "DI settings", "area": "holding", "address": 118, "type": "uint32", "access": "RW"},
    {"name": "DI6 filter high width", "group": "DI settings", "area": "holding", "address": 120, "type": "uint32", "access": "RW"},
    {"name": "DO0 low delay", "group": "DO settings", "area": "holding", "address": 122, "type": "uint32", "access": "RW"},
    {"name": "DO1 low delay", "group": "DO settings", "area": "holding", "address": 124, "type": "uint32", "access": "RW"},
    {"name": "DO2 low delay", "group": "DO settings", "area": "holding", "address": 126, "type": "uint32", "access": "RW"},
    {"name": "DO3 low delay", "group": "DO settings", "area": "holding", "address": 128, "type": "uint32", "access": "RW"},
    {"name": "DO4 low delay", "group": "DO settings", "area": "holding", "address": 130, "type": "uint32", "access": "RW"},
    {"name": "DO5 low delay", "group": "DO settings", "area": "holding", "address": 132, "type": "uint32", "access": "RW"},
    {"name": "DO6 low delay", "group": "DO settings", "area": "holding", "address": 134, "type": "uint32", "access": "RW"},
    {"name": "DO7 low delay", "group": "DO settings", "area": "holding", "address": 136, "type": "uint32", "access": "RW"},
    {"name": "DO0 high delay", "group": "DO settings", "area": "holding", "address": 138, "type": "uint32", "access": "RW"},
    {"name": "DO1 high delay", "group": "DO settings", "area": "holding", "address": 140, "type": "uint32", "access": "RW"},
    {"name": "DO2 high delay", "group": "DO settings", "area": "holding", "address": 142, "type": "uint32", "access": "RW"},
    {"name": "DO3 high delay", "group": "DO settings", "area": "holding", "address": 144, "type": "uint32", "access": "RW"},
    {"name": "DO4 high delay", "group": "DO settings", "area": "holding", "address": 146, "type": "uint32", "access": "RW"},
    {"name": "DO5 high delay", "group": "DO settings", "area": "holding", "address": 148, "type": "uint32", "access": "RW"},
    {"name": "DO6 high delay", "group": "DO settings", "area": "holding", "address": 150, "type": "uint32", "access": "RW"},
    {"name": "DO7 high delay", "group": "DO settings", "area": "holding", "address": 152, "type": "uint32", "access": "RW"},
    {"name": "Module name 1", "group": "Identity", "area": "holding", "address": 211, "type": "uint16", "access": "R", "enum": {"0x4150": "ADAM-4150"}, "reference": "0x4150", "role": "model"},
    {"name": "Module name 2", "group": "Identity", "area": "holding", "address": 212, "type": "uint16", "access": "R", "reference": "0x0000"},
    {"name": "Firmware version 1", "group": "Identity", "area": "holding", "address": 213, "type": "uint16", "access": "R"},
    {"name": "Firmware version 2", "group": "Identity", "area": "holding", "address": 214, "type": "uint16", "access": "R"},
    {"name": "Comm safety enabled", "group": "Status", "area": "holding", "address": 215, "type": "uint16", "access": "R", "enum": {"0": "Disabled", "1": "Enabled"}},
    {"name": "Comm safety tripped", "group": "Status", "area": "holding", "address": 216, "type": "uint16", "access": "R", "enum": {"0": "No", "1": "Yes"}},
    {"name": "DI word", "group": "Inputs", "area": "holding", "address": 301, "type": "uint16", "access": "R", "description": "Bit n = DIn"},
    {"name": "DO word", "group": "Outputs", "area": "holding", "address": 303, "type": "uint16", "access": "RW", "description": "Bit n = DOn"}
  ]
}
