SunSpec SunSpec Model 64111 — Basic Charge Controller Modbus TCP template

SunSpec Model 64111 — Basic Charge Controller

SunSpec Model 64111 is a vendor-specific Modbus TCP model defining the Basic Charge Controller data block, used in off-grid and hybrid solar installations where a MPPT charge controller manages power flow between a PV array and a battery bank. The template reads real-time measurements including battery voltage, array voltage, output power, charge current, and charger state, alongside daily totals for kilowatt-hours and amp-hours output. Lifetime peak records for power, battery voltage, and PV open-circuit voltage are also accessible. Each physical measurement is scaled by a corresponding scale-factor register per the SunSpec standard. Connecting this template in ModbusCloud gives installers continuous visibility into charge controller performance without manual polling.

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

Registers (25)

25 read, 0 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
idRead
lRead
portRead
v_sfRead
a_sfRead
p_sfRead
ah_sfRead
kwh_sfRead
battvVRead
arrayvVRead
outputaARead
inputaARead
chargerstRead
outputwWRead
todayminbatvVRead
todaymaxbatvVRead
vocvVRead
todaymaxvocVRead
todaykwhoutputkWhRead
todayahoutputAHRead
lifetimekwhoutkWhRead
lifetimeahoutkAHRead
lifetimemaxoutWRead
lifetimemaxbattVRead
lifetimemaxvocVRead

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 daily kilowatt-hour and amp-hour output to verify that the PV array is delivering expected energy to the battery bank.
  • Track the charger state register to confirm the controller progresses correctly through bulk, absorption, and float charge stages.
  • Alert on unusually low today-minimum battery voltage to detect overnight loads that are discharging the bank too deeply.
  • Compare lifetime maximum PV open-circuit voltage against array specifications to identify wiring or over-voltage events.
  • Report daily amp-hour totals across multiple sites to benchmark charge controller performance over seasonal periods.

Installation

  1. Enable Modbus TCP on the charge controller or its communication gateway: navigate to the communication or Modbus section of the device web interface and confirm TCP is active on port 502.

  2. Connect the charge controller or gateway to the same LAN segment as the ModbusCloud Gateway, and note the device IP address for later use.

  3. In your ModbusCloud portal, add the ModbusCloud Gateway, then import the SunSpec Model 64111 template and enter the device IP address, port 502, and the correct Modbus unit ID.

  4. Read back the battv and outputw registers in the portal's live view and confirm the values match the figures shown on the controller's local display or web interface.

Things to watch for

All voltage and power values look wrong or too small. Why?

SunSpec Model 64111 uses signed scale-factor registers (v_sf, a_sf, p_sf, ah_sf, kwh_sf). Raw register values must be multiplied by 10 raised to the power of the corresponding scale factor. If your client ignores these registers, all measurements will be off by a fixed power of ten. Ensure your integration reads and applies each scale factor before displaying values.

The gateway connects but all registers return zero or NaN. What now?

Verify the Modbus unit ID configured in the portal matches the device or gateway unit ID exactly. SunSpec devices may use a non-default unit ID such as 1 or a vendor-assigned value. Also confirm the controller's Modbus TCP service is running and reachable on port 502 from the Gateway's network segment.

The chargerst register shows a number. How do I interpret it?

The chargerst field is an enumerated state code. Typical values represent charging stages such as off, bulk, absorption, float, or equalize. Consult the specific controller's Modbus documentation for the exact enumeration table, as values vary by manufacturer implementing this vendor-specific model.

Lifetime counters like lifetimekwhout seem stuck at zero. Is something broken?

Lifetime accumulation registers are uint16 and may have rolled over or may only be updated at defined intervals by the controller firmware. Cross-check with the kwh_sf scale factor to ensure the value is not being misread as zero due to scaling. If the controller has been in service for a long time, the uint16 range may also have overflowed.

Want to see how it works?

Electrician working in an open distribution board