Integration guide
The CBEB 300 is a grid-forming battery container. Its dispatch is driven by demand-response signals, so the EMS does not write power setpoints over Modbus. The EMS writes WSetEna once to turn the container on, then polls a small set of SunSpec points for headroom and state of charge.
Before you start integrating, contact support@c-battery.technology so we can walk through your scope together. The operational mode you target (off-grid vs on-grid) can change how the BESS is controlled, and aligning this up front avoids rework later.
At a glance
| Property | Value |
|---|---|
| Protocol | SunSpec over Modbus TCP |
| Port | 502 |
| Base address | 40000 |
| Models implemented | 1, 701, 704, 713, 714, 802 |
| Device type | Grid-forming BESS container |
| EMS control surface | Write WSetEna to turn the container on. WSet is not written. |
The CBEB 300 uses the same SunSpec model layout as the 75 kWh rack, at the same register addresses. The difference is operational: Model 704 is present, but the EMS-facing role of the CBEB 300 is observation rather than control.
What the EMS writes (and doesn't)
The container manages its own dispatch through demand-response signals, so the EMS does not need to write a power setpoint. The only Model 704 write the EMS performs is:
| Register | Address | Value | Meaning |
|---|---|---|---|
WSetEna | 40299 | 1 | Turn the container on. Set once after commissioning; the rack remembers the setting. |
WSetEna | 40299 | 0 | Turn the container off (e.g. for maintenance). |
WSet (40301–40302) is not written by the EMS on the CBEB 300. Dispatch is handled by the container itself.
Registers the EMS should read
Five points cover the entire EMS integration:
| Register | Point | Model | Type | Meaning |
|---|---|---|---|---|
40348 | SoC | 713 | uint16 | State of charge (%). Scaled by Pct_SF = -1. |
40358 | DCA | 714 | int16 | Battery DC current (A). Scaled by DCA_SF = -1. |
40359 | DCW | 714 | int16 | Battery DC power (W). Scaled by DCW_SF = 2. Positive = discharge, negative = charge. |
40411 | WChaRteMax | 802 | uint16 | Max charge power (W) the container can currently accept. Scaled by WChaDisChaMax_SF = 2. |
40412 | WDisChaRteMax | 802 | uint16 | Max discharge power (W) the container can currently deliver. Scaled by WChaDisChaMax_SF = 2. |
WChaRteMax and WDisChaRteMax are dynamic: they reflect the headroom available right now (taking into account SoC, temperature, and other live limits). Re-read them at whatever cadence your EMS uses for decisions; do not cache the values across long intervals.
For the full register listing (Model 1, 701, 704, 713, 714, 802) see the 75 kWh rack register map; the addresses and scale factors are identical.
These five points, polled at the cadence your EMS needs, cover the complete CBEB 300 integration surface.