SunSpec Alliance Inverter 111/112/113 (float) Modbus register map
Generic SunSpec Modbus inverter model with 32-bit floating point values. Used by many inverters (SolarEdge, Fronius, SMA, Kostal and others); the model and its position are set by each device
- Official
- 57 registers
- Modbus TCP and RTU
- Revision 2 · 2026-11-10
- Identity: firmware, serial number
Official: Written from the manufacturer's documentation, but not tested on a device yet. 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 RTU
- Unit ID
- 1
- TCP port
- 502
- 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
- 57 holding registers
- Groups
- 8
- Translation tables
- 1
- Revision
- 2 · 2026-11-10
- Added
- ()
- File
- maps/sunspec-alliance/inverter-111-113.mbmap.json · 11 KB · history
- SHA-256
- 9232874a50681282c41daaa3ba52b74070dbdad8edb39a67fdb7e72c5ba1d556
- Manufacturer
- sunspec.org
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Firmware | Version | holding 40044 | string[8] | |
| Serial number | Serial number | holding 40052 | string[16] |
Sources and notes
- SunSpec Alliance information model definitions models 1, 111-113
Source: SunSpec Alliance, SunSpec information model definitions (github.com/sunspec/models), models 1, 111-113
- SunSpec Inverter 111/112/113 (float).
- The SunSpec chain starts at address 40000 ('SunS'), then the common block, then the inverter model.
- This map assumes a common block of 65 registers, so the inverter model starts at 40069 (as in SolarEdge inverters). A device with the 66-register common block of the specification starts it at 40070: read the Model ID row, which must show 101-103 or 111-113, to check.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 40000 | string[2] | R | Reads SunS" on a SunSpec device" | |||
| HR | 40002 | uint16 | R | SunSpec ID | |||
| HR | 40003 | uint16 | R | SunSpec L | |||
| HR | 40004 | string[16] | R | SunSpec Mn | |||
| HR | 40020 | string[16] | R | SunSpec Md | |||
| HR | 40036 | string[8] | R | SunSpec Opt | |||
| HR | 40044 | string[8] | R | SunSpec Vr | |||
| HR | 40052 | string[16] | R | SunSpec SN | |||
| HR | 40068 | uint16 | R | SunSpec DA. This point is mandatory for all SunSpec RTU devices and, for those devices, they must support values from 1-247. | |||
| HR | 40069 | uint16 | R | SunSpec ID. 101/111 = single phase, 102/112 = split phase, 103/113 = three phase | |||
| HR | 40070 | uint16 | R | SunSpec L | |||
| HR | 40071 | float32 ABCD | R | A | SunSpec A. Sum of active phases | ||
| HR | 40073 | float32 ABCD | R | A | SunSpec AphA. Connected Phase | ||
| HR | 40075 | float32 ABCD | R | A | SunSpec AphB. Connected Phase | ||
| HR | 40077 | float32 ABCD | R | A | SunSpec AphC. Connected Phase | ||
| HR | 40079 | float32 ABCD | R | V | SunSpec PPVphAB | ||
| HR | 40081 | float32 ABCD | R | V | SunSpec PPVphBC | ||
| HR | 40083 | float32 ABCD | R | V | SunSpec PPVphCA | ||
| HR | 40085 | float32 ABCD | R | V | SunSpec PhVphA | ||
| HR | 40087 | float32 ABCD | R | V | SunSpec PhVphB | ||
| HR | 40089 | float32 ABCD | R | V | SunSpec PhVphC | ||
| HR | 40091 | float32 ABCD | R | W | SunSpec W | ||
| HR | 40093 | float32 ABCD | R | Hz | SunSpec Hz | ||
| HR | 40095 | float32 ABCD | R | VA | SunSpec VA | ||
| HR | 40097 | float32 ABCD | R | var | SunSpec VAr | ||
| HR | 40099 | float32 ABCD | R | % | SunSpec PF | ||
| HR | 40101 | float32 ABCD | R | Wh | SunSpec WH | ||
| HR | 40103 | float32 ABCD | R | A | SunSpec DCA | ||
| HR | 40105 | float32 ABCD | R | V | SunSpec DCV | ||
| HR | 40107 | float32 ABCD | R | W | SunSpec DCW | ||
| HR | 40109 | float32 ABCD | R | °C | SunSpec TmpCab | ||
| HR | 40111 | float32 ABCD | R | °C | SunSpec TmpSnk | ||
| HR | 40113 | float32 ABCD | R | °C | SunSpec TmpTrns | ||
| HR | 40115 | float32 ABCD | R | °C | SunSpec TmpOt | ||
| HR | 40117 | uint16 | R | SunSpec St | |||
| HR | 40118 | uint16 | R | SunSpec StVnd | |||
| HR | 40120 | bool bit 0 | R | SunSpec Evt1 bit 0 | |||
| HR | 40120 | bool bit 1 | R | SunSpec Evt1 bit 1 | |||
| HR | 40120 | bool bit 2 | R | SunSpec Evt1 bit 2 | |||
| HR | 40120 | bool bit 3 | R | SunSpec Evt1 bit 3 | |||
| HR | 40120 | bool bit 4 | R | SunSpec Evt1 bit 4 | |||
| HR | 40120 | bool bit 5 | R | SunSpec Evt1 bit 5 | |||
| HR | 40120 | bool bit 6 | R | SunSpec Evt1 bit 6 | |||
| HR | 40120 | bool bit 7 | R | SunSpec Evt1 bit 7 | |||
| HR | 40120 | bool bit 8 | R | SunSpec Evt1 bit 8 | |||
| HR | 40120 | bool bit 9 | R | SunSpec Evt1 bit 9 | |||
| HR | 40120 | bool bit 10 | R | SunSpec Evt1 bit 10 | |||
| HR | 40120 | bool bit 11 | R | SunSpec Evt1 bit 11 | |||
| HR | 40120 | bool bit 12 | R | SunSpec Evt1 bit 12 | |||
| HR | 40120 | bool bit 13 | R | SunSpec Evt1 bit 13 | |||
| HR | 40120 | bool bit 14 | R | SunSpec Evt1 bit 14 | |||
| HR | 40120 | bool bit 15 | R | SunSpec Evt1 bit 15 | |||
| HR | 40121 | uint32 ABCD | R | SunSpec Evt2 | |||
| HR | 40123 | uint32 ABCD | R | SunSpec EvtVnd1 | |||
| HR | 40125 | uint32 ABCD | R | SunSpec EvtVnd2 | |||
| HR | 40127 | uint32 ABCD | R | SunSpec EvtVnd3 | |||
| HR | 40129 | uint32 ABCD | R | SunSpec EvtVnd4 |
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).