BESS - EMS Architecture (combined Plant Control and EMS functionality)
This architecture stays simple at the plant-subsystem level (Grid, PV, Wind, BESS) while including the minimum necessary sub-blocks (devices + sensors + control services) to clearly satisfy Plant control and EMS functionality.
The architecture is based on the Spain requirements which extends EMS to include the Plant Control functionality.
1) REQ-EMS traceability (what proves we meet each requirement)
| REQ ID |
Requirement intent |
Primary EMS sub-blocks |
Required subsystem blocks (devices + sensors) |
Key interfaces used as evidence |
| REQ-EMS-01 |
Active power control at PCC |
PCC Tracking Controller, Mode and Compliance Manager, Ramp and Limit Manager, PV-Wind-BESS Coordinator |
CT/PT, PCC meter, PV inverter controller, Wind converter/controller, BESS PCS, asset measurements |
PCC measurements to EMS; EMS dispatch to PV/Wind/PCS; historian curves of PCC P tracking |
| REQ-EMS-02 |
Reactive power / cosphi / voltage mode at PCC |
PCC Tracking Controller, Mode and Compliance Manager, Ramp and Limit Manager, Coordinator |
CT/PT, PCC meter (V, Q), PV/Wind/PCS reactive capability, asset measurements |
PCC V/Q feedback; EMS Q or cosphi setpoints; historian curves showing Q/cosphi tracking |
| REQ-EMS-03 |
Ramp management |
Ramp and Limit Manager, PCC Tracking Controller, Coordinator |
PV/Wind/PCS controllers that accept ramp-limited setpoints; PCC meter |
Ramp-limited setpoint steps; measured dP/dt and dQ/dt from PCC meter and logs |
| REQ-EMS-04 |
PV-BESS coordination |
Coordinator, Ramp and Limit Manager, Mode Manager |
PV inverter controller + measurements; BESS PCS + measurements; BMS (SOC/limits/alarms); Wind controller if present |
Allocation logs; PV curtailment commands; BESS charge/discharge commands; SOC constraint handling evidenced in historian |
| REQ-EMS-05 |
Telemeasurement variables |
Telemetry and Protocol Gateway, Historian and Evidence Pack, Time Sync Service |
PCC meter, breaker/protection IED, PV/Wind/PCS measurements, BMS SOC/limits |
Time-stamped telemetry streams with quality flags and defined variable list |
| REQ-EMS-06 |
Update rate and continuity |
Telemetry Gateway (buffering/quality), Time Sync Service, Managed Switches, Historian |
All measurement sources; operator link |
Demonstrable update rate (e.g., 1–5 s) and gap handling; time sync health; comms-loss events |
| REQ-EMS-07 |
Fault behavior / safe state |
Mode and Compliance Manager (state machine), Alarm and Event Manager, Remote I/O, PCC Tracking Controller |
Breaker/protection IED + status, BMS protections, asset controllers |
Logged fallback transitions; trips/alarms; defined hold/stop behavior; recovery steps |
| REQ-EMS-08 |
Logging and traceability |
Historian and Evidence Pack, Alarm and Event Manager, HMI/Engineering, Cyber and Access Control |
All sources plus configuration items |
Evidence pack with curves, event logs, parameter snapshots, audit trail |
2) System architecture diagram (EMS centric)
flowchart LR
%% =====================
%% External entity
%% =====================
subgraph EXT ["Grid Operator"]
TSO["REE / DSO Control Center"]
end
%% =====================
%% EMS (as validated for Spain Requirement)
%% =====================
subgraph EMS ["EMS"]
subgraph SW ["SW controllers and services"]
ModeMgr["Mode and Compliance Manager<br/>(P/Q/V/cosphi modes, enable/disable, fallback states)"]
PCCLoop["PCC Tracking Controller<br/>(closed-loop tracking using PCC measurements)"]
RampLim["Ramp and Limit Manager<br/>(dP/dt, dQ/dt, caps, priorities, constraints)"]
Alloc["PV-Wind-BESS Coordinator<br/>(allocation, curtailment, charge/discharge split)"]
Telemetry["Telemetry and Protocol Gateway<br/>(operator link + plant comms, buffering, quality flags)"]
Alarm["Alarm and Event Manager<br/>(SOE, state changes, trips, comms alarms)"]
Historian["Historian and Evidence Pack<br/>(logs, curves, parameter snapshots, reports)"]
HMI["Local HMI / Engineering Station<br/>(commissioning, tuning, parameter mgmt)"]
TimeSvc["Time Sync Service<br/>(NTP/PTP client, time health)"]
Sec["Cyber and Access Control<br/>(users/roles, audit, segmentation policies)"]
end
subgraph EMSHW ["Interfaced HW (EMS side)"]
Server["Industrial Controller / Server<br/>(real-time runtime)"]
RemoteIO["Remote I/O<br/>(hardwired status/interlocks)"]
Net["Managed Switches<br/>(VLAN, QoS, redundancy)"]
FW["Firewall / VPN Router<br/>(operator link, segmentation)"]
TimeSrc["Time Source<br/>(GPS or NTP/PTP Grandmaster)"]
end
end
%% =====================
%% Plant subsystems (only devices + sensors needed for control and compliance)
%% =====================
subgraph GRID ["Grid and PCC Subsystem"]
GridLine["Grid line / feeder"]
MainACBus["Main AC Bus / PCC"]
CTPT["CT/PT sensors at PCC"]
PCCMeter["PCC revenue / power-quality meter<br/>(V, I, P, Q, f, energy)"]
BreakerIED["PCC breaker + protection IED<br/>(status, trip, alarms)"]
end
subgraph PV ["PV Generator Subsystem"]
PVACLine["PV AC Line"]
PVInv["PV inverter controller(s)<br/>(P/Q or cosphi commands)"]
PVSense["PV electrical measurements<br/>(P, Q, V, I, status)"]
end
subgraph WIND ["Wind Generator Subsystem"]
WindACLine["Wind AC Line"]
WindConv["Wind turbine converter/controller(s)<br/>(P/Q or cosphi commands)"]
WindSense["Wind electrical measurements<br/>(P, Q, V, I, status)"]
end
subgraph BESS ["BESS Subsystem"]
BessACLine["BESS AC Line"]
PCS["BESS PCS (inverter) controller(s)<br/>(P/Q commands)"]
BessDCLine["BESS DC Line"]
PCSSense["PCS electrical measurements<br/>(P, Q, V, I, status)"]
BMS["BMS<br/>(SOC, limits, alarms, protections)"]
BatteryArray["Battery array / racks<br/>(temperature, voltage, current sensed by BMS)"]
end
%% =====================
%% Power Lines (Electrical Flow)
%% =====================
GridLine === MainACBus
MainACBus === PVACLine
MainACBus === WindACLine
MainACBus === BessACLine
PVACLine === PVInv
WindACLine === WindConv
BessACLine === PCS
PCS === BessDCLine
BessDCLine === BatteryArray
%% Bold orange style for power lines
linkStyle 0,1,2,3,4,5,6,7,8 stroke:orange,stroke-width:4px;
%% =====================
%% Electrical Sensing
%% =====================
CTPT -.- MainACBus
PVSense -.- PVACLine
WindSense -.- WindACLine
PCSSense -.- BessACLine
%% =====================
%% Time and hosting
%% =====================
TimeSrc -->|"time"| TimeSvc
TimeSvc -->|"time status"| Alarm
TimeSvc -->|"time status"| Historian
Server --> ModeMgr
Server --> PCCLoop
Server --> RampLim
Server --> Alloc
Server --> Telemetry
Server --> Alarm
Server --> Historian
FW <--> Net
Net --> Telemetry
Net --> Historian
Net --> HMI
TSO <--> |"telemetry, status, setpoints"| FW
%% =====================
%% Measurement chain (HW -> EMS)
%% =====================
CTPT --> PCCMeter
PCCMeter -->|"PCC V,I,P,Q,f,energy"| Telemetry
BreakerIED -->|"breaker status, trip, alarms"| Telemetry
RemoteIO <--> |"hardwired DI/DO"| BreakerIED
Telemetry -->|"PCC measurements"| PCCLoop
PVSense -->|"PV meas"| Telemetry
WindSense -->|"Wind meas"| Telemetry
PCSSense -->|"PCS meas"| Telemetry
BMS -->|"SOC, limits, alarms"| Telemetry
Telemetry -->|"time-stamped streams"| Historian
Alarm -->|"events and SOE"| Historian
%% =====================
%% Control chain (EMS -> assets)
%% =====================
ModeMgr -->|"selected mode + targets"| PCCLoop
RampLim -->|"ramps + caps + priorities"| PCCLoop
BMS -->|"limits"| RampLim
BMS -->|"limits"| Alloc
PCCLoop -->|"plant-level response"| Alloc
Alloc -->|"P,Q or cosphi setpoints"| PVInv
Alloc -->|"P,Q or cosphi setpoints"| WindConv
Alloc -->|"P,Q setpoints"| PCS
PVInv -->|"status"| PVSense
WindConv -->|"status"| WindSense
PCS -->|"status"| PCSSense
BatteryArray -->|"cell and rack signals"| BMS
3) Functionality of each sub-block
3.1 EMS SW controllers and services
| Sub-block |
Type |
What it does (functional responsibilities) |
| Mode and Compliance Manager |
SW |
Selects operating mode (P, Q, cosphi, voltage), validates enable/disable conditions, manages fallback/safe states and recovery. |
| PCC Tracking Controller |
SW |
Uses PCC meter feedback (P, Q, V, f) to close the loop and generate plant-level response commands that achieve setpoints at PCC. |
| Ramp and Limit Manager |
SW |
Enforces configured ramps and caps; applies constraints (asset limits, SOC limits, thermal limits), and prioritization rules. |
| PV-Wind-BESS Coordinator |
SW |
Splits plant response among PV, Wind, and BESS; curtails PV/Wind and commands BESS charge/discharge to respect PCC limits and constraints. |
| Telemetry and Protocol Gateway |
SW |
Normalizes plant telemetry, applies timestamps and quality flags, buffers and forwards to operator protocol; also ingests remote setpoints/commands. |
| Alarm and Event Manager |
SW |
Monitors alarms, comms loss, state transitions; records sequence-of-events (SOE) with timestamps. |
| Historian and Evidence Pack |
SW |
Stores measurements and events; generates curves, reports, and parameter snapshots for commissioning and compliance evidence. |
| Local HMI / Engineering Station |
SW |
Operator view and commissioning tools: tuning ramps, enabling modes, starting test sequences, exporting reports. |
| Time Sync Service |
SW |
Maintains time synchronization for timestamps; flags drift/loss and propagates time health status. |
| Cyber and Access Control |
SW |
Authentication/authorization, audit logs, configuration change traceability, security policies coordination with firewall/switches. |
3.2 EMS interfaced hardware
| Sub-block |
Type |
Purpose |
| Industrial Controller / Server |
HW |
Hosts the EMS runtime and ensures deterministic control execution and local storage for evidence. |
| Managed Switches |
HW |
Industrial network backbone enabling VLAN segmentation, QoS for control/telemetry, redundancy, and diagnostics. |
| Firewall / VPN Router |
HW |
Segments plant networks and terminates secure operator link; enforces allowed services and remote access policy. |
| Remote I/O |
HW |
Hardwired interface for breaker/interlocks/safety signals and other digital/analog points that must not rely on a comms protocol. |
| Time Source (GPS or NTP/PTP) |
HW |
Provides a stable time reference for compliance-grade timestamps and SOE ordering. |
3.3 Grid and PCC subsystem
| Sub-block |
Type |
Purpose |
| CT/PT sensors |
HW |
Provide electrical sensing inputs (V, I) required to derive P/Q and validate PCC conditions. |
| PCC revenue / PQ meter |
HW |
Primary closed-loop measurement source for P/Q/V/f/energy at PCC (basis for acceptance testing). |
| Breaker + protection IED |
HW |
Provides breaker state, trips, protection alarms, and permissive interlocks; a key input for safe-state logic. |
| Grid line / feeder |
Power |
Represents the point of interconnection; EMS interacts via measurements and breaker status rather than directly controlling the grid. |
3.4 PV generator subsystem
| Sub-block |
Type |
Purpose |
| PV inverter controller(s) |
HW+FW |
Accept plant setpoints (P/Q/cosphi), implement local limits/protections, and provide status feedback. |
| PV electrical measurements |
HW+FW |
Provides P/Q/V/I and inverter status to EMS for allocation verification and telemetry export. |
3.5 Wind generator subsystem
| Sub-block |
Type |
Purpose |
| Wind converter/controller(s) |
HW+FW |
Accept plant setpoints (P/Q/cosphi), apply turbine/drive-train limits, and provide status feedback. |
| Wind electrical measurements |
HW+FW |
Provides P/Q/V/I and converter status to EMS for allocation and telemetry export. |
3.6 BESS subsystem
| Sub-block |
Type |
Purpose |
| BESS PCS controller(s) |
HW+FW |
Executes EMS P/Q setpoints for charging/discharging and reactive support within PCS limits. |
| PCS electrical measurements |
HW+FW |
Provides PCS P/Q/V/I and status (available, faulted, limited) to EMS. |
| BMS |
HW+FW |
Measures SOC, temperatures, cell/rack voltages/currents; computes allowable charge/discharge limits; raises alarms/protections. |
| Battery array / racks |
Power |
Physical storage; EMS does not control cells directly, but is constrained by BMS limits and protections. |
4) Interfaces (nature + signals + physical units)
The table below is written so it can be reused as an interface control document (ICD) starter.
| Interface ID |
From -> To |
Nature |
Medium / protocol (typical) |
Primary signals |
Units / format |
Timing expectations (typical) |
| IF-01 |
CT/PT -> PCC meter |
Electrical sensing |
Copper wiring |
Voltage and current sensing |
kV, A (scaled) |
Continuous analog sampling (meter internal) |
| IF-02 |
PCC meter -> Telemetry Gateway |
Measurement telemetry |
Ethernet, Modbus TCP or IEC 61850 (typical) |
PCC V, I, P, Q, f, energy, quality |
kV, A, MW, MVAr, Hz, MWh; quality flags |
1 s typical; configurable 1–5 s for tests |
| IF-03 |
Breaker/protection IED -> Telemetry Gateway |
Status + alarms |
Ethernet (IEC 61850 GOOSE/MMS, Modbus, or vendor) |
Breaker open/close, trip, protection alarms |
Boolean/enums + timestamps |
100 ms–1 s typical; alarms event-driven |
| IF-04 |
Remote I/O <-> Breaker/IED (or switchgear aux) |
Hardwired DI/DO |
Dry contacts, 24 V DI/DO (typical) |
Interlocks, permissives, E-stop chain, breaker aux |
Boolean |
10–100 ms scan typical |
| IF-05 |
PV inverter ctrl -> Telemetry Gateway |
Measurements + status |
Ethernet (Modbus TCP/IEC 61850/vendor) |
PV P, Q, V, I, availability, limiting |
MW, MVAr, kV, A; enums |
1 s typical |
| IF-06 |
Wind converter ctrl -> Telemetry Gateway |
Measurements + status |
Ethernet (Modbus TCP/IEC 61850/vendor) |
Wind P, Q, V, I, availability, limiting |
MW, MVAr, kV, A; enums |
1 s typical |
| IF-07 |
PCS -> Telemetry Gateway |
Measurements + status |
Ethernet (Modbus TCP/IEC 61850/vendor) |
PCS P, Q, V, I, state, limiting |
MW, MVAr, kV, A; enums |
1 s typical |
| IF-08 |
BMS -> Telemetry Gateway |
Constraints + alarms |
Ethernet (Modbus TCP/vendor) |
SOC, SoH (optional), charge/discharge limits, temps, alarms |
%, %, MW or A; degC; enums |
1–5 s typical; alarms event-driven |
| IF-09 |
Telemetry Gateway -> PCC Tracking Controller |
Control feedback |
Internal SW API / shared memory |
PCC measurements + quality flags |
MW, MVAr, kV, Hz, flags |
Control cycle e.g., 100–500 ms typical |
| IF-10 |
EMS Coordinator -> PV inverter controller |
Dispatch setpoints |
Ethernet (Modbus/IEC 61850/vendor) |
P setpoint, Q setpoint or cosphi target, enable |
MW, MVAr or cosphi; Boolean |
0.5–2 s typical; ramped |
| IF-11 |
EMS Coordinator -> Wind converter controller |
Dispatch setpoints |
Ethernet (Modbus/IEC 61850/vendor) |
P setpoint, Q setpoint or cosphi target, enable |
MW, MVAr or cosphi; Boolean |
0.5–2 s typical; ramped |
| IF-12 |
EMS Coordinator -> PCS |
Dispatch setpoints |
Ethernet (Modbus/IEC 61850/vendor) |
P setpoint (charge/discharge), Q setpoint, enable |
MW, MVAr; Boolean |
0.5–2 s typical; ramped |
| IF-13 |
Time Source -> Time Sync Service |
Time distribution |
NTP or PTP |
Time, sync quality |
UTC time; offset metrics |
Continuous; health checked seconds-minutes |
| IF-14 |
EMS -> Operator (via FW) |
Telemetry export |
IEC 60870-5-104 / ICCP / IEC 61850 (site-defined) |
Variable list: PCC + assets + alarms + modes + SOC |
MW, MVAr, kV, A, Hz, MWh, %, enums, timestamps |
1–5 s typical; event-driven alarms |
| IF-15 |
Operator -> EMS (via FW) |
Remote control |
Same as above |
Mode commands, P/Q/cosphi targets, enable/disable |
MW, MVAr, cosphi; Boolean |
Command/ack within seconds |
| IF-16 |
Telemetry/Alarm -> Historian |
Evidence logging |
Internal SW API |
Time series + SOE + config snapshots |
All above + metadata |
Continuous; tamper-evident storage preferred |
Quick check: where each requirement “lands” in the diagram
- REQ-EMS-01/02/03 (P/Q/cosphi/V + ramps): PCC meter + PCC Tracking Controller + Ramp/Limit + Coordinator + asset controllers
- REQ-EMS-04 (coordination): Coordinator + BMS limits + PV/Wind/PCS setpoint interfaces
- REQ-EMS-05/06 (telemetry variables + continuity): Telemetry Gateway + Time Sync + Historian + managed network
- REQ-EMS-07 (fault/safe state): Mode Manager state machine + breaker/IED + BMS protections + event logs
- REQ-EMS-08 (logging/evidence): Historian/Evidence Pack + alarms/events + parameter snapshots + audits