SunSpec SunSpec Model 123 — Immediate Controls Modbus TCP template

SunSpec Model 123 — Immediate Controls

SunSpec Model 123 is a standardized inverter control model defined by the SunSpec Alliance for grid-connected distributed energy resources. This Modbus TCP template targets the Immediate Controls block used by SMA, Fronius, Kostal, and other SunSpec-certified inverters. It exposes grid connection control (conn), active power limiting (wmaxlimpct and wmaxlim_ena), fixed power factor (outpfset and outpfset_ena), and reactive power setpoints (varwmaxpct, varmaxpct, varavalpct, varpct_ena) together with their time-window, reversion, and ramp registers. Importing this template into ModbusCloud gives installers a ready-made interface to read and write Model 123 controls across any compliant device without manual register mapping.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
26, read and write
Brand
SunSpec
Last updated

Registers (26)

26 read, 21 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
idRead
lRead
conn_wintmsSecsRead and write
conn_rvrttmsSecsRead and write
connRead and write
wmaxlimpct% WMaxRead and write
wmaxlimpct_wintmsSecsRead and write
wmaxlimpct_rvrttmsSecsRead and write
wmaxlimpct_rmptmsSecsRead and write
wmaxlim_enaRead and write
outpfsetcos()Read and write
outpfset_wintmsSecsRead and write
outpfset_rvrttmsSecsRead and write
outpfset_rmptmsSecsRead and write
outpfset_enaRead and write
varwmaxpct% WMaxRead and write
varmaxpct% VArMaxRead and write
varavalpct% VArAvalRead and write
varpct_wintmsSecsRead and write
varpct_rvrttmsSecsRead and write
varpct_rmptmsSecsRead and write
varpct_modRead and write
varpct_enaRead and write
wmaxlimpct_sfRead
outpfset_sfRead
varpct_sfRead

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 active power limit setpoint (wmaxlimpct) to verify curtailment commands are applied as dispatched by a DSO or EMS.
  • Track power factor setpoint (outpfset) over time to confirm reactive power compliance with local grid code requirements.
  • Alert when the grid connection register (conn) changes unexpectedly, indicating an unplanned inverter disconnect event.
  • Compare wmaxlimpct reversion timeout (wmaxlimpct_rvrttms) readings against scheduled curtailment windows to detect missed reversion events.
  • Verify reactive power mode (varpct_mod) and enable status (varpct_ena) after firmware updates to ensure control settings were preserved.

Installation

  1. Enable Modbus TCP on the inverter or gateway under the communication or Modbus section of its web interface, and confirm the SunSpec profile is active and byte order is set to big-endian.

  2. Connect the inverter or Modbus gateway to the same LAN segment as the ModbusCloud Gateway, ensuring TCP port 502 is reachable from the Gateway's IP address.

  3. In the ModbusCloud portal, add the device, import the SunSpec Model 123 template, and enter the correct unit ID for your inverter (consult the device's commissioning tool to identify the assigned unit ID).

  4. Spot-check the id register (address 0) in the portal's live register view: it must read 123 to confirm you are polling the correct model block on the device.

Things to watch for

The id register reads a value other than 123. Why?

The SunSpec register map is self-describing and chained: Model 123 is not always at a fixed absolute address. The absolute Modbus address of the model block depends on which models precede it in the chain. Use a SunSpec model discovery scan or consult the device's PICS table to find the correct starting address, then update the template offset in the portal.

I wrote wmaxlimpct but inverter output did not change. What now?

Writing the setpoint register alone is not sufficient. The wmaxlim_ena register must be written to enable the throttle function after the setpoint is set. Control values do not take effect until the associated enable register is written. Confirm wmaxlim_ena is set to the enabled enumeration value after updating wmaxlimpct.

Scaled register values look wrong by a factor of 10 or 100. How do I fix this?

SunSpec uses scale-factor registers (wmaxlimpct_sf, outpfset_sf, varpct_sf) that store a signed exponent applied as a power of ten. If these scale factors return a non-zero value, the raw register value must be multiplied by 10 raised to that exponent. Ensure your ModbusCloud template read them and applies scaling before displaying or comparing values.

The gateway connects but write registers return no response or an error. What should I check?

Several inverter manufacturers protect Model 123 write registers behind an unlock code or restrict writes to a single Modbus client at a time. Check whether another client such as an EMS or data logger already holds an exclusive session. Also verify that write registers (conn, wmaxlimpct, outpfset, var setpoints, and their enable flags) are within the device's stated supported range, as writing an unsupported value returns a Modbus exception 3. Use write registers with caution: issuing a disconnect (conn = 0) or an extreme power limit can affect inverter output and may invalidate grid-operator agreements.

Want to see how it works?

Electrician working in an open distribution board