{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Contemp",
  "model": "C702",
  "models": ["C702"],
  "vendor_website": "contemp.com.br",
  "description": "Temperature controller: process value, setpoints, control output, alarms, ramp and soak programs, input and communication settings, and option readings",
  "revision": 1,
  "revised": "2026-11-10",
  "firmware": "Manual version 1.07, revision 9",
  "source": "Contemp, Manual de Instruções, Controlador de Temperatura mod. C702, versão 1.07 / revisão 9",
  "sources": [
    {"title": "Manual de Instruções - Controlador de Temperatura C702", "version": "1.07 rev. 9", "note": "chapter 8 register tables and chapter 15 options; attached to issue #125 as c702v1.07rev.09.pdf"}
  ],
  "notes": [
    "Modbus RTU slave on RS-485. Registers are numbered from 1, as in the document. FC03 and FC04 read, FC06 and FC16 write; the on/off parameters can also be read and written as coils (FC01, FC02, FC05, FC15). The registers are mapped as holding registers here.",
    "Baud rate 9600, 19200, 38400 or 57600 bit/s, 8 data bits, 1 or 2 stop bits, parity off, odd or even (register 123). The document gives no factory default for the address, baud rate or parity; 9600 8N1 and address 1 are assumed here.",
    "Values marked u.e. in the document are whole numbers in engineering units, with the decimal places set in register 63 (1234 with one decimal place is 123.4). Values marked x10 are tenths.",
    "The ramp and soak program segments (registers 250 to 1227), the write-only calibration commands (220 to 227, 232 to 237), the output calibration (238 to 243) and the 16-character tag (registers 126 to 141, one character each) are left out. Several registers are only meaningful when the matching option is fitted.",
    "Written from the manual; this map has not been tested on a device."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "N",
  "databits": 8,
  "stopbits": 1,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 1,
  "x_status": "official",
  "enums": {
    "input_type": {"0": "J", "1": "K", "2": "E", "3": "N", "4": "T", "5": "R", "6": "S", "7": "B", "8": "Ni120", "9": "Pt100", "10": "0-20 mA", "11": "4-20 mA", "12": "0-60 mV", "13": "0-5 V", "14": "1-5 V", "15": "0-10 V", "16": "±60 mV", "17": "±5 V", "18": "±10 V"},
    "alarm_function": {"0": "Off", "1": "Input fault", "2": "High", "3": "Low", "4": "Deviation", "5": "High deviation", "6": "Low deviation", "7": "Program"},
    "digital_input_function": {"0": "Off", "1": "Control on/off", "2": "Manual/automatic", "3": "Block alarms", "4": "SP/SP2", "5": "Program commands (pulse)", "6": "Program run", "7": "Program hold"}
  },
  "registers": [
    {"name": "Process value", "group": "Operation", "area": "holding", "address": 1, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint", "group": "Operation", "area": "holding", "address": 2, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Control output", "group": "Operation", "area": "holding", "address": 3, "type": "int16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": -100, "write_max": 100, "description": "Output C1 (0 to 100 %) or C1+C2 (-100 to 100 %); writable in manual mode"},
    {"name": "Auxiliary process value", "group": "Operation", "area": "holding", "address": 4, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; auxiliary input (PV2)"},
    {"name": "Setpoint 2", "group": "Operation", "area": "holding", "address": 5, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "PV or PV2 selection", "group": "Operation", "area": "holding", "address": 6, "type": "uint16", "access": "RW", "enum": {"0": "PV", "1": "PV2"}},
    {"name": "SP or SP2 selection", "group": "Operation", "area": "holding", "address": 7, "type": "uint16", "access": "RW", "enum": {"0": "SP", "1": "SP2"}},
    {"name": "Control mode", "group": "Operation", "area": "holding", "address": 8, "type": "uint16", "access": "RW", "enum": {"0": "Automatic", "1": "Manual"}},
    {"name": "Alarm 1 setpoint", "group": "Operation", "area": "holding", "address": 9, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm"},
    {"name": "Alarm 2 setpoint", "group": "Operation", "area": "holding", "address": 10, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm"},
    {"name": "Alarm 3 setpoint", "group": "Operation", "area": "holding", "address": 11, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm"},
    {"name": "Alarm 4 setpoint", "group": "Operation", "area": "holding", "address": 12, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm"},
    {"name": "Setpoint plus alarm 1 setpoint", "group": "Operation", "area": "holding", "address": 13, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint minus alarm 1 setpoint", "group": "Operation", "area": "holding", "address": 14, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint plus alarm 2 setpoint", "group": "Operation", "area": "holding", "address": 15, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint minus alarm 2 setpoint", "group": "Operation", "area": "holding", "address": 16, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint plus alarm 3 setpoint", "group": "Operation", "area": "holding", "address": 17, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint minus alarm 3 setpoint", "group": "Operation", "area": "holding", "address": 18, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint plus alarm 4 setpoint", "group": "Operation", "area": "holding", "address": 19, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Setpoint minus alarm 4 setpoint", "group": "Operation", "area": "holding", "address": 20, "type": "int16", "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Alarm 1 active", "group": "Status", "area": "holding", "address": 21, "type": "bool", "bit": 0, "enum": {"0": "Off", "1": "On"}},
    {"name": "Alarm 2 active", "group": "Status", "area": "holding", "address": 21, "type": "bool", "bit": 1, "enum": {"0": "Off", "1": "On"}},
    {"name": "Alarm 3 active", "group": "Status", "area": "holding", "address": 21, "type": "bool", "bit": 2, "enum": {"0": "Off", "1": "On"}},
    {"name": "Alarm 4 active", "group": "Status", "area": "holding", "address": 21, "type": "bool", "bit": 3, "enum": {"0": "Off", "1": "On"}},
    {"name": "Digital input D1", "group": "Status", "area": "holding", "address": 22, "type": "uint16", "enum": {"0": "Inactive", "1": "Active"}, "description": "Digital input option"},
    {"name": "Digital input D2", "group": "Status", "area": "holding", "address": 23, "type": "uint16", "enum": {"0": "Inactive", "1": "Active"}, "description": "Digital input option"},
    {"name": "Remote setpoint in use", "group": "Status", "area": "holding", "address": 24, "type": "uint16", "enum": {"0": "Local", "1": "Remote"}, "description": "Remote setpoint option"},
    {"name": "Heater current", "group": "Status", "area": "holding", "address": 25, "type": "uint16", "scale": 0.1, "unit": "A", "description": "Heater break option, 0 to 50.0 A"},
    {"name": "Heater break alarm", "group": "Status", "area": "holding", "address": 26, "type": "uint16", "enum": {"0": "Off", "1": "On"}, "description": "Heater break option"},
    {"name": "Power supply in use", "group": "Status", "area": "holding", "address": 27, "type": "uint16", "enum": {"0": "Main", "1": "Secondary"}},
    {"name": "Input error", "group": "Status", "area": "holding", "address": 28, "type": "uint16", "enum": {"0": "No error", "1": "Over range (uuuu)", "2": "Under range (nnnn)", "3": "Input fault (----)"}, "description": "The document lists 1 as uuuu and 2 as nnnn"},
    {"name": "Option 1", "group": "Status", "area": "holding", "address": 29, "type": "uint16", "description": "Option fitted, as an ASCII code: 0 none, B dual digital input, C auxiliary supply, D auxiliary alarms, E linear output, F remote setpoint, G servo motor control, H auxiliary relay, I auxiliary pulse, J heater break. How 'none' is encoded is not stated"},
    {"name": "Option 2", "group": "Status", "area": "holding", "address": 30, "type": "uint16", "description": "Option fitted, as an ASCII code; same letters as option 1"},
    {"name": "Function key active", "group": "Status", "area": "holding", "address": 31, "type": "uint16", "access": "RW", "enum": {"0": "Inactive", "1": "Active"}},
    {"name": "Program number", "group": "Program", "area": "holding", "address": 40, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 50},
    {"name": "Program repetitions", "group": "Program", "area": "holding", "address": 41, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 101, "description": "101 = continuous"},
    {"name": "Program segment", "group": "Program", "area": "holding", "address": 42, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 81, "description": "Segment running"},
    {"name": "Segment elapsed time", "group": "Program", "area": "holding", "address": 43, "type": "uint16", "access": "RW", "unit": "min", "write_min": 0, "write_max": 5999},
    {"name": "Program state", "group": "Program", "area": "holding", "address": 44, "type": "uint16", "access": "RW", "enum": {"0": "Stop", "1": "Run", "2": "Hold"}},
    {"name": "Program error", "group": "Program", "area": "holding", "address": 45, "type": "uint16", "enum": {"0": "No error", "1": "Program error"}},
    {"name": "Program finished", "group": "Program", "area": "holding", "address": 46, "type": "bool", "bit": 6, "description": "Bit 6: 0 running, 1 finished"},
    {"name": "Tuning type", "group": "Control", "area": "holding", "address": 50, "type": "uint16", "access": "RW", "enum": {"0": "Autotune", "1": "Adaptive"}},
    {"name": "Autotune", "group": "Control", "area": "holding", "address": 51, "type": "uint16", "access": "RW", "enum": {"0": "Off", "1": "On", "2": "On, once at power-up"}, "description": "The document gives 2 as on.L"},
    {"name": "Fuzzy logic", "group": "Control", "area": "holding", "address": 52, "type": "uint16", "access": "RW", "enum": {"0": "Off", "1": "On"}},
    {"name": "Proportional band", "group": "Control", "area": "holding", "address": 53, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 9999, "description": "0 = off. In engineering units, with the decimal places set in register 63"},
    {"name": "Integral time", "group": "Control", "area": "holding", "address": 54, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Derivative time", "group": "Control", "area": "holding", "address": 55, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Anti-reset", "group": "Control", "area": "holding", "address": 56, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": 0, "write_max": 100},
    {"name": "On-off hysteresis", "group": "Control", "area": "holding", "address": 57, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Second control gain", "group": "Control", "area": "holding", "address": 58, "type": "uint16", "access": "RW", "scale": 0.1, "write_min": 0.1, "write_max": 10},
    {"name": "Second control offset", "group": "Control", "area": "holding", "address": 59, "type": "int16", "access": "RW", "write_min": -1000, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Input type", "group": "Input", "area": "holding", "address": 60, "type": "uint16", "access": "RW", "enum": "input_type"},
    {"name": "Temperature unit", "group": "Input", "area": "holding", "address": 61, "type": "uint16", "access": "RW", "enum": {"0": "°C", "1": "°F", "2": "K"}},
    {"name": "Square root of input", "group": "Input", "area": "holding", "address": 62, "type": "uint16", "access": "RW", "enum": {"0": "No", "1": "Yes"}},
    {"name": "Decimal places", "group": "Input", "area": "holding", "address": 63, "type": "uint16", "access": "RW", "enum": {"0": "0", "1": "0.0", "2": "0.00", "3": "0.000"}},
    {"name": "Input range low", "group": "Input", "area": "holding", "address": 64, "type": "int16", "access": "RW"},
    {"name": "Input range high", "group": "Input", "area": "holding", "address": 65, "type": "int16", "access": "RW"},
    {"name": "Input filter", "group": "Input", "area": "holding", "address": 66, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 200, "description": "0 = off"},
    {"name": "Input offset", "group": "Input", "area": "holding", "address": 67, "type": "int16", "access": "RW", "write_min": -1000, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Remote setpoint signal", "group": "Input", "area": "holding", "address": 68, "type": "uint16", "access": "RW", "enum": {"0": "0-20 mA", "1": "4-20 mA"}},
    {"name": "Output 1 function", "group": "Outputs", "area": "holding", "address": 69, "type": "uint16", "access": "RW", "description": "Raw code; the meaning depends on the output type fitted (relay, linear or pulse): 0 off, 1 C1, 2 C2, 3 A1 or PV, 4 A2 or SP. See the document's table"},
    {"name": "Output 1 signal", "group": "Outputs", "area": "holding", "address": 70, "type": "uint16", "access": "RW", "description": "0 = 0-20 mA, 1 = 4-20 mA, 2 = pulse (for the outputs that allow it)"},
    {"name": "Output 2 function", "group": "Outputs", "area": "holding", "address": 71, "type": "uint16", "access": "RW", "description": "Raw code; the meaning depends on the output type fitted (relay, linear or pulse): 0 off, 1 C1, 2 C2, 3 A1 or PV, 4 A2 or SP. See the document's table"},
    {"name": "Output 2 signal", "group": "Outputs", "area": "holding", "address": 72, "type": "uint16", "access": "RW", "description": "0 = 0-20 mA, 1 = 4-20 mA, 2 = pulse (for the outputs that allow it)"},
    {"name": "Output 3 function", "group": "Outputs", "area": "holding", "address": 73, "type": "uint16", "access": "RW", "description": "Depends on the option fitted: modulating control 0 off or 1 on; auxiliary relay or pulse 0 off, 1 C1, 2 C2; auxiliary alarms 0 off, 1 A3/A4; linear 0 off, 1 PV, 2 SP, 3 C1, 4 C2; heater break 0 off, 1 on"},
    {"name": "Output 3 signal", "group": "Outputs", "area": "holding", "address": 74, "type": "uint16", "access": "RW", "description": "0 = 0-20 mA, 1 = 4-20 mA, 2 = pulse (for the outputs that allow it)"},
    {"name": "Control action", "group": "Control", "area": "holding", "address": 75, "type": "uint16", "access": "RW", "enum": {"0": "Reverse", "1": "Direct"}},
    {"name": "Soft start mode", "group": "Control", "area": "holding", "address": 76, "type": "uint16", "access": "RW", "enum": {"0": "Off", "1": "Every start", "2": "Power-up only", "3": "Band"}, "description": "The document names the modes oFF, EvEr, P.uP and bAnd"},
    {"name": "Soft start rate", "group": "Control", "area": "holding", "address": 77, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999, "description": "Seconds per 100 % of output"},
    {"name": "Output 1 cycle time", "group": "Control", "area": "holding", "address": 78, "type": "uint16", "access": "RW", "unit": "s", "write_min": 1, "write_max": 250},
    {"name": "Output 1 low limit", "group": "Control", "area": "holding", "address": 79, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": 0, "write_max": 100},
    {"name": "Output 1 high limit", "group": "Control", "area": "holding", "address": 80, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": 0, "write_max": 100},
    {"name": "Output 2 low limit", "group": "Control", "area": "holding", "address": 82, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": 0, "write_max": 100},
    {"name": "Output 2 high limit", "group": "Control", "area": "holding", "address": 83, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": 0, "write_max": 100},
    {"name": "Output 2 cycle time", "group": "Control", "area": "holding", "address": 81, "type": "uint16", "access": "RW", "unit": "s", "write_min": 1, "write_max": 250},
    {"name": "Alarm 1 function", "group": "Alarms", "area": "holding", "address": 84, "type": "uint16", "access": "RW", "enum": "alarm_function"},
    {"name": "Alarm 1 action", "group": "Alarms", "area": "holding", "address": 85, "type": "uint16", "access": "RW", "enum": {"0": "Normally open", "1": "Normally closed"}},
    {"name": "Alarm 1 setpoint (configuration)", "group": "Alarms", "area": "holding", "address": 86, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block"},
    {"name": "Alarm 1 hysteresis", "group": "Alarms", "area": "holding", "address": 87, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Alarm 1 on delay", "group": "Alarms", "area": "holding", "address": 88, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 1 action time", "group": "Alarms", "area": "holding", "address": 89, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 1 initial block", "group": "Alarms", "area": "holding", "address": 90, "type": "uint16", "access": "RW", "enum": {"0": "No", "1": "Yes"}},
    {"name": "Alarm 2 function", "group": "Alarms", "area": "holding", "address": 91, "type": "uint16", "access": "RW", "enum": "alarm_function"},
    {"name": "Alarm 2 action", "group": "Alarms", "area": "holding", "address": 92, "type": "uint16", "access": "RW", "enum": {"0": "Normally open", "1": "Normally closed"}},
    {"name": "Alarm 2 setpoint (configuration)", "group": "Alarms", "area": "holding", "address": 93, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block"},
    {"name": "Alarm 2 hysteresis", "group": "Alarms", "area": "holding", "address": 94, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Alarm 2 on delay", "group": "Alarms", "area": "holding", "address": 95, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 2 action time", "group": "Alarms", "area": "holding", "address": 96, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 2 initial block", "group": "Alarms", "area": "holding", "address": 97, "type": "uint16", "access": "RW", "enum": {"0": "No", "1": "Yes"}},
    {"name": "Alarm 3 function", "group": "Alarms", "area": "holding", "address": 98, "type": "uint16", "access": "RW", "enum": "alarm_function"},
    {"name": "Alarm 3 action", "group": "Alarms", "area": "holding", "address": 99, "type": "uint16", "access": "RW", "enum": {"0": "Normally open", "1": "Normally closed"}},
    {"name": "Alarm 3 setpoint (configuration)", "group": "Alarms", "area": "holding", "address": 100, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block"},
    {"name": "Alarm 3 hysteresis", "group": "Alarms", "area": "holding", "address": 101, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Alarm 3 on delay", "group": "Alarms", "area": "holding", "address": 102, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 3 action time", "group": "Alarms", "area": "holding", "address": 103, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 3 initial block", "group": "Alarms", "area": "holding", "address": 104, "type": "uint16", "access": "RW", "enum": {"0": "No", "1": "Yes"}},
    {"name": "Alarm 4 function", "group": "Alarms", "area": "holding", "address": 105, "type": "uint16", "access": "RW", "enum": "alarm_function"},
    {"name": "Alarm 4 action", "group": "Alarms", "area": "holding", "address": 106, "type": "uint16", "access": "RW", "enum": {"0": "Normally open", "1": "Normally closed"}},
    {"name": "Alarm 4 setpoint (configuration)", "group": "Alarms", "area": "holding", "address": 107, "type": "int16", "access": "RW", "description": "In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block"},
    {"name": "Alarm 4 hysteresis", "group": "Alarms", "area": "holding", "address": 108, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 1000, "description": "In engineering units, with the decimal places set in register 63"},
    {"name": "Alarm 4 on delay", "group": "Alarms", "area": "holding", "address": 109, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 4 action time", "group": "Alarms", "area": "holding", "address": 110, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 9999, "description": "0 = off"},
    {"name": "Alarm 4 initial block", "group": "Alarms", "area": "holding", "address": 111, "type": "uint16", "access": "RW", "enum": {"0": "No", "1": "Yes"}},
    {"name": "Output on input failure", "group": "Failure monitoring", "area": "holding", "address": 112, "type": "int16", "access": "RW", "scale": 0.1, "unit": "%", "write_min": -100, "write_max": 100, "description": "Output when the input exceeds the range by 10 % or the sensor breaks; the document lists off, -100.0 to -0.1 (C2) and 0.1 to 100.0, and does not say how off is encoded"},
    {"name": "Output on actuator failure", "group": "Failure monitoring", "area": "holding", "address": 113, "type": "int16", "access": "RW", "scale": 0.1, "unit": "%", "description": "Output when the process does not respond to control; the document lists off, fail, and values from 0.2 to 100.0 and from -100.0 to -0.1, and does not say how the special values are encoded"},
    {"name": "Process response time limit", "group": "Failure monitoring", "area": "holding", "address": 114, "type": "uint16", "access": "RW", "unit": "s", "write_min": 1, "write_max": 9999},
    {"name": "Time at failure output", "group": "Failure monitoring", "area": "holding", "address": 115, "type": "uint16", "access": "RW", "unit": "s", "write_min": 1, "write_max": 9999},
    {"name": "Under-current monitoring mode", "group": "Failure monitoring", "area": "holding", "address": 116, "type": "uint16", "access": "RW", "enum": {"0": "Single-phase", "1": "Three-phase"}},
    {"name": "Under-current alarm setpoint", "group": "Failure monitoring", "area": "holding", "address": 117, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "A", "write_min": 0.1, "write_max": 50},
    {"name": "F key function", "group": "Inputs", "area": "holding", "address": 118, "type": "uint16", "access": "RW", "description": "Function of the F key on the H301 front panel, as the document's table 6 lists it: off, C.Off, M-A, Al.bl, SP2, P.Sts, tunE; the numeric codes are not given"},
    {"name": "Digital input 1 function", "group": "Inputs", "area": "holding", "address": 119, "type": "uint16", "access": "RW", "enum": "digital_input_function"},
    {"name": "Digital input 2 function", "group": "Inputs", "area": "holding", "address": 120, "type": "uint16", "access": "RW", "enum": "digital_input_function"},
    {"name": "Address", "group": "Communication", "area": "holding", "address": 121, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 247},
    {"name": "Baud rate", "group": "Communication", "area": "holding", "address": 122, "type": "uint16", "access": "RW", "enum": {"0": "9600", "1": "19200", "2": "38400", "3": "57600"}},
    {"name": "Parity", "group": "Communication", "area": "holding", "address": 123, "type": "uint16", "access": "RW", "enum": {"0": "None", "1": "Odd", "2": "Even"}},
    {"name": "Modulating actuator time", "group": "Communication", "area": "holding", "address": 124, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "s", "write_min": 0.1, "write_max": 999.9, "description": "Servo motor control option"},
    {"name": "Firmware version", "group": "Identity", "area": "holding", "address": 125, "type": "uint16", "scale": 0.01, "role": "firmware", "description": "Document format VX.XX; read here as hundredths (107 for 1.07), which the document does not confirm"},
    {"name": "Cold junction offset", "group": "Calibration", "area": "holding", "address": 228, "type": "int16", "access": "RW", "scale": 0.1, "unit": "°C", "write_min": -10, "write_max": 10},
    {"name": "Cold junction temperature", "group": "Calibration", "area": "holding", "address": 229, "type": "uint16", "scale": 0.1, "unit": "°C"},
    {"name": "Input channel reading", "group": "Calibration", "area": "holding", "address": 230, "type": "int16", "description": "Reading of the input channel, in engineering units"},
    {"name": "Input calibration in use", "group": "Calibration", "area": "holding", "address": 231, "type": "uint16", "enum": {"0": "Factory", "1": "User"}}
  ]
}
