{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "ABB", "model": "UNO DM Plus", "models": ["UNO DM Plus"], "vendor_website": "abb.com", "description": "Single-phase PV inverter (UNO-DM-Plus series) exposing the SunSpec inverter model over Modbus TCP and RTU: AC and DC measurements with scale factors, status, events and ratings", "revision": 3, "revised": "2026-10-18", "source": "SunSpec inverter model registers; list converted from the Modbus Database (MIT licence, Jibril Sharafi). Not verified against the manufacturer's documentation", "sources": [{"title": "UNO-DM-3.3/3.8/4.6/5.0-TL-PLUS-US Product manual", "version": "Rev A (M000037AG)", "url": "https://www.fimer.com/sites/default/files/UNO-DM-3.3_3.8_4.6_5.0-TL-PLUS-US-Product%20manual%20EN-RevA%28M000037AG%29.pdf", "note": "confirms the SunSpec Modbus TCP/RTU interface; the manual gives no register table"}, {"title": "SunSpec Information Model Reference: inverter models 101-103 and nameplate model 120", "note": "layout of the registers, scale factors, operating states, event bits and not-implemented values"}, {"title": "Modbus Database (Jibril Sharafi, MIT licence), table abb/uno-dm-plus", "url": "https://www.aggsoft.com/serial-data-logger/tutorials/modbus-data-logging/abb-uno-dm-plus.htm", "note": "original list of registers and addresses"}], "notes": ["ABB (now Fimer) UNO-DM-Plus single-phase inverter. The manufacturer's product manual only says the inverter has a SunSpec Modbus TCP/RTU interface and points to the SunSpec register map, so this map follows the SunSpec model layout.", "Values use scale factors: engineering value = register x 10^scale factor register. A scale factor of -32768 (and the other not-implemented values in sentinels) means the value is not available.", "The 32-bit event bit field is read as bits of its low word (address 40109). The byte order is not stated by the manual: SunSpec uses big-endian words.", "Not verified against the manufacturer's register table. Change x_status once the table of this inverter has been checked."], "byte_order": "big", "word_order": "big", "address_base": 0, "x_status": "unofficial", "x_origin": "modbus-database", "enums": { "operating_state": {"1": "Off", "2": "Sleeping", "3": "Starting", "4": "MPPT", "5": "Throttled", "6": "Shutting down", "7": "Fault", "8": "Standby"}, "der_type": {"4": "PV device", "82": "PV with storage"} }, "sentinels": { "int16": {"-32768": "Not implemented"}, "uint16": {"0xFFFF": "Not implemented"}, "uint32": {"0xFFFFFFFF": "Not implemented"} }, "registers": [ {"name": "AC current", "group": "AC side", "area": "holding", "address": 40070, "type": "uint16", "scale_factor": "A_SF", "unit": "A"}, {"name": "AC current phase A", "group": "AC side", "area": "holding", "address": 40071, "type": "uint16", "scale_factor": "A_SF", "unit": "A"}, {"name": "AC current phase B", "group": "AC side", "area": "holding", "address": 40072, "type": "uint16", "scale_factor": "A_SF", "unit": "A"}, {"name": "AC current phase C", "group": "AC side", "area": "holding", "address": 40073, "type": "uint16", "scale_factor": "A_SF", "unit": "A"}, {"name": "A_SF", "group": "AC side", "area": "holding", "address": 40074, "type": "int16"}, {"name": "Voltage A-B", "group": "AC side", "area": "holding", "address": 40075, "type": "uint16", "scale_factor": "V_SF", "unit": "V"}, {"name": "Voltage B-C", "group": "AC side", "area": "holding", "address": 40076, "type": "uint16", "scale_factor": "V_SF", "unit": "V"}, {"name": "Voltage C-A", "group": "AC side", "area": "holding", "address": 40077, "type": "uint16", "scale_factor": "V_SF", "unit": "V"}, {"name": "Voltage A-N", "group": "AC side", "area": "holding", "address": 40078, "type": "uint16", "scale_factor": "V_SF", "unit": "V"}, {"name": "Voltage B-N", "group": "AC side", "area": "holding", "address": 40079, "type": "uint16", "scale_factor": "V_SF", "unit": "V"}, {"name": "Voltage C-N", "group": "AC side", "area": "holding", "address": 40080, "type": "uint16", "scale_factor": "V_SF", "unit": "V"}, {"name": "V_SF", "group": "AC side", "area": "holding", "address": 40081, "type": "int16"}, {"name": "AC power", "group": "AC side", "area": "holding", "address": 40082, "type": "int16", "scale_factor": "W_SF", "unit": "W"}, {"name": "W_SF", "group": "AC side", "area": "holding", "address": 40083, "type": "int16"}, {"name": "Line frequency", "group": "AC side", "area": "holding", "address": 40084, "type": "uint16", "scale_factor": "Hz_SF", "unit": "Hz"}, {"name": "Hz_SF", "group": "AC side", "area": "holding", "address": 40085, "type": "int16"}, {"name": "AC apparent power", "group": "AC side", "area": "holding", "address": 40086, "type": "int16", "scale_factor": "VA_SF", "unit": "VA"}, {"name": "VA_SF", "group": "AC side", "area": "holding", "address": 40087, "type": "int16"}, {"name": "AC reactive power", "group": "AC side", "area": "holding", "address": 40088, "type": "int16", "scale_factor": "VAr_SF", "unit": "var"}, {"name": "VAr_SF", "group": "AC side", "area": "holding", "address": 40089, "type": "int16"}, {"name": "AC power factor", "group": "AC side", "area": "holding", "address": 40090, "type": "int16", "scale_factor": "PF_SF", "unit": "%"}, {"name": "PF_SF", "group": "AC side", "area": "holding", "address": 40091, "type": "int16"}, {"name": "AC energy", "group": "Energy", "area": "holding", "address": 40092, "type": "uint32", "scale_factor": "WH_SF", "unit": "Wh"}, {"name": "WH_SF", "group": "Energy", "area": "holding", "address": 40094, "type": "int16"}, {"name": "DC current", "group": "DC side", "area": "holding", "address": 40095, "type": "uint16", "scale_factor": "DCA_SF", "unit": "A"}, {"name": "DCA_SF", "group": "DC side", "area": "holding", "address": 40096, "type": "int16"}, {"name": "DC voltage", "group": "DC side", "area": "holding", "address": 40097, "type": "uint16", "scale_factor": "DCV_SF", "unit": "V"}, {"name": "DCV_SF", "group": "DC side", "area": "holding", "address": 40098, "type": "int16"}, {"name": "DC power", "group": "DC side", "area": "holding", "address": 40099, "type": "int16", "scale_factor": "DCW_SF", "unit": "W"}, {"name": "DCW_SF", "group": "DC side", "area": "holding", "address": 40100, "type": "int16"}, {"name": "Cabinet temperature", "group": "Temperatures", "area": "holding", "address": 40101, "type": "int16", "scale_factor": "Tmp_SF", "unit": "°C"}, {"name": "Heat sink temperature", "group": "Temperatures", "area": "holding", "address": 40102, "type": "int16", "scale_factor": "Tmp_SF", "unit": "°C"}, {"name": "Transformer temperature", "group": "Temperatures", "area": "holding", "address": 40103, "type": "int16", "scale_factor": "Tmp_SF", "unit": "°C"}, {"name": "Other temperature", "group": "Temperatures", "area": "holding", "address": 40104, "type": "int16", "scale_factor": "Tmp_SF", "unit": "°C"}, {"name": "Tmp_SF", "group": "Temperatures", "area": "holding", "address": 40105, "type": "int16"}, {"name": "Operating state", "group": "Status", "area": "holding", "address": 40106, "type": "uint16", "enum": "operating_state"}, {"name": "Vendor operating state", "group": "Status", "area": "holding", "address": 40107, "type": "uint16", "comment": "Vendor specific operating state code"}, {"name": "Event: Ground fault", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 0, "comment": "Low word of the 32-bit event bit field (bit 0 = ground fault)"}, {"name": "Event: DC over voltage", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 1}, {"name": "Event: AC disconnect open", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 2}, {"name": "Event: DC disconnect open", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 3}, {"name": "Event: Grid disconnect", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 4}, {"name": "Event: Cabinet open", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 5}, {"name": "Event: Manual shutdown", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 6}, {"name": "Event: Over temperature", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 7}, {"name": "Event: Over frequency", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 8}, {"name": "Event: Under frequency", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 9}, {"name": "Event: AC over voltage", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 10}, {"name": "Event: AC under voltage", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 11}, {"name": "Event: Blown string fuse", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 12}, {"name": "Event: Under temperature", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 13}, {"name": "Event: Memory loss", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 14}, {"name": "Event: Hardware test failure", "group": "Events", "area": "holding", "address": 40109, "type": "bool", "bit": 15}, {"name": "Vendor events 1", "group": "Status", "area": "holding", "address": 40112, "type": "uint32", "comment": "Vendor defined bit field"}, {"name": "Vendor events 2", "group": "Status", "area": "holding", "address": 40114, "type": "uint32", "comment": "Vendor defined bit field"}, {"name": "Vendor events 3", "group": "Status", "area": "holding", "address": 40116, "type": "uint32", "comment": "Vendor defined bit field"}, {"name": "Vendor events 4", "group": "Status", "area": "holding", "address": 40118, "type": "uint32", "comment": "Vendor defined bit field"}, {"name": "DER type", "group": "Ratings", "area": "holding", "address": 40122, "type": "uint16", "enum": "der_type"}, {"name": "Rated power", "group": "Ratings", "area": "holding", "address": 40123, "type": "uint16", "scale_factor": "WRtg_SF", "unit": "W"}, {"name": "WRtg_SF", "group": "Ratings", "area": "holding", "address": 40124, "type": "int16"}, {"name": "Rated apparent power", "group": "Ratings", "area": "holding", "address": 40125, "type": "uint16", "scale_factor": "VARtg_SF", "unit": "VA"}, {"name": "VARtg_SF", "group": "Ratings", "area": "holding", "address": 40126, "type": "int16"}, {"name": "Rated reactive power, quadrant 1", "group": "Ratings", "area": "holding", "address": 40127, "type": "int16", "scale_factor": "VArRtg_SF", "unit": "var"}, {"name": "Rated reactive power, quadrant 2", "group": "Ratings", "area": "holding", "address": 40128, "type": "int16", "scale_factor": "VArRtg_SF", "unit": "var"}, {"name": "Rated reactive power, quadrant 3", "group": "Ratings", "area": "holding", "address": 40129, "type": "int16", "scale_factor": "VArRtg_SF", "unit": "var"}, {"name": "Rated reactive power, quadrant 4", "group": "Ratings", "area": "holding", "address": 40130, "type": "int16", "scale_factor": "VArRtg_SF", "unit": "var"}, {"name": "VArRtg_SF", "group": "Ratings", "area": "holding", "address": 40131, "type": "int16"} ] }