{
  "spec_version": 1,
  "slug": "omron-e5cc",
  "manufacturer": "Omron",
  "model": "E5CC / E5EC / E5AC digital temperature controllers (E5@C)",
  "category": "Temperature controller",
  "supplier_url": "https://files.omron.eu/downloads/latest/manual/en/h175_e5_c_communications_manual_en.pdf?v=1",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "Even",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 8192,
      "count": 1,
      "name": "Process value (PV)",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Two-byte-mode address 0x2000. Temperature with the decimal point implied by the Decimal Point Monitor (0x2410); analog input uses the scaling limits. The document warns that the PV at 0x2402 is a second copy in the other address block."
    },
    {
      "address": 8193,
      "count": 1,
      "name": "Status",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Two-byte-mode address 0x2001. Status bitmap, see section 5-2 of the communications manual (RUN, alarm outputs, input errors, etc.)."
    },
    {
      "address": 8194,
      "count": 1,
      "name": "Internal set point",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2002. Internal set point, between the SP lower and upper limits; not shown on the controller display."
    },
    {
      "address": 8195,
      "count": 1,
      "name": "Heater current 1 value monitor",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Two-byte-mode address 0x2003. 0-550 = 0.0-55.0 A."
    },
    {
      "address": 8196,
      "count": 1,
      "name": "MV monitor (heating)",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Two-byte-mode address 0x2004. Heating control output: -50 to 1050 = -5.0 to 105.0 % for standard control, 0 to 1050 = 0.0 to 105.0 % for heating-and-cooling control."
    },
    {
      "address": 8197,
      "count": 1,
      "name": "MV monitor (cooling)",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Two-byte-mode address 0x2005. Cooling control output, 0 to 1050 = 0.0 to 105.0 %."
    },
    {
      "address": 8451,
      "count": 1,
      "name": "Set point",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2103. Set point between the SP lower and upper limits."
    },
    {
      "address": 8452,
      "count": 1,
      "name": "Alarm value 1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2104. Alarm 1 value, range -1999 to 9999 (H'FFFFF831 to H'0000270F)."
    },
    {
      "address": 8453,
      "count": 1,
      "name": "Alarm value upper limit 1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2105. Alarm 1 upper limit, -1999 to 9999."
    },
    {
      "address": 8454,
      "count": 1,
      "name": "Alarm value lower limit 1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2106. Alarm 1 lower limit, -1999 to 9999."
    },
    {
      "address": 8455,
      "count": 1,
      "name": "Alarm value 2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2107. Alarm 2 value, -1999 to 9999."
    },
    {
      "address": 8456,
      "count": 1,
      "name": "Alarm value upper limit 2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2108. Alarm 2 upper limit, -1999 to 9999."
    },
    {
      "address": 8457,
      "count": 1,
      "name": "Alarm value lower limit 2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Two-byte-mode address 0x2109. Alarm 2 lower limit, -1999 to 9999."
    },
    {
      "address": 9232,
      "count": 1,
      "name": "Decimal point monitor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Two-byte-mode address 0x2410. 0-3 = number of decimal places applied to PV and set-point values."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Omron \"E5@C Digital Temperature Controllers - Communications Manual\", H175 (the vendor's own manual, section 1-1-6/1-1-8 for communications parameters and section 5-1 \"Variable Area (Setting Range) List\"), https://files.omron.eu/downloads/latest/manual/en/h175_e5_c_communications_manual_en.pdf?v=1 (SHA-256 adf4306875660738191dfac3003274107b30256f6edc5d01f3e81c456ff1f1b0). Factory defaults: unit number 1, 9600 bps, even parity; for Modbus the document fixes the data length to 8 bits and one stop bit when the parity is even or odd (two stop bits only with no parity). The seed uses the two-byte-mode address column: the document prints those addresses in hexadecimal (0x2000 PV, 0x2001 Status, 0x2103 Set Point, ...), so the seed stores their decimal equivalents and declares zero-based. Access: PV, status, heater current and the MV monitors are read-only; set point, internal set point and alarm values are writable. PV, set point and alarm values carry an implied decimal point - the Decimal Point Monitor at 0x2410 gives the number of decimals. Modbus RTU frame: slave address = unit number, function codes 03/04/06/16 (see section 4). Omitted on purpose: the four-byte-mode address column (the app has no 32-bit element mode here), the duplicate PV/status block at 0x2402-0x2409 (the document lists the same parameters under a second address block without explaining the difference), and the remaining setup parameters above 0x2410, whose address and parameter columns are printed as separate stacked streams in the PDF and cannot be paired reliably."
}
