{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Advantech",
  "model": "ADAM-4021-F",
  "models": ["ADAM-4021-F"],
  "vendor_website": "advantech.com",
  "description": "1-channel analog output module (4-20mA/0-20mA/0-10V/0-5V, u16 12-bit 0-4095 raw, FC03/FC06, addr 0). Output range set by type code at addr 200.",
  "revision": 2,
  "source": "Omni Console device library (OmniCoreST), modbus-library/advantech-adam-4021f-ao.toml; Source: advantech-adam-4000-modbus.pdf (Appendix G, Module 5). Not verified against the manufacturer's documentation",
  "notes": [
    "Advantech ADAM-4021-F.",
    "Converted automatically from the Omni Console device library (OmniCoreST).",
    "Not verified against the manufacturer's documentation.",
    "Corrections are welcome (CONTRIBUTING.md). Change x_status once this table has been checked against the manual.",
    "| Advantech ADAM-4021-F — 1-Channel Analog Output Module",
    "|",
    "| Source: advantech-adam-4000-modbus.pdf (Appendix G, Module 5)",
    "| - 1-channel analog output (4-20mA / 0-20mA / 0-10V / 0-5V selectable via type code).",
    "| - Modbus RTU, FC03/FC06.",
    "| - FC03 40001 (addr 0): Current Output Value (u16, 0-0xFFF, R/W).",
    "| - FC03 40201 (addr 200): Type Code (R/W).",
    "| - FC03 40215 (addr 214): Watchdog Timer (R/W).",
    "| - FC03 40216 (addr 215): Safety Flag (R/W).",
    "| - FC03 40221 (addr 220): Startup Value (u16, 0-0xFFF, R/W).",
    "| - FC03 40223 (addr 222): Slew Rate (R/W).",
    "| - FC03 40231 (addr 230): Safety Value (u16, 0-0xFFF, R/W).",
    "| - Factory defaults: slave=1, 9600 baud, 8N1."
  ],
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "unofficial",
  "x_origin": "omniconsole",
  "registers": [
    {"name": "Channel 0 output value", "area": "holding", "address": 0, "type": "uint16", "access": "R"},
    {"name": "Type code", "area": "holding", "address": 200, "type": "uint16", "access": "R"},
    {"name": "Watchdog timer", "area": "holding", "address": 214, "type": "uint16", "access": "R"},
    {"name": "Safety flag", "area": "holding", "address": 215, "type": "uint16", "access": "R"},
    {"name": "Startup value", "area": "holding", "address": 220, "type": "uint16", "access": "R"},
    {"name": "Slew rate", "area": "holding", "address": 222, "type": "uint16", "access": "R"},
    {"name": "Safety value", "area": "holding", "address": 230, "type": "uint16", "access": "R"}
  ]
}
