{
  "spec_version": 1,
  "slug": "moxa-iologik-e1211",
  "manufacturer": "Moxa",
  "model": "ioLogik E1211",
  "category": "Remote I/O",
  "supplier_url": "https://www.moxa.com/en/products/industrial-edge-connectivity/controllers-and-ios/universal-controllers-and-i-os/iologik-e1200-series/iologik-e1211",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [
    {
      "address": 0,
      "count": 1,
      "name": "Digital output 0 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Digital output 1 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Digital output 2 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Digital output 3 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Digital output 4 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Digital output 5 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Digital output 6 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Digital output 7 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 8,
      "count": 1,
      "name": "Digital output 8 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Digital output 9 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Digital output 10 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Digital output 11 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Digital output 12 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Digital output 13 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Digital output 14 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Digital output 15 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 16,
      "count": 1,
      "name": "Digital output 0 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 17,
      "count": 1,
      "name": "Digital output 1 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 18,
      "count": 1,
      "name": "Digital output 2 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 19,
      "count": 1,
      "name": "Digital output 3 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Digital output 4 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Digital output 5 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Digital output 6 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 23,
      "count": 1,
      "name": "Digital output 7 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 24,
      "count": 1,
      "name": "Digital output 8 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Digital output 9 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Digital output 10 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Digital output 11 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 28,
      "count": 1,
      "name": "Digital output 12 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 29,
      "count": 1,
      "name": "Digital output 13 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Digital output 14 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 31,
      "count": 1,
      "name": "Digital output 15 pulse output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output start/stop: 0 = stop, 1 = start."
    },
    {
      "address": 4128,
      "count": 1,
      "name": "Digital output 0 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4129,
      "count": 1,
      "name": "Digital output 1 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4130,
      "count": 1,
      "name": "Digital output 2 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4131,
      "count": 1,
      "name": "Digital output 3 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4132,
      "count": 1,
      "name": "Digital output 4 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4133,
      "count": 1,
      "name": "Digital output 5 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4134,
      "count": 1,
      "name": "Digital output 6 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4135,
      "count": 1,
      "name": "Digital output 7 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4136,
      "count": 1,
      "name": "Digital output 8 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4137,
      "count": 1,
      "name": "Digital output 9 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4138,
      "count": 1,
      "name": "Digital output 10 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4139,
      "count": 1,
      "name": "Digital output 11 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4140,
      "count": 1,
      "name": "Digital output 12 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4141,
      "count": 1,
      "name": "Digital output 13 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4142,
      "count": 1,
      "name": "Digital output 14 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4143,
      "count": 1,
      "name": "Digital output 15 peer-to-peer safe mode flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the safe mode flag."
    },
    {
      "address": 4144,
      "count": 1,
      "name": "Watchdog alarm flag clear",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to clear the watchdog alarm."
    }
  ],
  "discrete_inputs": [
    {
      "address": 4096,
      "count": 1,
      "name": "Digital output 0 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4097,
      "count": 1,
      "name": "Digital output 1 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4098,
      "count": 1,
      "name": "Digital output 2 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4099,
      "count": 1,
      "name": "Digital output 3 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4100,
      "count": 1,
      "name": "Digital output 4 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4101,
      "count": 1,
      "name": "Digital output 5 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4102,
      "count": 1,
      "name": "Digital output 6 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4103,
      "count": 1,
      "name": "Digital output 7 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4104,
      "count": 1,
      "name": "Digital output 8 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4105,
      "count": 1,
      "name": "Digital output 9 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4106,
      "count": 1,
      "name": "Digital output 10 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4107,
      "count": 1,
      "name": "Digital output 11 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4108,
      "count": 1,
      "name": "Digital output 12 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4109,
      "count": 1,
      "name": "Digital output 13 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4110,
      "count": 1,
      "name": "Digital output 14 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4111,
      "count": 1,
      "name": "Digital output 15 peer-to-peer status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4112,
      "count": 1,
      "name": "Digital output 0 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4113,
      "count": 1,
      "name": "Digital output 1 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4114,
      "count": 1,
      "name": "Digital output 2 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4115,
      "count": 1,
      "name": "Digital output 3 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4116,
      "count": 1,
      "name": "Digital output 4 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4117,
      "count": 1,
      "name": "Digital output 5 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4118,
      "count": 1,
      "name": "Digital output 6 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4119,
      "count": 1,
      "name": "Digital output 7 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4120,
      "count": 1,
      "name": "Digital output 8 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4121,
      "count": 1,
      "name": "Digital output 9 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4122,
      "count": 1,
      "name": "Digital output 10 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4123,
      "count": 1,
      "name": "Digital output 11 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4124,
      "count": 1,
      "name": "Digital output 12 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4125,
      "count": 1,
      "name": "Digital output 13 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4126,
      "count": 1,
      "name": "Digital output 14 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 4127,
      "count": 1,
      "name": "Digital output 15 peer-to-peer safe mode flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on."
    }
  ],
  "input_registers": [
    {
      "address": 5000,
      "count": 10,
      "name": "Model name",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Model name, one ASCII character per byte (10 registers)."
    },
    {
      "address": 5020,
      "count": 2,
      "name": "Device uptime",
      "data_type": "UInt32",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Device uptime in seconds, high word first."
    },
    {
      "address": 5024,
      "count": 3,
      "name": "LAN MAC address",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "MAC address, one byte per character (3 registers, 6 bytes)."
    },
    {
      "address": 5027,
      "count": 2,
      "name": "LAN IP address",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "IPv4 address, one byte per octet, first octet in the most significant byte (2 registers)."
    },
    {
      "address": 5029,
      "count": 2,
      "name": "Firmware version",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Firmware version, one ASCII character per byte (2 registers); the manual's example V1.2.3 uses one byte per version field."
    },
    {
      "address": 5031,
      "count": 2,
      "name": "Firmware build date",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Firmware build date, e.g. 16051718 for Build 16.05.17 18 (2 registers)."
    },
    {
      "address": 5040,
      "count": 30,
      "name": "Device name",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Device name, one ASCII character per byte (30 registers)."
    }
  ],
  "holding_registers": [
    {
      "address": 32,
      "count": 1,
      "name": "All digital output states",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Bit field with the state of all 16 digital outputs in one word (DO-00 in bit 0)."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Digital output 0 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Digital output 1 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Digital output 2 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Digital output 3 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 40,
      "count": 1,
      "name": "Digital output 4 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 41,
      "count": 1,
      "name": "Digital output 5 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 42,
      "count": 1,
      "name": "Digital output 6 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Digital output 7 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Digital output 8 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 45,
      "count": 1,
      "name": "Digital output 9 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 46,
      "count": 1,
      "name": "Digital output 10 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Digital output 11 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Digital output 12 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Digital output 13 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Digital output 14 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 51,
      "count": 1,
      "name": "Digital output 15 pulse count preset",
      "data_type": "UInt16",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Preset pulse count, one register per channel."
    },
    {
      "address": 52,
      "count": 1,
      "name": "Digital output 0 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 53,
      "count": 1,
      "name": "Digital output 1 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 54,
      "count": 1,
      "name": "Digital output 2 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 55,
      "count": 1,
      "name": "Digital output 3 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 56,
      "count": 1,
      "name": "Digital output 4 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 57,
      "count": 1,
      "name": "Digital output 5 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 58,
      "count": 1,
      "name": "Digital output 6 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 59,
      "count": 1,
      "name": "Digital output 7 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 60,
      "count": 1,
      "name": "Digital output 8 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 61,
      "count": 1,
      "name": "Digital output 9 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 62,
      "count": 1,
      "name": "Digital output 10 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 63,
      "count": 1,
      "name": "Digital output 11 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 64,
      "count": 1,
      "name": "Digital output 12 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Digital output 13 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 66,
      "count": 1,
      "name": "Digital output 14 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 67,
      "count": 1,
      "name": "Digital output 15 pulse ON width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse ON width in units of 1 ms."
    },
    {
      "address": 68,
      "count": 1,
      "name": "Digital output 0 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 69,
      "count": 1,
      "name": "Digital output 1 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 70,
      "count": 1,
      "name": "Digital output 2 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 71,
      "count": 1,
      "name": "Digital output 3 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 72,
      "count": 1,
      "name": "Digital output 4 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 73,
      "count": 1,
      "name": "Digital output 5 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 74,
      "count": 1,
      "name": "Digital output 6 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 75,
      "count": 1,
      "name": "Digital output 7 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 76,
      "count": 1,
      "name": "Digital output 8 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 77,
      "count": 1,
      "name": "Digital output 9 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 78,
      "count": 1,
      "name": "Digital output 10 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 79,
      "count": 1,
      "name": "Digital output 11 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 80,
      "count": 1,
      "name": "Digital output 12 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 81,
      "count": 1,
      "name": "Digital output 13 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 82,
      "count": 1,
      "name": "Digital output 14 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    },
    {
      "address": 83,
      "count": 1,
      "name": "Digital output 15 pulse OFF width",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse OFF width in units of 1 ms."
    }
  ],
  "combined_registers": [],
  "notes": "Ethernet remote I/O with a built-in Modbus/TCP server; no gateway needed. Addresses are the manual's decimal start addresses, which are the zero-based wire addresses (the manual also prints the 1-based reference numbers). Each channel occupies one address in the start-address table, so this map lists channels separately. Source: Moxa ioLogik E1200 Series User Manual v16.2, appendix A, 'ioLogik E1211 Modbus Address and Register Map' (16 digital outputs, no digital inputs). The manual types the pulse-count presets as one 16-bit word per channel ('word'), unlike the E1214 where each preset is 32 bits. Unit identifier: the manual states that the Modbus/TCP ID of the ioLogik E1200 is set to 1 by default, so unit_id 1 is used."
}
