{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "model": "E5CC / E5EC", "models": [ "E5CC", "E5EC" ], "description": "Digital temperature controllers for 48x48 mm and 48x96 mm panels, Modbus RTU, 2-byte mode", "vendor": "Omron", "vendor_website": "www.omron.com", "revision": 1, "revised": "2026-11-10", "source": "Omron, E5@C Digital Temperature Controllers Communications Manual (H175), H175-E1-17", "sources": [ { "title": "E5@C Digital Temperature Controllers Communications Manual (H175)", "version": "H175-E1-17", "url": "https://files.omron.eu/downloads/latest/manual/en/h175_e5_c_communications_manual_en.pdf", "note": "linked in issue #195; sections 4 and 5 (Modbus)" } ], "notes": [ "Uses the manual's 2-byte mode addresses (0x2000 and up), read with function code 03 and written with 06 or 16. The 4-byte mode (addresses from 0x0000, two registers per value) is not mapped; single writes (function 06) work only in 2-byte mode.", "Set the protocol to Modbus in the communications setting level first (psel); the factory setting is CompoWay/F. The manual requires 8 data bits for Modbus, with 1 stop bit when parity is even or odd and 2 stop bits when there is no parity. It does not state the factory baud rate or parity in text that could be read; 9600 and even parity are the assumed defaults. The unit number can be 1 to 99 (default 1); 0 is broadcast.", "All values are integers with the decimal point left out (105.0 is sent as 1050), negative values in two's complement. For temperature inputs with one decimal, process value, set points and alarm values carry that decimal; the number of decimals follows the input type and is read from Decimal point monitor (0x2410). Their scale is left at 1 for that reason: divide by 10^decimals yourself. MV, heater current and proportional band always have one decimal and use scale 0.1.", "Status is a 32-bit word read as two registers: the lower word at 0x2406 (bits 0 to 15) and the upper word at 0x2407 (manual bits 16 to 31, shown here as bit 0 to 15 of that register). Status 2 is at 0x2408 and 0x2409.", "Run/stop, auto/manual, AT, multi-SP selection, software reset and similar are operation commands, not registers: write function 06 with address 0x0000 and data = command code in the high byte and related information in the low byte (for example 0x0100 run, 0x0101 stop). Communications writing must be enabled (command 00) before settings can be written. Not modelled as registers. Run/stop and communications-writing state can be read in the status bits.", "The manual covers the E5@C family (E5CC, E5EC, E5AC and others) and does not name the E5CC-T and E5EC-T, so they are not listed; some registers apply only to certain models (heater current, remote SP, position-proportional). Written from the manufacturer's document; not tested on a device." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "E", "databits": 8, "stopbits": 1, "address_base": 0, "byte_order": "big", "word_order": "big", "x_status": "official", "enums": {"input_type": {"0": "Pt100 -200 to 850 C", "1": "Pt100 -199.9 to 500.0 C", "2": "Pt100 0.0 to 100.0 C", "3": "JPt100 -199.9 to 500.0 C", "4": "JPt100 0.0 to 100.0 C", "5": "K -200 to 1300 C", "6": "K -20.0 to 500.0 C", "7": "J -100 to 850 C", "8": "J -20.0 to 400.0 C", "9": "T -200 to 400 C", "10": "T -199.9 to 400.0 C", "11": "E -200 to 600 C", "12": "L -100 to 850 C", "13": "U -200 to 400 C", "14": "U -199.9 to 400.0 C", "15": "N -200 to 1300 C", "16": "R 0 to 1700 C", "17": "S 0 to 1700 C", "18": "B 100 to 1800 C", "19": "W 0 to 2300 C", "20": "PL II 0 to 1300 C", "21": "Infrared sensor K 60 C", "22": "Infrared sensor K 120 C", "23": "Infrared sensor K 140 C", "24": "Infrared sensor K 220 C", "25": "4 to 20 mA", "26": "0 to 20 mA", "27": "1 to 5 V", "28": "0 to 5 V", "29": "0 to 10 V", "30": "0 to 50 mV"}, "temperature_unit": {"0": "Celsius", "1": "Fahrenheit"}, "control_type": {"0": "Standard", "1": "Heating and cooling"}}, "registers": [ {"name": "Process value", "group": "Measurements", "area": "holding", "address": 8192, "type": "int16", "access": "R", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Internal set point", "group": "Measurements", "area": "holding", "address": 8194, "type": "int16", "access": "R", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; not shown on the controller display"}, {"name": "Heater current 1", "group": "Measurements", "area": "holding", "address": 8195, "type": "uint16", "access": "R", "scale": 0.1, "unit": "A", "description": "Needs a heater current input (CT)"}, {"name": "MV monitor (heating)", "group": "Measurements", "area": "holding", "address": 8196, "type": "int16", "access": "R", "scale": 0.1, "unit": "%"}, {"name": "MV monitor (cooling)", "group": "Measurements", "area": "holding", "address": 8197, "type": "int16", "access": "R", "scale": 0.1, "unit": "%", "description": "Heating and cooling control only"}, {"name": "Remote SP monitor", "group": "Measurements", "area": "holding", "address": 9730, "type": "int16", "access": "R", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; models with a remote set point input"}, {"name": "Valve opening monitor", "group": "Measurements", "area": "holding", "address": 9735, "type": "int16", "access": "R", "scale": 0.1, "unit": "%", "description": "Position-proportional models only"}, {"name": "Multi-SP number monitor", "group": "Measurements", "area": "holding", "address": 9220, "type": "uint16", "access": "R", "description": "Active set point number, 0 to 7"}, {"name": "Decimal point monitor", "group": "Measurements", "area": "holding", "address": 9232, "type": "uint16", "access": "R", "description": "Number of decimals (0 to 3) that the process value, set points and alarm values carry"}, {"name": "Heater overcurrent CT1", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 0}, {"name": "A/D converter error", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 2}, {"name": "HS alarm CT1", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 3}, {"name": "Remote SP input error", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 4}, {"name": "Input error", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 6}, {"name": "Potentiometer input error", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 7}, {"name": "Control output heating or open", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 8}, {"name": "Control output cooling or close", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 9}, {"name": "Heater burnout alarm CT1", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 10}, {"name": "Heater burnout alarm CT2", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 11}, {"name": "Alarm 1", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 12}, {"name": "Alarm 2", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 13}, {"name": "Alarm 3", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 14}, {"name": "Program end output", "group": "Status", "area": "holding", "address": 9222, "type": "bool", "access": "R", "bit": 15}, {"name": "Write mode: RAM write", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 4}, {"name": "RAM differs from non-volatile memory", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 5}, {"name": "Setup area 1 active", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 6}, {"name": "AT in progress", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 7}, {"name": "Stopped", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 8}, {"name": "Communications writing enabled", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 9}, {"name": "Manual mode", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 10}, {"name": "Program started", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 11}, {"name": "Heater overcurrent CT2", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 12}, {"name": "HS alarm CT2", "group": "Status", "area": "holding", "address": 9223, "type": "bool", "access": "R", "bit": 15}, {"name": "Invert direct/reverse operation active", "group": "Status", "area": "holding", "address": 9225, "type": "bool", "access": "R", "bit": 4}, {"name": "SP ramp active", "group": "Status", "area": "holding", "address": 9225, "type": "bool", "access": "R", "bit": 5}, {"name": "Remote SP mode", "group": "Status", "area": "holding", "address": 9225, "type": "bool", "access": "R", "bit": 11}, {"name": "Alarm 4", "group": "Status", "area": "holding", "address": 9225, "type": "bool", "access": "R", "bit": 12}, {"name": "Set point", "group": "Settings", "area": "holding", "address": 9729, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Manual MV", "group": "Settings", "area": "holding", "address": 9728, "type": "int16", "access": "RW", "scale": 0.1, "unit": "%", "description": "Used in manual mode"}, {"name": "Alarm value 1", "group": "Settings", "area": "holding", "address": 10498, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Alarm value 2", "group": "Settings", "area": "holding", "address": 10501, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Alarm value 3", "group": "Settings", "area": "holding", "address": 10504, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Alarm value 4", "group": "Settings", "area": "holding", "address": 10507, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Set point 0 (multi-SP)", "group": "Settings", "area": "holding", "address": 10496, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 1 (multi-SP)", "group": "Settings", "area": "holding", "address": 10510, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 2 (multi-SP)", "group": "Settings", "area": "holding", "address": 10524, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 3 (multi-SP)", "group": "Settings", "area": "holding", "address": 10538, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 4 (multi-SP)", "group": "Settings", "area": "holding", "address": 10552, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 5 (multi-SP)", "group": "Settings", "area": "holding", "address": 10566, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 6 (multi-SP)", "group": "Settings", "area": "holding", "address": 10580, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Set point 7 (multi-SP)", "group": "Settings", "area": "holding", "address": 10594, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor; used when the multi-SP function is on"}, {"name": "Proportional band", "group": "PID", "area": "holding", "address": 10752, "type": "uint16", "access": "RW", "scale": 0.1, "description": "0.1 to 999.9"}, {"name": "Integral time", "group": "PID", "area": "holding", "address": 10753, "type": "uint16", "access": "RW", "description": "Unit is 1 s or 0.1 s depending on the Integral/derivative time unit setting"}, {"name": "Derivative time", "group": "PID", "area": "holding", "address": 10754, "type": "uint16", "access": "RW", "description": "Unit is 1 s or 0.1 s depending on the Integral/derivative time unit setting"}, {"name": "MV upper limit", "group": "PID", "area": "holding", "address": 10757, "type": "int16", "access": "RW", "scale": 0.1, "unit": "%"}, {"name": "MV lower limit", "group": "PID", "area": "holding", "address": 10758, "type": "int16", "access": "RW", "scale": 0.1, "unit": "%"}, {"name": "Proportional band (cooling)", "group": "PID", "area": "holding", "address": 9985, "type": "uint16", "access": "RW", "scale": 0.1}, {"name": "Integral time (cooling)", "group": "PID", "area": "holding", "address": 9986, "type": "uint16", "access": "RW", "description": "Same unit as the heating integral time"}, {"name": "Derivative time (cooling)", "group": "PID", "area": "holding", "address": 9987, "type": "uint16", "access": "RW", "description": "Same unit as the heating derivative time"}, {"name": "Hysteresis (heating)", "group": "PID", "area": "holding", "address": 9990, "type": "uint16", "access": "RW", "scale": 0.1, "description": "Scale 0.1 for temperature input; analog input uses 0.01"}, {"name": "Hysteresis (cooling)", "group": "PID", "area": "holding", "address": 9991, "type": "uint16", "access": "RW", "scale": 0.1, "description": "Scale 0.1 for temperature input; analog input uses 0.01"}, {"name": "Input type", "group": "Configuration", "area": "holding", "address": 11264, "type": "uint16", "access": "RW", "enum": "input_type", "description": "Changed in the initial setting level; the controller may refuse a write while it runs"}, {"name": "Temperature unit", "group": "Configuration", "area": "holding", "address": 11265, "type": "uint16", "access": "RW", "enum": "temperature_unit"}, {"name": "Standard or heating/cooling", "group": "Configuration", "area": "holding", "address": 11537, "type": "uint16", "access": "RW", "enum": "control_type"}, {"name": "SP upper limit", "group": "Configuration", "area": "holding", "address": 11535, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "SP lower limit", "group": "Configuration", "area": "holding", "address": 11536, "type": "int16", "access": "RW", "description": "Integer with the decimal point left out; the number of decimals is given by Decimal point monitor"}, {"name": "Scaling lower limit", "group": "Configuration", "area": "holding", "address": 11273, "type": "int16", "access": "RW", "description": "Analog input only"}, {"name": "Scaling upper limit", "group": "Configuration", "area": "holding", "address": 11275, "type": "int16", "access": "RW", "description": "Analog input only"}, {"name": "Scaling decimal point", "group": "Configuration", "area": "holding", "address": 11276, "type": "uint16", "access": "RW", "description": "Analog input only; 0 to 3"} ] }