{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Advantech",
  "model": "ADAM-4117",
  "models": ["ADAM-4117"],
  "vendor_website": "advantech.com",
  "description": "8-channel analog input module, RS485 Modbus RTU",
  "revision": 2,
  "revised": "2026-10-17",
  "source": "Advantech, \"ADAM-4100 Series User's Manual\", Edition 1.3, Appendix B.1 (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.1; 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.",
    "Channel values are raw 16-bit values of the range chosen by each channel's type code; the manual gives the conversion for the ASCII protocol only."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "N",
  "byte_order": "big",
  "word_order": "big",
  "address_base": 1,
  "enums": {
    "type_code": {"0x07": "4-20 mA", "0x08": "±10 V", "0x09": "±5 V", "0x0A": "±1 V", "0x0B": "±500 mV", "0x0C": "±150 mV", "0x0D": "±20 mA", "0x15": "±15 V", "0x48": "0-10 V", "0x49": "0-5 V", "0x4A": "0-1 V", "0x4B": "0-500 mV", "0x4C": "0-150 mV", "0x4D": "0-20 mA", "0x55": "0-15 V"}
  },
  "x_status": "official",
  "registers": [
    {"name": "Ch0 burn-out", "group": "Inputs", "area": "discrete", "address": 1, "type": "bool", "access": "R"},
    {"name": "Ch1 burn-out", "group": "Inputs", "area": "discrete", "address": 2, "type": "bool", "access": "R"},
    {"name": "Ch2 burn-out", "group": "Inputs", "area": "discrete", "address": 3, "type": "bool", "access": "R"},
    {"name": "Ch3 burn-out", "group": "Inputs", "area": "discrete", "address": 4, "type": "bool", "access": "R"},
    {"name": "Ch4 burn-out", "group": "Inputs", "area": "discrete", "address": 5, "type": "bool", "access": "R"},
    {"name": "Ch5 burn-out", "group": "Inputs", "area": "discrete", "address": 6, "type": "bool", "access": "R"},
    {"name": "Ch6 burn-out", "group": "Inputs", "area": "discrete", "address": 7, "type": "bool", "access": "R"},
    {"name": "Ch7 burn-out", "group": "Inputs", "area": "discrete", "address": 8, "type": "bool", "access": "R"},
    {"name": "AI0", "group": "Inputs", "area": "holding", "address": 1, "type": "int16", "access": "R", "description": "Raw value of the range set by the type code"},
    {"name": "AI1", "group": "Inputs", "area": "holding", "address": 2, "type": "int16", "access": "R"},
    {"name": "AI2", "group": "Inputs", "area": "holding", "address": 3, "type": "int16", "access": "R"},
    {"name": "AI3", "group": "Inputs", "area": "holding", "address": 4, "type": "int16", "access": "R"},
    {"name": "AI4", "group": "Inputs", "area": "holding", "address": 5, "type": "int16", "access": "R"},
    {"name": "AI5", "group": "Inputs", "area": "holding", "address": 6, "type": "int16", "access": "R"},
    {"name": "AI6", "group": "Inputs", "area": "holding", "address": 7, "type": "int16", "access": "R"},
    {"name": "AI7", "group": "Inputs", "area": "holding", "address": 8, "type": "int16", "access": "R"},
    {"name": "Ch0 type code", "group": "Settings", "area": "holding", "address": 201, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch1 type code", "group": "Settings", "area": "holding", "address": 202, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch2 type code", "group": "Settings", "area": "holding", "address": 203, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch3 type code", "group": "Settings", "area": "holding", "address": 204, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch4 type code", "group": "Settings", "area": "holding", "address": 205, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch5 type code", "group": "Settings", "area": "holding", "address": 206, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch6 type code", "group": "Settings", "area": "holding", "address": 207, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Ch7 type code", "group": "Settings", "area": "holding", "address": 208, "type": "uint16", "access": "RW", "enum": "type_code"},
    {"name": "Module name 1", "group": "Identity", "area": "holding", "address": 211, "type": "uint16", "access": "R", "enum": {"0x4117": "ADAM-4117"}, "reference": "0x4117", "role": "model"},
    {"name": "Module name 2", "group": "Identity", "area": "holding", "address": 212, "type": "uint16", "access": "R", "reference": "0x5000"},
    {"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": "Ch0 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 0, "access": "RW"},
    {"name": "Ch1 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 1, "access": "RW"},
    {"name": "Ch2 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 2, "access": "RW"},
    {"name": "Ch3 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 3, "access": "RW"},
    {"name": "Ch4 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 4, "access": "RW"},
    {"name": "Ch5 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 5, "access": "RW"},
    {"name": "Ch6 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 6, "access": "RW"},
    {"name": "Ch7 enabled", "group": "Settings", "area": "holding", "address": 221, "type": "bool", "bit": 7, "access": "RW"}
  ]
}
