Grid Limits Steering
While Cosmos EMS is always safeguarding the site's contractual and physical grid limits, there are plenty of scenarios for energy trading and site optimization where it is desirable to temporarily alter the grid limits (within the contractual and physical limits). Sending limits outside the bounds of the contractual and physical limits will not be followed.
Signal processing
It is important to know that a grid limit violation is processed in a specific order:
- Adjust ESS as much as possible
- Adjust PV if necessary or possible
The reason that we implemented it this way is that a battery is a more flexible and dependable asset, where it is easier to guarantee that a setpoint is followed. If the battery cannot, or only partially, handle the violation, we also adjust the PV setpoints. We also proactively uncurtail if there is room within the grid limits. This ensures that we use PV as much as possible.
Scenario 1: Narrowing the grid limits
When working with dynamic energy contracts, or the dynamic prices of e.g. the imbalance market, it can be benificial to temporarily narrow the grid limits, to limit the consumption, delivery or both.
Scenario 2: Minimum grid delivery/consumption
The grid limits steering can be used to force a minimum delivery and consumption value.
- Contractual limits:
- Lower limit: -200kW
- Upper limit: 200kW
- Payload:
- Upper limit: -100kW
- Result:
- There site will stay between the bounds of -200kW and -100kW, always at least delivering back 100kW
Payload
For the payload, either the upperLimit or lowerLimit or both need to be defined.
interface GridTargetSteeringRequest {
upperLimit?: PowerValue; // either lower limit or upper limit or both need to be defined
lowerLimit?: PowerValue; // either lower limit or upper limit or both need to be defined
validFrom?: number; // If not specified, the setting will be applied immediately.
validUntil: number;
}
interface PowerValue {
value: number;
unit: 'W' | 'kW' | 'MW';
}
Example payload
// POST /sites/ste_19TH6nLcjKlb/steering/grid-limits
{
"upperLimit": {
"value": 100000,
"unit": "W"
},
"lowerLimit": {
"value": 100000,
"unit": "W"
},
"validUntil": 1720699996562 // End of quarter
}
Using a delete request, the grid limits signal can be cancelled / unset.
The response will be the same payload that was sent, with an additional request ID. This ID is used to identify the request in the logs and is there for both parties (debugging, support, etc).