{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Electron do Brasil", "model": "MoniUni", "models": ["MoniUni"], "vendor_website": "electron.com.br", "description": "Universal signal monitor for three RTD, level or 4-20 mA sensors: readings, differentials, minimums and maximums, alarms, faults and identity", "revision": 1, "revised": "2026-11-08", "source": "Electron Mapa de Registradores - Protocolo Modbus RTU, MoniUni, v3.2", "sources": [ {"title": "Mapa de Registradores – Protocolo Modbus RTU: Monitor Universal de Sinais MoniUni", "version": "3.2", "url": "https://electron.com.br/api/downloads/file/mapa_de_registradores_moniuni_modbus_rtu_pt-br_v3-2.pdf", "note": "linked in issue #138"} ], "notes": [ "Modbus RTU; every value is a holding register. The document numbers the registers from 1 relative to 40.000 and does not say whether that number is sent as is; it is used here as the address on the wire. If every value looks shifted by one register, use address base 1.", "The baud rate is detected automatically (1200 to 57600 bit/s) unless fixed; the parity can be none, even or odd. 9600 8N1 is assumed here.", "Readings, limits and setpoints are raw values: the number of decimal places is set per sensor (registers 11-13), and the unit depends on the sensor type (°C for RTDs).", "The settings for alarm actions, setpoints, hysteresis, analogue outputs and relays (registers 15-123) are left out: the document gives a scale of -1000 for many of them without explaining it.", "Written from the register map; 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": 0, "x_status": "official", "enums": { "sensor_type": {"0": "PT100", "1": "PT200", "2": "PT500", "3": "PT1000", "4": "Level", "5": "4-20 mA"}, "alarm_type": {"0": "Falling", "1": "Rising", "2": "Differential"} }, "registers": [ {"name": "Sensor 1 enabled", "group": "Sensors", "area": "holding", "address": 1, "type": "bool", "bit": 0, "access": "RW"}, {"name": "Sensor 2 enabled", "group": "Sensors", "area": "holding", "address": 1, "type": "bool", "bit": 1, "access": "RW"}, {"name": "Sensor 3 enabled", "group": "Sensors", "area": "holding", "address": 1, "type": "bool", "bit": 2, "access": "RW"}, {"name": "Sensor 1 type", "group": "Sensors", "area": "holding", "address": 2, "type": "uint16", "enum": "sensor_type", "access": "RW"}, {"name": "Sensor 2 type", "group": "Sensors", "area": "holding", "address": 3, "type": "uint16", "enum": "sensor_type", "access": "RW"}, {"name": "Sensor 3 type", "group": "Sensors", "area": "holding", "address": 4, "type": "uint16", "enum": "sensor_type", "access": "RW"}, {"name": "Sensor 1 decimal places", "group": "Sensors", "area": "holding", "address": 11, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 3, "description": "Divide the sensor 1 values by 10 to this power"}, {"name": "Sensor 2 decimal places", "group": "Sensors", "area": "holding", "address": 12, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 3, "description": "Divide the sensor 2 values by 10 to this power"}, {"name": "Sensor 3 decimal places", "group": "Sensors", "area": "holding", "address": 13, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 3, "description": "Divide the sensor 3 values by 10 to this power"}, {"name": "Sensor 1 value", "group": "Readings", "area": "holding", "address": 150, "type": "int16", "description": "Raw value: apply the decimal places of the sensor (registers 11-13)"}, {"name": "Sensor 2 value", "group": "Readings", "area": "holding", "address": 151, "type": "int16", "description": "Raw value: apply the decimal places of the sensor (registers 11-13)"}, {"name": "Sensor 3 value", "group": "Readings", "area": "holding", "address": 152, "type": "int16", "description": "Raw value: apply the decimal places of the sensor (registers 11-13)"}, {"name": "Differential 1-2 value", "group": "Readings", "area": "holding", "address": 153, "type": "int16", "description": "Raw value: apply the decimal places of the sensor (registers 11-13)"}, {"name": "Differential 1-3 value", "group": "Readings", "area": "holding", "address": 154, "type": "int16", "description": "Raw value: apply the decimal places of the sensor (registers 11-13)"}, {"name": "Differential 2-3 value", "group": "Readings", "area": "holding", "address": 155, "type": "int16", "description": "Raw value: apply the decimal places of the sensor (registers 11-13)"}, {"name": "Sensor 1 maximum", "group": "Maximum and minimum", "area": "holding", "address": 156, "type": "int16"}, {"name": "Sensor 2 maximum", "group": "Maximum and minimum", "area": "holding", "address": 157, "type": "int16"}, {"name": "Sensor 3 maximum", "group": "Maximum and minimum", "area": "holding", "address": 158, "type": "int16"}, {"name": "Differential 1-2 maximum", "group": "Maximum and minimum", "area": "holding", "address": 159, "type": "int16"}, {"name": "Differential 1-3 maximum", "group": "Maximum and minimum", "area": "holding", "address": 160, "type": "int16"}, {"name": "Differential 2-3 maximum", "group": "Maximum and minimum", "area": "holding", "address": 161, "type": "int16"}, {"name": "Sensor 1 minimum", "group": "Maximum and minimum", "area": "holding", "address": 162, "type": "int16"}, {"name": "Sensor 2 minimum", "group": "Maximum and minimum", "area": "holding", "address": 163, "type": "int16"}, {"name": "Sensor 3 minimum", "group": "Maximum and minimum", "area": "holding", "address": 164, "type": "int16"}, {"name": "Differential 1-2 minimum", "group": "Maximum and minimum", "area": "holding", "address": 165, "type": "int16"}, {"name": "Differential 1-3 minimum", "group": "Maximum and minimum", "area": "holding", "address": 166, "type": "int16"}, {"name": "Differential 2-3 minimum", "group": "Maximum and minimum", "area": "holding", "address": 167, "type": "int16"}, {"name": "Sensor 1 fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 0}, {"name": "Sensor 2 fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 1}, {"name": "Sensor 3 fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 2}, {"name": "Differential 1-2 fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 3}, {"name": "Differential 1-3 fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 4}, {"name": "Differential 2-3 fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 5}, {"name": "Relay fault", "group": "Faults", "area": "holding", "address": 169, "type": "bool", "bit": 15}, {"name": "Alarm 1 Sensor 1", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 0}, {"name": "Alarm 1 Sensor 2", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 1}, {"name": "Alarm 1 Sensor 3", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 2}, {"name": "Alarm 1 Differential 1-2", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 3}, {"name": "Alarm 1 Differential 1-3", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 4}, {"name": "Alarm 1 Differential 2-3", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 5}, {"name": "Alarm 1 active", "group": "Alarm 1", "area": "holding", "address": 172, "type": "bool", "bit": 15, "description": "Set by any sensor or differential"}, {"name": "Alarm 2 Sensor 1", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 0}, {"name": "Alarm 2 Sensor 2", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 1}, {"name": "Alarm 2 Sensor 3", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 2}, {"name": "Alarm 2 Differential 1-2", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 3}, {"name": "Alarm 2 Differential 1-3", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 4}, {"name": "Alarm 2 Differential 2-3", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 5}, {"name": "Alarm 2 active", "group": "Alarm 2", "area": "holding", "address": 178, "type": "bool", "bit": 15, "description": "Set by any sensor or differential"}, {"name": "Alarm 3 Sensor 1", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 0}, {"name": "Alarm 3 Sensor 2", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 1}, {"name": "Alarm 3 Sensor 3", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 2}, {"name": "Alarm 3 Differential 1-2", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 3}, {"name": "Alarm 3 Differential 1-3", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 4}, {"name": "Alarm 3 Differential 2-3", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 5}, {"name": "Alarm 3 active", "group": "Alarm 3", "area": "holding", "address": 184, "type": "bool", "bit": 15, "description": "Set by any sensor or differential"}, {"name": "Alarm 1 type", "group": "Alarm settings", "area": "holding", "address": 22, "type": "uint16", "enum": "alarm_type", "access": "RW"}, {"name": "Alarm 2 type", "group": "Alarm settings", "area": "holding", "address": 23, "type": "uint16", "enum": "alarm_type", "access": "RW"}, {"name": "Alarm 3 type", "group": "Alarm settings", "area": "holding", "address": 24, "type": "uint16", "enum": "alarm_type", "access": "RW"}, {"name": "Alarm 1 on delay", "group": "Alarm settings", "area": "holding", "address": 98, "type": "uint16", "unit": "s", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Alarm 2 on delay", "group": "Alarm settings", "area": "holding", "address": 99, "type": "uint16", "unit": "s", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Alarm 3 on delay", "group": "Alarm settings", "area": "holding", "address": 100, "type": "uint16", "unit": "s", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Alarm 1 off delay", "group": "Alarm settings", "area": "holding", "address": 101, "type": "uint16", "unit": "s", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Alarm 2 off delay", "group": "Alarm settings", "area": "holding", "address": 102, "type": "uint16", "unit": "s", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Alarm 3 off delay", "group": "Alarm settings", "area": "holding", "address": 103, "type": "uint16", "unit": "s", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Display mode", "group": "Settings", "area": "holding", "address": 124, "type": "uint16", "enum": {"0": "Scan", "1": "Manual", "2": "Highest value"}, "access": "RW"}, {"name": "Reset Sensor 1 maximum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 0, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Sensor 2 maximum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 1, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Sensor 3 maximum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 2, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Differential 1-2 maximum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 3, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Differential 1-3 maximum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 4, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Differential 2-3 maximum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 5, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Sensor 1 minimum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 6, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Sensor 2 minimum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 7, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Sensor 3 minimum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 8, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Differential 1-2 minimum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 9, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Differential 1-3 minimum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 10, "access": "W", "description": "Write 1 to reset"}, {"name": "Reset Differential 2-3 minimum", "group": "Commands", "area": "holding", "address": 125, "type": "bool", "bit": 11, "access": "W", "description": "Write 1 to reset"}, {"name": "Restart", "group": "Commands", "area": "holding", "address": 126, "type": "bool", "bit": 0, "access": "W", "description": "Write 1 to restart; settings are kept"}, {"name": "Baud rate", "group": "Communication", "area": "holding", "address": 188, "type": "uint16", "enum": {"0": "Automatic", "1": "1200", "2": "2400", "3": "4800", "4": "9600", "5": "19200", "6": "38400", "7": "57600"}}, {"name": "Address", "group": "Communication", "area": "holding", "address": 189, "type": "uint16"}, {"name": "Protocol", "group": "Communication", "area": "holding", "address": 190, "type": "uint16", "enum": {"0": "DNP3 Level 1", "1": "Modbus RTU"}}, {"name": "Parity", "group": "Communication", "area": "holding", "address": 191, "type": "uint16", "enum": {"0": "None", "1": "Even", "2": "Odd"}}, {"name": "Serial write protection", "group": "Communication", "area": "holding", "address": 192, "type": "uint16", "enum": {"0": "Changes allowed", "1": "Changes blocked"}}, {"name": "Serial number", "group": "Identity", "area": "holding", "address": 194, "type": "uint32", "role": "serial"}, {"name": "Version", "group": "Identity", "area": "holding", "address": 196, "type": "uint16"}, {"name": "Calibration day", "group": "Identity", "area": "holding", "address": 197, "type": "uint16"}, {"name": "Calibration month", "group": "Identity", "area": "holding", "address": 198, "type": "uint16"}, {"name": "Calibration year", "group": "Identity", "area": "holding", "address": 199, "type": "uint16", "description": "Two digits"}, {"name": "Model code", "group": "Identity", "area": "holding", "address": 200, "type": "uint16"} ] }