
SunSpec Model 501 — Solar Module
SunSpec Model 501 is the Solar Module information model defined by the SunSpec Alliance, used by PV optimizers, module-level power electronics, and compatible inverters to expose per-module data over Modbus TCP. This template reads output-side measurements (current, voltage, instantaneous power, and cumulative energy via outa, outv, outw, and outwh), input-side string values (ina, inv, inw, inwh), module temperature (tmp), a seconds-based timestamp (tms), and standard event and status registers. Three write registers (ctl, ctlvend, ctlval) allow module-level control commands. ModbusCloud Gateway connects to any SunSpec Model 501 compliant device and surfaces all data in your portal with no custom coding.
- Protocol
- Modbus TCP
- Connection
- Ethernet, Modbus TCP
- Registers
- 19, read and write
- Brand
- SunSpec
- Last updated
Registers (19)
19 read, 3 write
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| id | Read | ||||
| l | Read | ||||
| stat | Read | ||||
| statvend | Read | ||||
| evt | Read | ||||
| evtvend | Read | ||||
| ctl | Read and write | ||||
| ctlvend | Read and write | ||||
| ctlval | Read and write | ||||
| tms | Secs | Read | |||
| outa | A | Read | |||
| outv | V | Read | |||
| outwh | Wh | Read | |||
| outw | W | Read | |||
| tmp | °C | Read | |||
| ina | A | Read | |||
| inv | V | Read | |||
| inwh | Wh | Read | |||
| inw | W | Read |
Loading registers…
Send your device list
If a device is not in the library yet, we build the template for free as soon as we have the register data.
Use cases
- Monitor per-module output power in real time to identify underperforming panels across a multi-string array.
- Track cumulative input and output energy (inwh vs outwh) to calculate optimizer conversion efficiency over time.
- Alert on active event bitfield flags (evt) to detect module faults before they reduce total site yield.
- Compare module temperature (tmp) against output power to verify derating behaviour during peak summer conditions.
- Report module-level timestamp (tms) gaps to confirm data continuity and flag communication dropouts on the Modbus segment.
Installation
Enable Modbus TCP on the host device or optimizer gateway under the communication or Modbus section, confirm port 502 is accessible, and note the assigned IP address.
Connect the device to the same LAN as the ModbusCloud Gateway, either directly or via the site network switch, and verify no firewall rule blocks port 502.
In the ModbusCloud portal, add the Gateway, create a new device, select the SunSpec Model 501 template, and enter the device IP address and unit ID matching your hardware configuration.
Verify the connection by reading the id register (address 0): a value of 501 confirms the correct model is addressed and the Gateway is polling successfully.
Things to watch for
Why do id and l return unexpected values?
SunSpec models are positioned dynamically in a device's register map. Address 0 in this template is a relative offset within the model block, not an absolute Modbus address. You must first walk the SunSpec register chain starting at the device base address (commonly 40001) to locate where Model 501 begins, then set that starting address in the portal.
All float32 registers read as NaN or 0xFFFFFFFF. What is wrong?
SunSpec devices use 0x7FC00000 (NaN for float32) to signal that a data point is not implemented or currently unavailable. This is normal for features the hardware does not support. Check that the module is energised and that the host device firmware supports Model 501. Also confirm big-endian byte order is selected in the portal, as SunSpec mandates big-endian register storage.
The Gateway connects but live power and current values do not update.
Some SunSpec Model 501 implementations only publish fresh values when the module is producing power. At night or under very low irradiance the device may freeze measurements at the last known value or return NaN. Verify by checking the tms register: if the timestamp is not incrementing, the device is not refreshing its data block.
Is it safe to write to ctl, ctlvend, or ctlval registers?
Use these write registers with caution. Writing an unsupported or out-of-range command to ctl or ctlval can trigger a module shutdown, interrupt energy production, or invalidate device warranty depending on the manufacturer. Always consult the device documentation before issuing any control command, and test on a single module before deploying to a full string.
Knowledge base articles for this device

SunSpec Modbus: one register map for many inverters
SunSpec Modbus is the open register map SMA, Fronius, SolarEdge and Kostal share. The layout, int+SF vs float, the TCP port per brand and reading a mixed fleet.
Fronius Modbus: read a Symo GEN24 over Modbus TCP
Fronius Modbus explained: enable Modbus TCP on the Symo GEN24 on port 502, choose between int+SF and float, read the right SunSpec registers and scale them correctly. Practical guide for solar installers.
SMA Modbus: reading a Sunny Boy over Modbus TCP (installers)
SMA Modbus explained: enable the Modbus TCP server on port 502, choose between the SMA profile (unit ID 3) and SunSpec (unit ID 126), read the right registers, and handle the NaN values at night. Practical guide for installers.
Want to see how it works?








