{
  "spec_version": 1,
  "slug": "moxa-iologik-e2210",
  "manufacturer": "Moxa",
  "model": "ioLogik E2210 (12 DI + 8 DO Ethernet remote I/O)",
  "category": "Remote I/O",
  "supplier_url": "https://www.moxa.com/en/products/industrial-edge-connectivity/controllers-and-ios/universal-controllers-and-i-os/iologik-e2200-series/iologik-e2210",
  "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": "DO channel 0 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00001)."
    },
    {
      "address": 1,
      "count": 1,
      "name": "DO channel 1 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00002)."
    },
    {
      "address": 2,
      "count": 1,
      "name": "DO channel 2 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00003)."
    },
    {
      "address": 3,
      "count": 1,
      "name": "DO channel 3 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00004)."
    },
    {
      "address": 4,
      "count": 1,
      "name": "DO channel 4 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00005)."
    },
    {
      "address": 5,
      "count": 1,
      "name": "DO channel 5 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00006)."
    },
    {
      "address": 6,
      "count": 1,
      "name": "DO channel 6 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00007)."
    },
    {
      "address": 7,
      "count": 1,
      "name": "DO channel 7 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00008)."
    },
    {
      "address": 8,
      "count": 1,
      "name": "DO channel 0 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00009)."
    },
    {
      "address": 9,
      "count": 1,
      "name": "DO channel 1 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00010)."
    },
    {
      "address": 10,
      "count": 1,
      "name": "DO channel 2 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00011)."
    },
    {
      "address": 11,
      "count": 1,
      "name": "DO channel 3 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00012)."
    },
    {
      "address": 12,
      "count": 1,
      "name": "DO channel 4 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00013)."
    },
    {
      "address": 13,
      "count": 1,
      "name": "DO channel 5 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00014)."
    },
    {
      "address": 14,
      "count": 1,
      "name": "DO channel 6 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00015)."
    },
    {
      "address": 15,
      "count": 1,
      "name": "DO channel 7 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00016)."
    },
    {
      "address": 16,
      "count": 1,
      "name": "DO channel 0 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00017)."
    },
    {
      "address": 17,
      "count": 1,
      "name": "DO channel 1 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00018)."
    },
    {
      "address": 18,
      "count": 1,
      "name": "DO channel 2 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00019)."
    },
    {
      "address": 19,
      "count": 1,
      "name": "DO channel 3 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00020)."
    },
    {
      "address": 20,
      "count": 1,
      "name": "DO channel 4 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00021)."
    },
    {
      "address": 21,
      "count": 1,
      "name": "DO channel 5 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00022)."
    },
    {
      "address": 22,
      "count": 1,
      "name": "DO channel 6 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00023)."
    },
    {
      "address": 23,
      "count": 1,
      "name": "DO channel 7 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00024)."
    },
    {
      "address": 24,
      "count": 1,
      "name": "DO channel 0 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00025)."
    },
    {
      "address": 25,
      "count": 1,
      "name": "DO channel 1 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00026)."
    },
    {
      "address": 26,
      "count": 1,
      "name": "DO channel 2 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00027)."
    },
    {
      "address": 27,
      "count": 1,
      "name": "DO channel 3 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00028)."
    },
    {
      "address": 28,
      "count": 1,
      "name": "DO channel 4 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00029)."
    },
    {
      "address": 29,
      "count": 1,
      "name": "DO channel 5 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00030)."
    },
    {
      "address": 30,
      "count": 1,
      "name": "DO channel 6 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00031)."
    },
    {
      "address": 31,
      "count": 1,
      "name": "DO channel 7 pulse operate status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00032)."
    },
    {
      "address": 32,
      "count": 1,
      "name": "DO channel 0 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00033)."
    },
    {
      "address": 33,
      "count": 1,
      "name": "DO channel 1 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00034)."
    },
    {
      "address": 34,
      "count": 1,
      "name": "DO channel 2 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00035)."
    },
    {
      "address": 35,
      "count": 1,
      "name": "DO channel 3 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00036)."
    },
    {
      "address": 36,
      "count": 1,
      "name": "DO channel 4 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00037)."
    },
    {
      "address": 37,
      "count": 1,
      "name": "DO channel 5 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00038)."
    },
    {
      "address": 38,
      "count": 1,
      "name": "DO channel 6 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00039)."
    },
    {
      "address": 39,
      "count": 1,
      "name": "DO channel 7 pulse power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00040)."
    },
    {
      "address": 40,
      "count": 1,
      "name": "DO channel 0 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00041)."
    },
    {
      "address": 41,
      "count": 1,
      "name": "DO channel 1 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00042)."
    },
    {
      "address": 42,
      "count": 1,
      "name": "DO channel 2 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00043)."
    },
    {
      "address": 43,
      "count": 1,
      "name": "DO channel 3 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00044)."
    },
    {
      "address": 44,
      "count": 1,
      "name": "DO channel 4 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00045)."
    },
    {
      "address": 45,
      "count": 1,
      "name": "DO channel 5 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00046)."
    },
    {
      "address": 46,
      "count": 1,
      "name": "DO channel 6 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00047)."
    },
    {
      "address": 47,
      "count": 1,
      "name": "DO channel 7 pulse safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00048)."
    },
    {
      "address": 48,
      "count": 1,
      "name": "DI channel 0 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00049)."
    },
    {
      "address": 49,
      "count": 1,
      "name": "DI channel 1 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00050)."
    },
    {
      "address": 50,
      "count": 1,
      "name": "DI channel 2 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00051)."
    },
    {
      "address": 51,
      "count": 1,
      "name": "DI channel 3 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00052)."
    },
    {
      "address": 52,
      "count": 1,
      "name": "DI channel 4 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00053)."
    },
    {
      "address": 53,
      "count": 1,
      "name": "DI channel 5 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00054)."
    },
    {
      "address": 54,
      "count": 1,
      "name": "DI channel 6 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00055)."
    },
    {
      "address": 55,
      "count": 1,
      "name": "DI channel 7 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00056)."
    },
    {
      "address": 56,
      "count": 1,
      "name": "DI channel 8 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00057)."
    },
    {
      "address": 57,
      "count": 1,
      "name": "DI channel 9 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00058)."
    },
    {
      "address": 58,
      "count": 1,
      "name": "DI channel 10 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00059)."
    },
    {
      "address": 59,
      "count": 1,
      "name": "DI channel 11 counter status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = stop, 1 = start (coil reference 00060)."
    },
    {
      "address": 60,
      "count": 1,
      "name": "DI channel 0 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00061)."
    },
    {
      "address": 61,
      "count": 1,
      "name": "DI channel 1 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00062)."
    },
    {
      "address": 62,
      "count": 1,
      "name": "DI channel 2 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00063)."
    },
    {
      "address": 63,
      "count": 1,
      "name": "DI channel 3 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00064)."
    },
    {
      "address": 64,
      "count": 1,
      "name": "DI channel 4 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00065)."
    },
    {
      "address": 65,
      "count": 1,
      "name": "DI channel 5 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00066)."
    },
    {
      "address": 66,
      "count": 1,
      "name": "DI channel 6 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00067)."
    },
    {
      "address": 67,
      "count": 1,
      "name": "DI channel 7 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00068)."
    },
    {
      "address": 68,
      "count": 1,
      "name": "DI channel 8 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00069)."
    },
    {
      "address": 69,
      "count": 1,
      "name": "DI channel 9 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00070)."
    },
    {
      "address": 70,
      "count": 1,
      "name": "DI channel 10 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00071)."
    },
    {
      "address": 71,
      "count": 1,
      "name": "DI channel 11 clear counter value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: always 0. Write 1 to clear the counter; writing 0 returns an illegal data value (coil reference 00072)."
    },
    {
      "address": 72,
      "count": 1,
      "name": "DI channel 0 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00073)."
    },
    {
      "address": 73,
      "count": 1,
      "name": "DI channel 1 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00074)."
    },
    {
      "address": 74,
      "count": 1,
      "name": "DI channel 2 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00075)."
    },
    {
      "address": 75,
      "count": 1,
      "name": "DI channel 3 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00076)."
    },
    {
      "address": 76,
      "count": 1,
      "name": "DI channel 4 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00077)."
    },
    {
      "address": 77,
      "count": 1,
      "name": "DI channel 5 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00078)."
    },
    {
      "address": 78,
      "count": 1,
      "name": "DI channel 6 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00079)."
    },
    {
      "address": 79,
      "count": 1,
      "name": "DI channel 7 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00080)."
    },
    {
      "address": 80,
      "count": 1,
      "name": "DI channel 8 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00081)."
    },
    {
      "address": 81,
      "count": 1,
      "name": "DI channel 9 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00082)."
    },
    {
      "address": 82,
      "count": 1,
      "name": "DI channel 10 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00083)."
    },
    {
      "address": 83,
      "count": 1,
      "name": "DI channel 11 overflow status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = overflow. Write 0 to clear the overflow status (coil reference 00084)."
    },
    {
      "address": 84,
      "count": 1,
      "name": "DI channel 0 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00085)."
    },
    {
      "address": 85,
      "count": 1,
      "name": "DI channel 1 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00086)."
    },
    {
      "address": 86,
      "count": 1,
      "name": "DI channel 2 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00087)."
    },
    {
      "address": 87,
      "count": 1,
      "name": "DI channel 3 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00088)."
    },
    {
      "address": 88,
      "count": 1,
      "name": "DI channel 4 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00089)."
    },
    {
      "address": 89,
      "count": 1,
      "name": "DI channel 5 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00090)."
    },
    {
      "address": 90,
      "count": 1,
      "name": "DI channel 6 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00091)."
    },
    {
      "address": 91,
      "count": 1,
      "name": "DI channel 7 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00092)."
    },
    {
      "address": 92,
      "count": 1,
      "name": "DI channel 8 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00093)."
    },
    {
      "address": 93,
      "count": 1,
      "name": "DI channel 9 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00094)."
    },
    {
      "address": 94,
      "count": 1,
      "name": "DI channel 10 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00095)."
    },
    {
      "address": 95,
      "count": 1,
      "name": "DI channel 11 trigger status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = normal, 1 = trigger. Write 0 to clear the trigger status (coil reference 00096)."
    },
    {
      "address": 96,
      "count": 1,
      "name": "DI channel 0 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00097)."
    },
    {
      "address": 97,
      "count": 1,
      "name": "DI channel 1 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00098)."
    },
    {
      "address": 98,
      "count": 1,
      "name": "DI channel 2 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00099)."
    },
    {
      "address": 99,
      "count": 1,
      "name": "DI channel 3 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00100)."
    },
    {
      "address": 100,
      "count": 1,
      "name": "DI channel 4 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00101)."
    },
    {
      "address": 101,
      "count": 1,
      "name": "DI channel 5 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00102)."
    },
    {
      "address": 102,
      "count": 1,
      "name": "DI channel 6 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00103)."
    },
    {
      "address": 103,
      "count": 1,
      "name": "DI channel 7 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00104)."
    },
    {
      "address": 104,
      "count": 1,
      "name": "DI channel 8 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00105)."
    },
    {
      "address": 105,
      "count": 1,
      "name": "DI channel 9 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00106)."
    },
    {
      "address": 106,
      "count": 1,
      "name": "DI channel 10 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00107)."
    },
    {
      "address": 107,
      "count": 1,
      "name": "DI channel 11 counter power-on status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (coil reference 00108)."
    },
    {
      "address": 108,
      "count": 1,
      "name": "DI channel 0 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00109)."
    },
    {
      "address": 109,
      "count": 1,
      "name": "DI channel 1 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00110)."
    },
    {
      "address": 110,
      "count": 1,
      "name": "DI channel 2 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00111)."
    },
    {
      "address": 111,
      "count": 1,
      "name": "DI channel 3 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00112)."
    },
    {
      "address": 112,
      "count": 1,
      "name": "DI channel 4 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00113)."
    },
    {
      "address": 113,
      "count": 1,
      "name": "DI channel 5 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00114)."
    },
    {
      "address": 114,
      "count": 1,
      "name": "DI channel 6 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00115)."
    },
    {
      "address": 115,
      "count": 1,
      "name": "DI channel 7 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00116)."
    },
    {
      "address": 116,
      "count": 1,
      "name": "DI channel 8 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00117)."
    },
    {
      "address": 117,
      "count": 1,
      "name": "DI channel 9 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00118)."
    },
    {
      "address": 118,
      "count": 1,
      "name": "DI channel 10 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00119)."
    },
    {
      "address": 119,
      "count": 1,
      "name": "DI channel 11 counter safe-mode status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Read: 0 = stop, 1 = start. Write: 0 = stop, 1 = start (coil reference 00120)."
    }
  ],
  "discrete_inputs": [
    {
      "address": 0,
      "count": 1,
      "name": "DI channel 0 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10001; bit 0 = off, 1 = on."
    },
    {
      "address": 1,
      "count": 1,
      "name": "DI channel 1 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10002; bit 0 = off, 1 = on."
    },
    {
      "address": 2,
      "count": 1,
      "name": "DI channel 2 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10003; bit 0 = off, 1 = on."
    },
    {
      "address": 3,
      "count": 1,
      "name": "DI channel 3 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10004; bit 0 = off, 1 = on."
    },
    {
      "address": 4,
      "count": 1,
      "name": "DI channel 4 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10005; bit 0 = off, 1 = on."
    },
    {
      "address": 5,
      "count": 1,
      "name": "DI channel 5 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10006; bit 0 = off, 1 = on."
    },
    {
      "address": 6,
      "count": 1,
      "name": "DI channel 6 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10007; bit 0 = off, 1 = on."
    },
    {
      "address": 7,
      "count": 1,
      "name": "DI channel 7 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10008; bit 0 = off, 1 = on."
    },
    {
      "address": 8,
      "count": 1,
      "name": "DI channel 8 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10009; bit 0 = off, 1 = on."
    },
    {
      "address": 9,
      "count": 1,
      "name": "DI channel 9 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10010; bit 0 = off, 1 = on."
    },
    {
      "address": 10,
      "count": 1,
      "name": "DI channel 10 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10011; bit 0 = off, 1 = on."
    },
    {
      "address": 11,
      "count": 1,
      "name": "DI channel 11 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input reference 10012; bit 0 = off, 1 = on."
    }
  ],
  "input_registers": [
    {
      "address": 0,
      "count": 2,
      "name": "DI channel 0 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30001 holds the high word and 30002 the low word."
    },
    {
      "address": 2,
      "count": 2,
      "name": "DI channel 1 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30003 holds the high word and 30004 the low word."
    },
    {
      "address": 4,
      "count": 2,
      "name": "DI channel 2 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30005 holds the high word and 30006 the low word."
    },
    {
      "address": 6,
      "count": 2,
      "name": "DI channel 3 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30007 holds the high word and 30008 the low word."
    },
    {
      "address": 8,
      "count": 2,
      "name": "DI channel 4 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30009 holds the high word and 30010 the low word."
    },
    {
      "address": 10,
      "count": 2,
      "name": "DI channel 5 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30011 holds the high word and 30012 the low word."
    },
    {
      "address": 12,
      "count": 2,
      "name": "DI channel 6 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30013 holds the high word and 30014 the low word."
    },
    {
      "address": 14,
      "count": 2,
      "name": "DI channel 7 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30015 holds the high word and 30016 the low word."
    },
    {
      "address": 16,
      "count": 2,
      "name": "DI channel 8 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30017 holds the high word and 30018 the low word."
    },
    {
      "address": 18,
      "count": 2,
      "name": "DI channel 9 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30019 holds the high word and 30020 the low word."
    },
    {
      "address": 20,
      "count": 2,
      "name": "DI channel 10 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30021 holds the high word and 30022 the low word."
    },
    {
      "address": 22,
      "count": 2,
      "name": "DI channel 11 count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word first: register 30023 holds the high word and 30024 the low word."
    },
    {
      "address": 12288,
      "count": 1,
      "name": "DI channel 0 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312289, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 1."
    },
    {
      "address": 12289,
      "count": 1,
      "name": "DI channel 1 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312290, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 2."
    },
    {
      "address": 12290,
      "count": 1,
      "name": "DI channel 2 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312291, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 3."
    },
    {
      "address": 12291,
      "count": 1,
      "name": "DI channel 3 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312292, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 4."
    },
    {
      "address": 12292,
      "count": 1,
      "name": "DI channel 4 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312293, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 5."
    },
    {
      "address": 12293,
      "count": 1,
      "name": "DI channel 5 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312294, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 6."
    },
    {
      "address": 12294,
      "count": 1,
      "name": "DI channel 6 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312295, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 7."
    },
    {
      "address": 12295,
      "count": 1,
      "name": "DI channel 7 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312296, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 8."
    },
    {
      "address": 12296,
      "count": 1,
      "name": "DI channel 8 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312297, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 9."
    },
    {
      "address": 12297,
      "count": 1,
      "name": "DI channel 9 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312298, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 10."
    },
    {
      "address": 12298,
      "count": 1,
      "name": "DI channel 10 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312299, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 11."
    },
    {
      "address": 12299,
      "count": 1,
      "name": "DI channel 11 value (word form)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 312300, the word form the manual provides for Citect SCADA compatibility; it mirrors discrete input 12."
    }
  ],
  "holding_registers": [
    {
      "address": 0,
      "count": 2,
      "name": "DO channel 0 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40001, low word at 40002; the table gives no range for the count."
    },
    {
      "address": 2,
      "count": 2,
      "name": "DO channel 1 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40003, low word at 40004; the table gives no range for the count."
    },
    {
      "address": 4,
      "count": 2,
      "name": "DO channel 2 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40005, low word at 40006; the table gives no range for the count."
    },
    {
      "address": 6,
      "count": 2,
      "name": "DO channel 3 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40007, low word at 40008; the table gives no range for the count."
    },
    {
      "address": 8,
      "count": 2,
      "name": "DO channel 4 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40009, low word at 40010; the table gives no range for the count."
    },
    {
      "address": 10,
      "count": 2,
      "name": "DO channel 5 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40011, low word at 40012; the table gives no range for the count."
    },
    {
      "address": 12,
      "count": 2,
      "name": "DO channel 6 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40013, low word at 40014; the table gives no range for the count."
    },
    {
      "address": 14,
      "count": 2,
      "name": "DO channel 7 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "High word at 40015, low word at 40016; the table gives no range for the count."
    },
    {
      "address": 16,
      "count": 1,
      "name": "DO channel 0 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40017. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 17,
      "count": 1,
      "name": "DO channel 1 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40018. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 18,
      "count": 1,
      "name": "DO channel 2 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40019. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 19,
      "count": 1,
      "name": "DO channel 3 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40020. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 20,
      "count": 1,
      "name": "DO channel 4 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40021. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 21,
      "count": 1,
      "name": "DO channel 5 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40022. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 22,
      "count": 1,
      "name": "DO channel 6 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40023. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 23,
      "count": 1,
      "name": "DO channel 7 pulse low signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40024. One 16-bit word, unlike the ioLogik E2262; the table states no unit or range."
    },
    {
      "address": 24,
      "count": 1,
      "name": "DO channel 0 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40025. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 25,
      "count": 1,
      "name": "DO channel 1 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40026. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 26,
      "count": 1,
      "name": "DO channel 2 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40027. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 27,
      "count": 1,
      "name": "DO channel 3 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40028. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 28,
      "count": 1,
      "name": "DO channel 4 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40029. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 29,
      "count": 1,
      "name": "DO channel 5 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40030. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 30,
      "count": 1,
      "name": "DO channel 6 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40031. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 31,
      "count": 1,
      "name": "DO channel 7 pulse high signal width",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40032. One 16-bit word; the table states no unit or range."
    },
    {
      "address": 32,
      "count": 1,
      "name": "DO channel 0 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40033: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 33,
      "count": 1,
      "name": "DO channel 1 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40034: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 34,
      "count": 1,
      "name": "DO channel 2 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40035: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 35,
      "count": 1,
      "name": "DO channel 3 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40036: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 36,
      "count": 1,
      "name": "DO channel 4 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40037: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 37,
      "count": 1,
      "name": "DO channel 5 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40038: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 38,
      "count": 1,
      "name": "DO channel 6 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40039: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 39,
      "count": 1,
      "name": "DO channel 7 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40040: 0 = DO mode, 1 = pulse."
    },
    {
      "address": 40,
      "count": 1,
      "name": "DI channel 0 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40041."
    },
    {
      "address": 41,
      "count": 1,
      "name": "DI channel 1 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40042."
    },
    {
      "address": 42,
      "count": 1,
      "name": "DI channel 2 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40043."
    },
    {
      "address": 43,
      "count": 1,
      "name": "DI channel 3 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40044."
    },
    {
      "address": 44,
      "count": 1,
      "name": "DI channel 4 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40045."
    },
    {
      "address": 45,
      "count": 1,
      "name": "DI channel 5 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40046."
    },
    {
      "address": 46,
      "count": 1,
      "name": "DI channel 6 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40047."
    },
    {
      "address": 47,
      "count": 1,
      "name": "DI channel 7 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40048."
    },
    {
      "address": 48,
      "count": 1,
      "name": "DI channel 8 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40049."
    },
    {
      "address": 49,
      "count": 1,
      "name": "DI channel 9 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40050."
    },
    {
      "address": 50,
      "count": 1,
      "name": "DI channel 10 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40051."
    },
    {
      "address": 51,
      "count": 1,
      "name": "DI channel 11 count filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40052."
    },
    {
      "address": 52,
      "count": 1,
      "name": "DI channel 0 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40053: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 53,
      "count": 1,
      "name": "DI channel 1 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40054: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 54,
      "count": 1,
      "name": "DI channel 2 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40055: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 55,
      "count": 1,
      "name": "DI channel 3 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40056: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 56,
      "count": 1,
      "name": "DI channel 4 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40057: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 57,
      "count": 1,
      "name": "DI channel 5 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40058: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 58,
      "count": 1,
      "name": "DI channel 6 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40059: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 59,
      "count": 1,
      "name": "DI channel 7 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40060: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 60,
      "count": 1,
      "name": "DI channel 8 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40061: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 61,
      "count": 1,
      "name": "DI channel 9 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40062: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 62,
      "count": 1,
      "name": "DI channel 10 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40063: 0 = DI, 1 = counter; other values return an illegal data value."
    },
    {
      "address": 63,
      "count": 1,
      "name": "DI channel 11 mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Register 40064: 0 = DI, 1 = counter; other values return an illegal data value."
    }
  ],
  "combined_registers": [],
  "notes": "Ethernet remote I/O with a built-in Modbus/TCP server, so no gateway is needed. Source: Moxa \"ioLogik E2200 Series User Manual\" v7.2, section \"ioLogik E2210 Modbus Mapping\" (manual pages 166-174): 0xxxx read/write coils, 1xxxx read-only contacts (function 02), 3xxxx read-only registers (function 04) and 4xxxx read/write registers (function 03/06/16). The mapping table prints the reference number and the hexadecimal address side by side; this seed stores the hex address with zero-based addressing. The module has 12 digital inputs and 8 relay outputs; the DI count value block (30001-30024) is printed as separate high-word and low-word rows, so each counter is one two-register row here, high word first. The manual also mirrors the DO values and the DI states for Citect SCADA compatibility: the 3xxxx word forms of the DI states (312289-312300) are listed, while the 4xxxx word mirrors (40257-40376) are left out because each of them repeats a coil or a 3xxxx register bit for bit. The 24 internal registers (40377-40400 initial values, 42921-42944 working values) are Click&Go logic scratch registers rather than I/O and are left out. The pulse-count value is 32-bit here (two registers, high word first) as on the ioLogik E2262, while each pulse-width register is a single 16-bit word, unlike the E2262's two-register widths; the table states no unit for the pulse widths and no range for the counts. The mapping chapter documents no Modbus/TCP unit identifier, so unit_id 1 is a placeholder: set it to the ID configured in the ioLogik web console."
}
