{
  "spec_version": 1,
  "slug": "moxa-iologik-e2262",
  "manufacturer": "Moxa",
  "model": "ioLogik E2262 (8 thermocouple inputs + 4 digital outputs)",
  "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-e2262",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [
    {
      "address": 32,
      "count": 1,
      "name": "TC enable channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00033)."
    },
    {
      "address": 33,
      "count": 1,
      "name": "TC enable channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00034)."
    },
    {
      "address": 34,
      "count": 1,
      "name": "TC enable channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00035)."
    },
    {
      "address": 35,
      "count": 1,
      "name": "TC enable channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00036)."
    },
    {
      "address": 36,
      "count": 1,
      "name": "TC enable channel 4",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00037)."
    },
    {
      "address": 37,
      "count": 1,
      "name": "TC enable channel 5",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00038)."
    },
    {
      "address": 38,
      "count": 1,
      "name": "TC enable channel 6",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00039)."
    },
    {
      "address": 39,
      "count": 1,
      "name": "TC enable channel 7",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Disable, 1 = Enable (coil reference 00040)."
    },
    {
      "address": 40,
      "count": 1,
      "name": "DO status channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00041)."
    },
    {
      "address": 41,
      "count": 1,
      "name": "DO status channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00042)."
    },
    {
      "address": 42,
      "count": 1,
      "name": "DO status channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00043)."
    },
    {
      "address": 43,
      "count": 1,
      "name": "DO status channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00044)."
    },
    {
      "address": 44,
      "count": 1,
      "name": "DO power-on status channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00045)."
    },
    {
      "address": 45,
      "count": 1,
      "name": "DO power-on status channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00046)."
    },
    {
      "address": 46,
      "count": 1,
      "name": "DO power-on status channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00047)."
    },
    {
      "address": 47,
      "count": 1,
      "name": "DO power-on status channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00048)."
    },
    {
      "address": 48,
      "count": 1,
      "name": "DO safe status channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00049)."
    },
    {
      "address": 49,
      "count": 1,
      "name": "DO safe status channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00050)."
    },
    {
      "address": 50,
      "count": 1,
      "name": "DO safe status channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00051)."
    },
    {
      "address": 51,
      "count": 1,
      "name": "DO safe status channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = OFF, 1 = ON (coil reference 00052)."
    },
    {
      "address": 52,
      "count": 1,
      "name": "DO pulse output status channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00053)."
    },
    {
      "address": 53,
      "count": 1,
      "name": "DO pulse output status channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00054)."
    },
    {
      "address": 54,
      "count": 1,
      "name": "DO pulse output status channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00055)."
    },
    {
      "address": 55,
      "count": 1,
      "name": "DO pulse output status channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00056)."
    },
    {
      "address": 56,
      "count": 1,
      "name": "DO power-on pulse output status channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00057)."
    },
    {
      "address": 57,
      "count": 1,
      "name": "DO power-on pulse output status channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00058)."
    },
    {
      "address": 58,
      "count": 1,
      "name": "DO power-on pulse output status channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00059)."
    },
    {
      "address": 59,
      "count": 1,
      "name": "DO power-on pulse output status channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00060)."
    },
    {
      "address": 60,
      "count": 1,
      "name": "DO safe-mode pulse output status channel 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00061)."
    },
    {
      "address": 61,
      "count": 1,
      "name": "DO safe-mode pulse output status channel 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00062)."
    },
    {
      "address": 62,
      "count": 1,
      "name": "DO safe-mode pulse output status channel 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00063)."
    },
    {
      "address": 63,
      "count": 1,
      "name": "DO safe-mode pulse output status channel 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "<RW> 0 = Stop, 1 = Start (coil reference 00064)."
    }
  ],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 0,
      "count": 2,
      "name": "TC channel 0 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30001, low word at 30002. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 2,
      "count": 2,
      "name": "TC channel 1 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30003, low word at 30004. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 4,
      "count": 2,
      "name": "TC channel 2 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30005, low word at 30006. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 6,
      "count": 2,
      "name": "TC channel 3 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30007, low word at 30008. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 8,
      "count": 2,
      "name": "TC channel 4 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30009, low word at 30010. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 10,
      "count": 2,
      "name": "TC channel 5 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30011, low word at 30012. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 12,
      "count": 2,
      "name": "TC channel 6 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30013, low word at 30014. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 14,
      "count": 2,
      "name": "TC channel 7 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30015, low word at 30016. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 16,
      "count": 2,
      "name": "Virtual channel 8 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30017, low word at 30018. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 18,
      "count": 2,
      "name": "Virtual channel 9 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30019, low word at 30020. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 20,
      "count": 2,
      "name": "Virtual channel 10 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30021, low word at 30022. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 22,
      "count": 2,
      "name": "Virtual channel 11 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30023, low word at 30024. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 24,
      "count": 2,
      "name": "Virtual channel 12 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30025, low word at 30026. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 26,
      "count": 2,
      "name": "Virtual channel 13 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30027, low word at 30028. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 28,
      "count": 2,
      "name": "Virtual channel 14 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30029, low word at 30030. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 30,
      "count": 2,
      "name": "Virtual channel 15 value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "High word at 30031, low word at 30032. The table gives the range 0~4294967295 with the unit \"0.1 (Celsius, Fahrenheit)\" or \"0.0001 (mV)\"; the unit follows the channel's engineering unit register (40029 + channel), which this seed lists."
    },
    {
      "address": 32,
      "count": 2,
      "name": "TC channel 0 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00001, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 34,
      "count": 2,
      "name": "TC channel 1 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00002, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 36,
      "count": 2,
      "name": "TC channel 2 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00003, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 38,
      "count": 2,
      "name": "TC channel 3 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00004, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 40,
      "count": 2,
      "name": "TC channel 4 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00005, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 42,
      "count": 2,
      "name": "TC channel 5 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00006, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 44,
      "count": 2,
      "name": "TC channel 6 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00007, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 46,
      "count": 2,
      "name": "TC channel 7 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00008, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 48,
      "count": 2,
      "name": "Virtual channel 8 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00009, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 50,
      "count": 2,
      "name": "Virtual channel 9 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00010, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 52,
      "count": 2,
      "name": "Virtual channel 10 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00011, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 54,
      "count": 2,
      "name": "Virtual channel 11 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00012, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 56,
      "count": 2,
      "name": "Virtual channel 12 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00013, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 58,
      "count": 2,
      "name": "Virtual channel 13 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00014, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 60,
      "count": 2,
      "name": "Virtual channel 14 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00015, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 62,
      "count": 2,
      "name": "Virtual channel 15 minimum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum since the last reset, high word first. The reset coil is 00016, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 64,
      "count": 2,
      "name": "TC channel 0 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00017, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 66,
      "count": 2,
      "name": "TC channel 1 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00018, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 68,
      "count": 2,
      "name": "TC channel 2 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00019, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 70,
      "count": 2,
      "name": "TC channel 3 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00020, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 72,
      "count": 2,
      "name": "TC channel 4 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00021, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 74,
      "count": 2,
      "name": "TC channel 5 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00022, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 76,
      "count": 2,
      "name": "TC channel 6 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00023, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 78,
      "count": 2,
      "name": "TC channel 7 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00024, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 80,
      "count": 2,
      "name": "Virtual channel 8 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00025, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 82,
      "count": 2,
      "name": "Virtual channel 9 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00026, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 84,
      "count": 2,
      "name": "Virtual channel 10 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00027, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 86,
      "count": 2,
      "name": "Virtual channel 11 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00028, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 88,
      "count": 2,
      "name": "Virtual channel 12 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00029, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 90,
      "count": 2,
      "name": "Virtual channel 13 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00030, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 92,
      "count": 2,
      "name": "Virtual channel 14 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00031, which is write-only and therefore not part of this seed's coil area."
    },
    {
      "address": 94,
      "count": 2,
      "name": "Virtual channel 15 maximum value",
      "data_type": "Int32",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum since the last reset, high word first. The reset coil is 00032, which is write-only and therefore not part of this seed's coil area."
    }
  ],
  "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": "Range 0~4294967295; high word first (40001/40002)."
    },
    {
      "address": 2,
      "count": 2,
      "name": "DO channel 1 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first (40003/40004)."
    },
    {
      "address": 4,
      "count": 2,
      "name": "DO channel 2 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first (40005/40006)."
    },
    {
      "address": 6,
      "count": 2,
      "name": "DO channel 3 pulse output count value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first (40007/40008)."
    },
    {
      "address": 8,
      "count": 2,
      "name": "DO channel 0 pulse output low signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The register table states no unit for this width."
    },
    {
      "address": 10,
      "count": 2,
      "name": "DO channel 1 pulse output low signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The register table states no unit for this width."
    },
    {
      "address": 12,
      "count": 2,
      "name": "DO channel 2 pulse output low signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The register table states no unit for this width."
    },
    {
      "address": 14,
      "count": 2,
      "name": "DO channel 3 pulse output low signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The register table states no unit for this width."
    },
    {
      "address": 16,
      "count": 2,
      "name": "DO channel 0 pulse output high signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The table states no unit for this width."
    },
    {
      "address": 18,
      "count": 2,
      "name": "DO channel 1 pulse output high signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The table states no unit for this width."
    },
    {
      "address": 20,
      "count": 2,
      "name": "DO channel 2 pulse output high signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The table states no unit for this width."
    },
    {
      "address": 22,
      "count": 2,
      "name": "DO channel 3 pulse output high signal width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0~4294967295; high word first. The table states no unit for this width."
    },
    {
      "address": 24,
      "count": 1,
      "name": "DO channel 0 operation mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = DO mode, 1 = pulse output mode (40025)."
    },
    {
      "address": 25,
      "count": 1,
      "name": "DO channel 1 operation mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = DO mode, 1 = pulse output mode (40026)."
    },
    {
      "address": 26,
      "count": 1,
      "name": "DO channel 2 operation mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = DO mode, 1 = pulse output mode (40027)."
    },
    {
      "address": 27,
      "count": 1,
      "name": "DO channel 3 operation mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = DO mode, 1 = pulse output mode (40028)."
    },
    {
      "address": 28,
      "count": 1,
      "name": "TC channel 0 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40029). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 29,
      "count": 1,
      "name": "TC channel 1 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40030). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 30,
      "count": 1,
      "name": "TC channel 2 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40031). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 31,
      "count": 1,
      "name": "TC channel 3 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40032). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 32,
      "count": 1,
      "name": "TC channel 4 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40033). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 33,
      "count": 1,
      "name": "TC channel 5 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40034). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 34,
      "count": 1,
      "name": "TC channel 6 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40035). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 35,
      "count": 1,
      "name": "TC channel 7 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40036). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Virtual channel 8 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40037). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Virtual channel 9 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40038). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Virtual channel 10 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40039). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Virtual channel 11 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40040). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 40,
      "count": 1,
      "name": "Virtual channel 12 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40041). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 41,
      "count": 1,
      "name": "Virtual channel 13 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40042). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 42,
      "count": 1,
      "name": "Virtual channel 14 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40043). It selects the unit of the channel's value, minimum and maximum registers."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Virtual channel 15 engineering unit",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Celsius, 1 = Fahrenheit, 2 = millivolt (40044). It selects the unit of the channel's value, minimum and maximum registers."
    }
  ],
  "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 E2262 Modbus Mapping\" (manual pages 235-239): 0xxxx read/write coils, 3xxxx read-only registers (function 04) and 4xxxx read/write registers (functions 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. Every 32-bit value in the 3xxxx block is printed as separate high-word and low-word rows, so each value is one two-register row here, high word first. The table gives the unit of the TC values as \"0.1 (Celsius, Fahrenheit) or 0.0001 (mV)\": it follows the channel's engineering unit register (40029-40044), which this seed lists, and the value rows are scaled 0.1 with degC as the default unit. The write-only per-channel reset coils (00001-00032, marked <W>) are left out because the coil area of this format carries read or read/write entries only. Unit identifier 1: it is the ioLogik's default Modbus/TCP ID in the shipped configuration and is set in the web console if a site uses another value. Left out of the 4xxxx block, because the manual's own chapter stops at the engineering-unit registers here: the TC sensor-type registers (40045-40060), the reset minimum/maximum registers (40061-40092), the word mirrors of the DO status and TC enable bits (40093-40124) and the internal Click&Go registers (40313-40360); the sensor-type enumeration (0 = J, 1 = K ... 20 = AVG, 21 = DIF) is the one setting a site normally needs to change, so confirm it in the ioLogik web console."
}
