{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "ATO",
  "model": "RS485 2-Channel Analog Output",
  "models": ["RS485 2-Channel Analog Output"],
  "vendor_website": "ato.com",
  "description": "2-channel RS485 Modbus RTU analog output module (4-20mA / 0-5V / 0-10V selectable); 12-bit DAC, raw 0–4095 per channel (FC03/06, 8N1, 4800 baud default).",
  "revision": 2,
  "source": "Omni Console device library (OmniCoreST), modbus-library/ato-rs485-2ch-analog-out.toml; Source: ato-rs485-4-20ma-0-10v-converter-2ch-modbus.pdf. Not verified against the manufacturer's documentation",
  "notes": [
    "ATO RS485 2-Channel Analog Output.",
    "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.",
    "| ATO RS485 to 4-20mA/0-5V/0-10V Converter — 2 Channel",
    "|",
    "| Source: ato-rs485-4-20ma-0-10v-converter-2ch-modbus.pdf",
    "| - 2-channel analog output module (current or voltage, selectable per hardware jumper).",
    "| - Modbus RTU, FC03/04/06, 8N1, factory default 4800 baud, slave address 1.",
    "| - All addresses are raw protocol addresses (0x0000 = 0 decimal).",
    "| - Channel values: u16, 12-bit DAC, range 0–4095.",
    "| 4-20mA: mA = (Rx/4095)×16 + 4; 0-5V: V = (Rx/4095)×5; 0-10V: V = (Rx/4095)×10.",
    "| - Current mode register at 0x0055 (85): 0=0-20mA, 1=4-20mA (default 1)."
  ],
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "unofficial",
  "x_origin": "omniconsole",
  "registers": [
    {"name": "Channel 1 output value", "area": "holding", "address": 0, "type": "uint16", "access": "R"},
    {"name": "Channel 2 output value", "area": "holding", "address": 1, "type": "uint16", "access": "R"}
  ]
}
