SunSpec SunSpec Model 160 — Multiple MPPT Inverter Extension Model Modbus TCP template

SunSpec Model 160 — Multiple MPPT Inverter Extension Model

SunSpec Model 160 is an open interoperability standard that extends any SunSpec-compliant PV inverter with per-string DC telemetry across multiple MPPT inputs. The SunSpec Model 160 — Multiple MPPT Inverter Extension Model template reads the model header registers (id, l), four scale-factor registers for current, voltage, power, and energy (dca_sf, dcv_sf, dcw_sf, dcwh_sf), a global event bitfield (evt), the input module count (n), and the timestamp period (tmsper). Accessed over Modbus TCP, it gives installers and asset managers accurate per-tracker data from any certified inverter without vendor lock-in.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
9, read only
Brand
SunSpec
Last updated

Registers (9)

9 read, 0 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
idRead
lRead
dca_sfRead
dcv_sfRead
dcw_sfRead
dcwh_sfRead
evtRead
nRead
tmspersRead

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 the number of active MPPT inputs to detect unexpected tracker dropouts after maintenance.
  • Track the global event bitfield to receive early warnings about ground faults or over-temperature conditions.
  • Verify scale factors after a firmware update to confirm current and power readings are still correctly calibrated.
  • Compare the reported input module count against the commissioned string count to spot wiring errors.
  • Alert on persistent non-zero event bits across multiple polling cycles to flag recurring DC-side faults.

Installation

  1. Enable Modbus TCP on the inverter: log into the inverter's web interface or commissioning tool and activate the Modbus server under the communication or Modbus section, noting the assigned IP address and port (typically 502).

  2. Connect the inverter to the same LAN as the ModbusCloud Gateway, using a standard Ethernet cable, and confirm the inverter responds to a ping from the same subnet.

  3. In the ModbusCloud portal, add a new device, import this SunSpec Model 160 template with one click, and enter the inverter's IP address, port 502, and the correct unit ID used by the inverter's Modbus server.

  4. Spot-check the connection by reading the id register: if the returned value is 160, the template is correctly mapped and data is flowing.

Things to watch for

The id register returns 0xFFFF or garbage. What is wrong?

A value of 0xFFFF is the SunSpec NaN sentinel for uint16, meaning the inverter did not return a valid model identifier. Confirm that Model 160 is actually present in the inverter's SunSpec model chain: some inverters only activate this model when more than one DC input is configured. Check your inverter documentation for multi-MPPT prerequisites.

Scale factor registers read as large negative numbers. Is that normal?

Yes. SunSpec scale factors are signed int16 exponents of ten. A value of -2 means divide the raw reading by 100. Apply the scale factor from the corresponding register (dca_sf for current, dcv_sf for voltage, dcw_sf for power, dcwh_sf for energy) before displaying or alerting on any measurement.

The gateway connects but the evt bitfield is always zero. Is the inverter healthy?

A zero evt value means no global fault bits are set, which normally indicates a healthy state. However, some inverter firmwares return zero by default even when faults exist. Cross-check against the inverter's local display or web interface, and verify the unit ID and register offset are correct in your portal configuration.

Why does tmsper always return 0 or NaN regardless of inverter?

The timestamp period point is marked as not supported by many certified inverters including Fronius and SolarEdge implementations, and will return a NaN value for that data type. This is expected behaviour. Do not use tmsper to validate connectivity; use the id register instead.

Want to see how it works?

Electrician working in an open distribution board