
SunSpec Model 6 — Secure Write Sequential Request
SunSpec Model 6 is a protocol-level security model defined by the SunSpec Alliance for authenticated register writes over Modbus TCP. It implements the Secure Write Sequential Request pattern: a client stages up to 80 data words (val1 through val80) into a buffer, sets the target model index and register offset using the x and off registers, and commits the request with a timestamp (ts, ms), sequence number (seq), client role (role), signature algorithm (alg), and word count (n). The model header registers id and l identify and size the block. This template lets the ModbusCloud Gateway monitor the full write-request state, which is useful for auditing control commands sent to DER devices.
- Protocol
- Modbus TCP
- Connection
- Ethernet, Modbus TCP
- Registers
- 90, read and write
- Brand
- SunSpec
- Last updated
Registers (90)
90 read, 88 write
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| id | Read | ||||
| l | Read | ||||
| x | Read and write | ||||
| off | Read and write | ||||
| val1 | Read and write | ||||
| val2 | Read and write | ||||
| val3 | Read and write | ||||
| val4 | Read and write | ||||
| val5 | Read and write | ||||
| val6 | Read and write | ||||
| val7 | Read and write | ||||
| val8 | Read and write | ||||
| val9 | Read and write | ||||
| val10 | Read and write | ||||
| val11 | Read and write | ||||
| val12 | Read and write | ||||
| val13 | Read and write | ||||
| val14 | Read and write | ||||
| val15 | Read and write | ||||
| val16 | Read and write | ||||
| val17 | Read and write | ||||
| val18 | Read and write | ||||
| val19 | Read and write | ||||
| val20 | Read and write | ||||
| val21 | Read and write | ||||
| val22 | Read and write | ||||
| val23 | Read and write | ||||
| val24 | Read and write | ||||
| val25 | Read and write | ||||
| val26 | Read and write | ||||
| val27 | Read and write | ||||
| val28 | Read and write | ||||
| val29 | Read and write | ||||
| val30 | Read and write | ||||
| val31 | Read and write | ||||
| val32 | Read and write | ||||
| val33 | Read and write | ||||
| val34 | Read and write | ||||
| val35 | Read and write | ||||
| val36 | Read and write | ||||
| val37 | Read and write | ||||
| val38 | Read and write | ||||
| val39 | Read and write | ||||
| val40 | Read and write | ||||
| val41 | Read and write | ||||
| val42 | Read and write | ||||
| val43 | Read and write | ||||
| val44 | Read and write | ||||
| val45 | Read and write | ||||
| val46 | Read and write | ||||
| val47 | Read and write | ||||
| val48 | Read and write | ||||
| val49 | Read and write | ||||
| val50 | Read and write | ||||
| val51 | Read and write | ||||
| val52 | Read and write | ||||
| val53 | Read and write | ||||
| val54 | Read and write | ||||
| val55 | Read and write | ||||
| val56 | Read and write | ||||
| val57 | Read and write | ||||
| val58 | Read and write | ||||
| val59 | Read and write | ||||
| val60 | Read and write | ||||
| val61 | Read and write | ||||
| val62 | Read and write | ||||
| val63 | Read and write | ||||
| val64 | Read and write | ||||
| val65 | Read and write | ||||
| val66 | Read and write | ||||
| val67 | Read and write | ||||
| val68 | Read and write | ||||
| val69 | Read and write | ||||
| val70 | Read and write | ||||
| val71 | Read and write | ||||
| val72 | Read and write | ||||
| val73 | Read and write | ||||
| val74 | Read and write | ||||
| val75 | Read and write | ||||
| val76 | Read and write | ||||
| val77 | Read and write | ||||
| val78 | Read and write | ||||
| val79 | Read and write | ||||
| val80 | Read and write | ||||
| ts | Read and write | ||||
| ms | Read and write | ||||
| seq | Read and write | ||||
| role | Read and write | ||||
| alg | Read and write | ||||
| n | Read and write |
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 sequence register to detect duplicate or replayed write requests to DER setpoints.
- Verify the role register to confirm which client role last submitted a write request.
- Track the timestamp registers ts and ms to correlate secure write events with portal alert timelines.
- Alert on unexpected changes in the alg register that may indicate a configuration change in the signing algorithm.
- Audit the off and x registers to track which target model instance and register offset received the last staged payload.
Installation
Enable Modbus TCP on the SunSpec-compatible DER device and confirm that Secure Write (Model 6) is present in the device's SunSpec model list, typically discoverable by scanning from the base address 0, 40000, or 50000.
Connect the device to the same LAN segment as the ModbusCloud Gateway, ensuring TCP port 502 (or 802 for mbaps) is reachable from the Gateway and not blocked by a firewall.
In the ModbusCloud portal, add the Gateway, create a new device, import this SunSpec Model 6 template, and set the correct unit ID and base address offset for the device's SunSpec map.
Spot-check the id register: it must read 6 and the l register must match the expected block length before relying on val1 through val80 and the metadata registers.
Things to watch for
The id register does not read 6. What is wrong?
The base address offset may be incorrect. SunSpec device maps can start at address 0, 40000, or 50000. Verify which base address the device uses and adjust the template offset in the portal accordingly. Also confirm the device firmware supports Model 6 as some older firmware versions expose only models 1 and 101.
All val registers read zero even after a write event. Why?
The staged write buffer is only populated during an active write transaction. Between transactions the device may reset all val registers to zero or to the not-implemented value (0xFFFF for uint16). This is expected behaviour. Poll the seq register to detect when a new transaction has occurred, then read the payload in the same scan cycle.
The gateway connects but the seq register never increments. What now?
No secure write client is actively submitting requests to the device. Check that the control application has Model 6 enabled and is sending write requests. Also verify the unit ID assigned in the portal matches the device's configured Modbus unit ID, as a mismatch causes reads to succeed but return stale or zero values.
Is it safe to write to the val, off, or x registers from the portal?
Use extreme caution. Writing to any RW register in Model 6, including val1 through val80, off, x, seq, role, alg, or n, constitutes submitting or modifying a secure write request to the target DER device. An incorrect payload or offset can push an invalid setpoint to a live inverter or battery, which may trip protection limits or affect device warranty. Only write from the portal during a controlled commissioning or test procedure.
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?








