Intellect PPC
Power Plant Controller; Technical Reference
Architecture, control theory, and implementation details for WATTMORE's integrated PPC.

What Is a Power Plant Controller?
A Power Plant Controller (PPC) is the real time supervisory control system that sits between the grid operator (or site level energy management system) and the individual power conversion equipment (inverters, converters). Every utility scale battery energy storage system (BESS) connected to the transmission or distribution grid requires a PPC to meet interconnection requirements defined by the grid operator, typically governed by IEEE 2800, NERC reliability standards, and the specific Interconnection Agreement (IA) for the site.
The PPC is responsible for ensuring the plant behaves as a single, predictable, grid compliant resource. It accepts high level dispatch commands (MW setpoint, voltage schedule, power factor target) and translates them into individual inverter level P and Q commands while enforcing grid code requirements; frequency response (droop), voltage regulation, ramp rate limits, and protection functions.
PPC Core Responsibilities
What Is an Energy Management System?
An Energy Management System (EMS) is the optimization layer that decides what the battery should do and when. It looks at electricity prices, demand charge schedules, solar forecasts, load patterns, and grid signals to determine the optimal dispatch strategy. The EMS operates on a longer time horizon (seconds to hours) and produces a power setpoint that represents the economically or operationally optimal action.
The EMS handles applications like peak demand shaving (reducing the facility's highest 15 minute power draw to lower demand charges), energy arbitrage (charging when electricity is cheap, discharging when expensive), solar self consumption, backup power management, and participation in wholesale energy markets.
EMS vs PPC; Division of Responsibility
- Determines optimal MW setpoint
- Reads electricity prices and tariffs
- Forecasts load and solar generation
- Manages schedules and time of use windows
- Calculates economic value of dispatch
- Operates on 1s to 15min timescales
- Enforces grid code on EMS setpoint
- Reads POI frequency and voltage
- Applies droop and voltage response
- Limits ramp rates to IA requirements
- Protects battery SOC boundaries
- Operates on 10ms to 100ms timescales
How the EMS and PPC Work Together
The EMS and PPC run as independent processes connected through Redis. The EMS writes a power setpoint; the PPC reads it, applies all grid compliance transformations, and dispatches the result to inverters. This separation ensures the PPC can always enforce safety and grid code requirements regardless of what the EMS requests. If the grid needs emergency frequency support, the PPC overrides the EMS setpoint immediately without waiting for the optimization layer.
System Architecture
PPC Internal Signal Chain
Each control loop iteration, the PPC reads inputs from Redis, processes the setpoint through a fixed sequence of control stages, and writes per inverter commands back to Redis. The stages execute in order; each one transforms the power command before passing it to the next. This cascade architecture ensures grid code compliance is applied deterministically regardless of the upstream dispatch source.
PPC Control Pipeline (per loop iteration)
Frequency Watt Droop Response
Droop control is the primary frequency response mechanism required by virtually all grid codes for utility scale storage. When grid frequency deviates from nominal (60 Hz in North America, 50 Hz elsewhere), the battery injects or absorbs power proportionally to the deviation. This is a fast, autonomous response that does not wait for dispatch commands; it activates within the PPC control loop cycle time (100 ms default).
The droop percentage defines the sensitivity; a 5% droop on a 50 MW plant means the plant delivers full rated power when frequency drops by 5% of nominal (3 Hz on a 60 Hz system). A smaller droop percentage means more aggressive response. The deadband prevents the system from chasing normal frequency noise; the IEEE 2800 default deadband is ±36 mHz.
Droop Calculation
Droop Characteristic Curve
Inside the deadband the plant does not respond to frequency deviations (normal grid noise). Outside the deadband, response is linear with slope Kdroop.
Droop Configuration Parameters
droop_percentDroop slope as a percentage of rated power per nominal frequency. 5% is standard for BESS. Lower values give more aggressive response.
deadband_hzFrequency deviation threshold before response activates. IEEE 2800 default is 0.036 Hz (36 mHz). Prevents response to normal grid frequency noise.
max_response_mwOptional cap on droop output. If unset, defaults to plant rated power. Useful for limiting frequency response to a contracted capacity.
bypass_ramp_limiterWhen true, droop response bypasses the ramp rate limiter for fastest possible frequency support. Most grid codes require this.
Voltage and Reactive Power Control
Reactive power (Q, measured in MVAR) controls voltage at the point of interconnection. Unlike active power which transfers real energy, reactive power manages the electromagnetic field relationships in AC systems. Grid operators require BESS plants to support POI voltage through one of three modes, selectable based on the interconnection agreement.
Mode 1; Constant Power Factor
Q follows P to maintain a fixed power factor. Leading (capacitive) Q injects reactive power; lagging (inductive) absorbs it.
Mode 2; Voltage Regulation (PI)
A PI controller adjusts Q to hold POI voltage at a setpoint (typically 1.0 pu). A deadband prevents hunting around the target.
Mode 3; Volt VAR Curve
A piecewise linear Q(V) characteristic curve. Four voltage breakpoints define the shape. Q is positive (inject) at low voltage, zero in the deadband, negative (absorb) at high voltage.
Q Rate Limiting
All three voltage modes share a common output rate limiter. The Q command is slew rate limited to prevent sudden reactive power swings that could cause POI voltage transients. Default limit is 5 MVAR/s, configurable per interconnection agreement. The rate limiter applies after mode calculation but before the command is written to inverters.
Ramp Rate Limiting
Interconnection agreements specify maximum rates of change for active power, typically in MW/min. This prevents the BESS from causing sudden power swings on the grid that could affect power quality for other connected customers. Separate up and down rates can be configured since some grid codes have asymmetric requirements (e.g., faster ramp down for safety, slower ramp up to prevent voltage sags).
Ramp Limiter Algorithm
When droop response is active and bypass_ramp_limiter is enabled, the ramp limiter is bypassed entirely so the plant can deliver full speed frequency support. This is standard practice; grid frequency events require sub second response, and the interconnection ramp limit is intended for economic dispatch changes, not emergency grid support.
State of Charge Protection
The SOC limiter protects the battery from over discharge and over charge by smoothly derating power commands as SOC approaches the configured boundaries. This uses a soft/hard limit system; between the soft and hard limit, available power ramps linearly from 100% to 0%. This prevents sudden power cutoffs that would violate ramp rate requirements and provides a smooth degradation curve.
SOC Limit Regions
Derating Formulas
Fleet Dispatch and Inverter Allocation
After the PPC computes the final plant level P and Q commands, the fleet allocator distributes these across all online inverters. Faulted inverters are excluded from allocation, and their commands are set to zero. Three allocation strategies are available.
Equal Distribution
Divides plant command equally among all online inverters, clamped to each inverter's rating. Simplest strategy; works well when all inverters are identical.
Proportional Distribution
Allocates proportionally to each inverter's rated capacity. Useful for mixed fleets with different inverter sizes.
Priority Distribution
Fills inverters sequentially to capacity before moving to the next. Minimizes active inverters; useful for maintenance windows or efficiency optimization.
Redis Data Flow and Key Map
The PPC reads all inputs from Redis (published by the DAQ service) and writes all outputs to Redis (consumed by the PCS actuator and monitoring). It never connects directly to any hardware device. This architecture means the PPC can be stopped, started, or restarted without affecting data acquisition or device communication.
Redis Keys Used by PPC
| Key | Direction | Description |
|---|---|---|
| {poi_meter}:latest | Read | POI frequency, voltage, power (from DAQ) |
| {bms}:latest | Read | Battery SOC, voltage, temperature (from DAQ) |
| controller:power_setpoint | Read | EMS active power setpoint in watts |
| ppc:p_setpoint_w | Read | PPC specific setpoint override (optional) |
| ppc:curtailment_mw | Read | Grid operator curtailment ceiling |
| ppc:p_cmd_w | Write | Plant level active power command |
| ppc:q_cmd_var | Write | Plant level reactive power command |
| ppc:inverter:{id} | Write | Per inverter P/Q commands (fleet dispatch) |
| ppc:status | Write | Service status, live readings, loop count |
Glossary of Terms
Power Plant Controller. The real time supervisory controller for the entire BESS plant.
Energy Management System. Optimization layer that determines what the battery should do.
Point of Interconnection. The electrical boundary where the plant connects to the grid.
Battery Energy Storage System. The complete storage plant including batteries, inverters, and controls.
Power Conversion System. The inverter/converter that converts DC battery power to AC grid power.
Battery Management System. Monitors cell voltages, temperatures, and SOC; enforces battery safety limits.
State of Charge. Battery energy level as a percentage (0% = empty, 100% = full).
Megawatt. Unit of active (real) power. 1 MW = 1,000 kW.
Mega Volt Ampere Reactive. Unit of reactive power, which controls voltage.
Per unit. Normalized value where 1.0 = nominal. Used for voltage (1.0 pu = rated voltage).
Proportional frequency response characteristic. Slope defines MW response per Hz deviation.
Frequency range around nominal where no droop response occurs (filters grid noise).
Power Factor. Ratio of real power to apparent power. PF = P / sqrt(P² + Q²). Range 0 to 1.
Automatic Generation Control. Grid operator signal that dynamically adjusts plant output for area frequency regulation.
Interconnection Agreement. Contract between plant owner and utility defining technical requirements.
Standard for interconnection of inverter based resources. Defines frequency/voltage response requirements.
Ready to Deploy Intellect PPC?
Intellect Operate integrates EMS, SCADA, and PPC in a single platform. One deployment, one interface, one support team.