ABB UNO DM Plus Modbus register map
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
- Unofficial
- 67 registers
- Revision 3 · 2026-10-18
Unofficial: Copied from an unofficial source and not tested. Read it as a draft and check a value on the real device before you rely on the rest. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP and RTUdefault
- Unit ID
- 1default
- TCP port
- 502default
- Serial
- 9600 8E1 · 9600 baud, 8 data bits, even parity, 1 stop bit defaults
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 67 holding registers
- Groups
- 7
- Translation tables
- 2
- Revision
- 3 · 2026-10-18
- Added
- ()
- File
- maps/abb/uno-dm-plus.mbmap.json · 11 KB · history
- SHA-256
- 1a07dd6e654a104fd4ee1736fd5028668eaf08a61afa7240a26448ee7ec73a59
- Manufacturer
- abb.com
Sources and notes
- UNO-DM-3.3/3.8/4.6/5.0-TL-PLUS-US Product manual · version Rev A (M000037AG) confirms the SunSpec Modbus TCP/RTU interface; the manual gives no register table
- SunSpec Information Model Reference: inverter models 101-103 and nameplate model 120 layout of the registers, scale factors, operating states, event bits and not-implemented values
- Modbus Database (Jibril Sharafi, MIT licence), table abb/uno-dm-plus original list of registers and addresses
Source: SunSpec inverter model registers; list converted from the Modbus Database (MIT licence, Jibril Sharafi). Not verified against the manufacturer's documentation
- 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.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 40070 | uint16 | R | A | ×10^A_SF | ||
| HR | 40071 | uint16 | R | A | ×10^A_SF | ||
| HR | 40072 | uint16 | R | A | ×10^A_SF | ||
| HR | 40073 | uint16 | R | A | ×10^A_SF | ||
| HR | 40074 | int16 | R | ||||
| HR | 40075 | uint16 | R | V | ×10^V_SF | ||
| HR | 40076 | uint16 | R | V | ×10^V_SF | ||
| HR | 40077 | uint16 | R | V | ×10^V_SF | ||
| HR | 40078 | uint16 | R | V | ×10^V_SF | ||
| HR | 40079 | uint16 | R | V | ×10^V_SF | ||
| HR | 40080 | uint16 | R | V | ×10^V_SF | ||
| HR | 40081 | int16 | R | ||||
| HR | 40082 | int16 | R | W | ×10^W_SF | ||
| HR | 40083 | int16 | R | ||||
| HR | 40084 | uint16 | R | Hz | ×10^Hz_SF | ||
| HR | 40085 | int16 | R | ||||
| HR | 40086 | int16 | R | VA | ×10^VA_SF | ||
| HR | 40087 | int16 | R | ||||
| HR | 40088 | int16 | R | var | ×10^VAr_SF | ||
| HR | 40089 | int16 | R | ||||
| HR | 40090 | int16 | R | % | ×10^PF_SF | ||
| HR | 40091 | int16 | R | ||||
| HR | 40092 | uint32 ABCD | R | Wh | ×10^WH_SF | ||
| HR | 40094 | int16 | R | ||||
| HR | 40095 | uint16 | R | A | ×10^DCA_SF | ||
| HR | 40096 | int16 | R | ||||
| HR | 40097 | uint16 | R | V | ×10^DCV_SF | ||
| HR | 40098 | int16 | R | ||||
| HR | 40099 | int16 | R | W | ×10^DCW_SF | ||
| HR | 40100 | int16 | R | ||||
| HR | 40101 | int16 | R | °C | ×10^Tmp_SF | ||
| HR | 40102 | int16 | R | °C | ×10^Tmp_SF | ||
| HR | 40103 | int16 | R | °C | ×10^Tmp_SF | ||
| HR | 40104 | int16 | R | °C | ×10^Tmp_SF | ||
| HR | 40105 | int16 | R | ||||
| HR | 40106 | uint16 | R | ||||
| HR | 40107 | uint16 | R | ||||
| HR | 40109 | bool bit 0 | R | ||||
| HR | 40109 | bool bit 1 | R | ||||
| HR | 40109 | bool bit 2 | R | ||||
| HR | 40109 | bool bit 3 | R | ||||
| HR | 40109 | bool bit 4 | R | ||||
| HR | 40109 | bool bit 5 | R | ||||
| HR | 40109 | bool bit 6 | R | ||||
| HR | 40109 | bool bit 7 | R | ||||
| HR | 40109 | bool bit 8 | R | ||||
| HR | 40109 | bool bit 9 | R | ||||
| HR | 40109 | bool bit 10 | R | ||||
| HR | 40109 | bool bit 11 | R | ||||
| HR | 40109 | bool bit 12 | R | ||||
| HR | 40109 | bool bit 13 | R | ||||
| HR | 40109 | bool bit 14 | R | ||||
| HR | 40109 | bool bit 15 | R | ||||
| HR | 40112 | uint32 ABCD | R | ||||
| HR | 40114 | uint32 ABCD | R | ||||
| HR | 40116 | uint32 ABCD | R | ||||
| HR | 40118 | uint32 ABCD | R | ||||
| HR | 40122 | uint16 | R | ||||
| HR | 40123 | uint16 | R | W | ×10^WRtg_SF | ||
| HR | 40124 | int16 | R | ||||
| HR | 40125 | uint16 | R | VA | ×10^VARtg_SF | ||
| HR | 40126 | int16 | R | ||||
| HR | 40127 | int16 | R | var | ×10^VArRtg_SF | ||
| HR | 40128 | int16 | R | var | ×10^VArRtg_SF | ||
| HR | 40129 | int16 | R | var | ×10^VArRtg_SF | ||
| HR | 40130 | int16 | R | var | ×10^VArRtg_SF | ||
| HR | 40131 | int16 | R |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).