SunSpec Model Reference¶
This document provides a detailed map of the SunSpec models implemented in the FranklinWH aGate firmware, cross-referenced with the PICS Conformance Reference.
Quick Navigation¶
| Control Models | Monitoring Models | Settings Models | Extensions |
|---|---|---|---|
| M704 — DER AC Controls | M701 — DER Measurement | M702 — DER Capacity | FranklinWH Extensions |
| M715 — DER Lifecycle | M713 — Storage Capacity | M703 — Enter Service | M1 — Common |
| M711 — Freq Droop | M714 — DC Measurement | M502 — Solar Module | M705+ Curves |
Overview¶
The aGate utilizes the SunSpec 700-series (IEEE 1547) model set for Distributed Energy Resource (DER) control.
Addressing Note¶
The native base address for this implementation is 1.
* SunSpec ID (M1): Register 2 (Offset 1 from Base)
* 700-Series Base: Typically starts at Offset 69.
Control Workflow¶
Most control operations follow a specific sequence managed by the SunSpec Sequencer:
sequenceDiagram
participant S as Sequencer
participant G as aGate Modbus
rect rgb(240, 240, 240)
Note over S,G: Initialization Phase
S->>G: Write 704.WSetEna = 1 (Enable Remote)
G-->>S: ACK
S->>G: Read 704.WSetEna (Verify)
G-->>S: Value 1
end
rect rgb(245, 255, 245)
Note over S,G: Execution Phase
S->>G: Write 704.WSetPct = 30 (Limit 30%)
G-->>S: ACK
S->>G: Read 704.WSetPct (Verify)
G-->>S: Value 30
end
Note over S,G: Sequence Complete
M1 — Common¶
Purpose: Device identification and firmware metadata.
| Addr | Point | Description | Compliance |
|---|---|---|---|
| 2 | ID | Model ID (1) | ✅ |
| 4 | Mn | Manufacturer Name | ✅ |
| 20 | Md | Device Model (aGate X) | ✅ |
| 44 | Vr | Firmware Version | ✅ |
| 52 | SN | Serial Number | ✅ |
M701 — DER Measurement¶
Purpose: Real-time AC grid and inverter telemetry.
| Addr | Point | Description | Compliance |
|---|---|---|---|
| 73 | St | Operating State | ✅ |
| 80 | W | Total Active Power (W) | ✅ |
| 82 | Var | Total Reactive Power (Var) | ✅ |
| 83 | PF | Total Power Factor | ✅ |
| 86 | LNV | Phase Voltage (L-N) | ✅ |
| 87 | Hz | Frequency | ✅ |
M702 — DER Capacity¶
Purpose: Hardware ratings and software capacity ceilings.
| Addr | Point | Description | Compliance | Verification Test |
|---|---|---|---|---|
| 227 | WMaxRtg | Max Active Power Rating | ✅ | — |
| 248 | CtrlModes | Supported Modes Bitfield | ✅ | — |
| 251 | WMax | Active Power Max Setting | 🔴 BROKEN | wmax_conformance.json |
M704 — DER AC Controls¶
Purpose: Primary control path for active and reactive power.
| Addr | Point | Description | Compliance | Verification Test |
|---|---|---|---|---|
| 310 | WMaxLimPctEna | Curtailment Enable | 🔴 BROKEN | curtailment_conformance.json |
| 311 | WMaxLimPct | Curtailment Limit (%) | 🔴 BROKEN | curtailment_conformance.json |
| 318 | WSetEna | Remote Control Enable | ✅ WORKING | — |
| 320 | WSet | Power Setpoint (W) | ✅ WORKING | — |
| 324 | WSetPct | Power Setpoint (%) | ✅ WORKING | — |
| 331 | VarSetEna | Reactive Power Enable | 🔴 BROKEN | reactive_power_conformance.json |
| 327 | WSetRvrtTms | Dead-man Timer | 🔴 Issue 4 | reversion_conformance.json |
M713 — Storage Capacity¶
Purpose: Battery energy and State of Charge (SOC).
| Addr | Point | Description | Compliance |
|---|---|---|---|
| 1035 | WHRtg | Total Energy Rating (Wh) | ✅ |
| 1036 | WHAvail | Available Energy (Wh) | ✅ |
| 1037 | SoC | State of Charge (%) | ✅ |
M715 — DER Lifecycle¶
Purpose: Safety heartbeats and control mode lifecycle.
| Addr | Point | Description | Compliance | Verification Test |
|---|---|---|---|---|
| 1089 | LocRemCtl | Local/Remote Mode (Read-only) | ✅ | — |
| 1092 | ControllerHb | Controller Heartbeat | 🔴 BROKEN | heartbeat_conformance.json |
| 1095 | OpCtl | Operation Control (Connect/Disconnect) | ⚠️ Untested | — |
FranklinWH Modbus Extensions (15500+)¶
Purpose: Manufacturer-specific registers for operating modes, reserves, and granular telemetry.
These extensions provide access to hardware and software features that are unique to the FranklinWH ecosystem and are not part of the standard SunSpec Modbus Models.
- Granularity: While some registers (like Solar Power) may appear as duplicates of SunSpec points, the extensions often provide more granular data (e.g., distinguishing between proximal and remote PV sources).
- System Control: Core system settings like Operating Mode and SOC Reserves are managed exclusively through these extension registers.
| Addr | Point | Description | Compliance |
|---|---|---|---|
| 15500 | PVUse | PV Installed (Native) | ✅ |
| 15501 | apBoxPVUse | Remote PV Installed | ✅ |
| 15502 | PVOutputP | Total PV Power (W) | ✅ |
| 15503 | proximalPVOutputP | Proximal PV Power (W) | ✅ |
| 15504 | Remote1PV | Remote 1 PV Power (W) | ✅ |
| 15505 | Remote2PV | Remote 2 PV Power (W) | ✅ |
| 15506 | LoadActiveP | Home Load Power (W) | ✅ |
| 15507 | OnGridMode | Operating Mode (TOU, Self-Consum, etc) | ✅ |
| 15508 | SelfReserve | Self-Consumption SOC Reserve (%) | ✅ |
| 15509 | TouReserve | TOU SOC Reserve (%) | ✅ |
| 15510 | PVOutputWh | Total PV Generation (Wh) (High/Low) | ✅ |
| 15512 | proximalOutputWh | Proximal PV Generation (Wh) (High/Low) | ✅ |
M705–M712 Curves¶
Purpose: Autonomous grid response curves (Volt-Var, Volt-Watt, Frequency Droop). * Status: Most curve models are readable but writes have not been verified. * Reference: See PICS Conformance for details on specific unimplemented curve registers.
Conformance Tracking Suite¶
The following diagnostic sequences are designed to test the functional status of the "Broken" or "Unimplemented" registers listed above. Running these sequences will immediately report whether the hardware has been updated to support these standard SunSpec features.
| Test Name | File Path | Targeted Issue |
|---|---|---|
| Curtailment Test | curtailment_conformance.json | Active Power limits discarding writes. |
| Reactive Power Test | reactive_power_conformance.json | Var setpoints discarding writes. |
| Heartbeat Test | heartbeat_conformance.json | Safety heartbeat discarding writes. |
| Capacity Test | wmax_conformance.json | M702.WMax ceiling discarding writes. |
| Safety Reversion Test | reversion_conformance.json | Dead-man timer countdown with no physical reversion. |