Functional Block: R
Types Reference: Shared types referenced below are defined in OCPP-2.1-DataTypes.md.
Types used only within this block are documented inline below.
#Messages
- GetDERControl (CSMS → CS)
- SetDERControl (CSMS → CS)
- ClearDERControl (CSMS → CS)
- ReportDERControl (CS → CSMS)
- NotifyDERAlarm (CS → CSMS)
- NotifyDERStartStop (CS → CSMS)
#GetDERControl
Direction: CSMS → CS
#GetDERControlRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
requestId |
integer | Yes | RequestId to be used in ReportDERControlRequest. | |
controlId |
string | No | maxLength: 36 | Id of setting to get. When omitted all settings for controlType are retrieved. |
controlType |
DERControlEnumType | No | ||
isDefault |
boolean | No | True: get a default DER control. False: get a scheduled control. | |
customData |
CustomDataType | No |
Example GetDERControlRequest
{
"requestId": 0
}
#GetDERControlResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
DERControlStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#SetDERControl
Direction: CSMS → CS
#SetDERControlRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
controlId |
string | Yes | maxLength: 36 | Unique id of this control, e.g. UUID |
controlType |
DERControlEnumType | Yes | ||
isDefault |
boolean | Yes | True if this is a default DER control | |
curve |
DERCurveType | No | ||
enterService |
EnterServiceType | No | ||
fixedPFAbsorb |
FixedPFType | No | ||
fixedPFInject |
FixedPFType | No | ||
fixedVar |
FixedVarType | No | ||
freqDroop |
FreqDroopType | No | ||
gradient |
GradientType | No | ||
limitMaxDischarge |
LimitMaxDischargeType | No | ||
customData |
CustomDataType | No |
Example SetDERControlRequest
{
"controlId": "string",
"controlType": "EnterService",
"isDefault": false
}
#SetDERControlResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
DERControlStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
supersededIds |
string[] | No | minItems: 1, maxItems: 24 | List of controlIds that are superseded as a result of setting this control. |
customData |
CustomDataType | No |
#ClearDERControl
Direction: CSMS → CS
#ClearDERControlRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
isDefault |
boolean | Yes | True: clearing default DER controls. False: clearing scheduled controls. | |
controlId |
string | No | maxLength: 36 | Id of control setting to clear. When omitted all settings for controlType are cleared. |
controlType |
DERControlEnumType | No | ||
customData |
CustomDataType | No |
Example ClearDERControlRequest
{
"isDefault": false
}
#ClearDERControlResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
DERControlStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#ReportDERControl
Direction: CS → CSMS
#ReportDERControlRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
requestId |
integer | Yes | RequestId from GetDERControlRequest. | |
curve |
DERCurveGetType[] | No | minItems: 1, maxItems: 24 | |
enterService |
EnterServiceGetType[] | No | minItems: 1, maxItems: 24 | |
fixedPFAbsorb |
FixedPFGetType[] | No | minItems: 1, maxItems: 24 | |
fixedPFInject |
FixedPFGetType[] | No | minItems: 1, maxItems: 24 | |
fixedVar |
FixedVarGetType[] | No | minItems: 1, maxItems: 24 | |
freqDroop |
FreqDroopGetType[] | No | minItems: 1, maxItems: 24 | |
gradient |
GradientGetType[] | No | minItems: 1, maxItems: 24 | |
limitMaxDischarge |
LimitMaxDischargeGetType[] | No | minItems: 1, maxItems: 24 | |
tbc |
boolean | No | To Be Continued. Default value when omitted: false. + False indicates that there are no further messages as part of this report. | |
customData |
CustomDataType | No |
Example ReportDERControlRequest
{
"requestId": 0
}
#ReportDERControlResponse
No required fields. An empty {} is a valid response.
#NotifyDERAlarm
Direction: CS → CSMS
#NotifyDERAlarmRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
controlType |
DERControlEnumType | Yes | ||
timestamp |
string (date-time) | Yes | Time of start or end of alarm. | |
alarmEnded |
boolean | No | True when error condition has ended. Absent or false when alarm has started. | |
extraInfo |
string | No | maxLength: 200 | Optional info provided by EV. |
gridEventFault |
GridEventFaultEnumType | No | ||
customData |
CustomDataType | No |
Example NotifyDERAlarmRequest
{
"controlType": "EnterService",
"timestamp": "2024-01-15T10:30:00Z"
}
#NotifyDERAlarmResponse
No required fields. An empty {} is a valid response.
#NotifyDERStartStop
Direction: CS → CSMS
#NotifyDERStartStopRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
controlId |
string | Yes | maxLength: 36 | Id of the started or stopped DER control. Corresponds to the controlId of the SetDERControlRequest. |
started |
boolean | Yes | True if DER control has started. False if it has ended. | |
timestamp |
string (date-time) | Yes | Time of start or end of event. | |
supersededIds |
string[] | No | minItems: 1, maxItems: 24 | List of controlIds that are superseded as a result of this control starting. |
customData |
CustomDataType | No |
Example NotifyDERStartStopRequest
{
"controlId": "string",
"started": false,
"timestamp": "2024-01-15T10:30:00Z"
}
#NotifyDERStartStopResponse
No required fields. An empty {} is a valid response.
#Local Types
Types used only within this block's messages.
#DERUnitEnumType
Unit of the Y-axis of DER curve
| Value |
|---|
Not_Applicable |
PctMaxW |
PctMaxVar |
PctWAvail |
PctVarAvail |
PctEffectiveV |
Used in: ReportDERControl, SetDERControl
#GridEventFaultEnumType
Type of grid event that caused this
| Value |
|---|
CurrentImbalance |
LocalEmergency |
LowInputPower |
OverCurrent |
OverFrequency |
OverVoltage |
PhaseRotation |
RemoteEmergency |
UnderFrequency |
UnderVoltage |
VoltageImbalance |
Used in: NotifyDERAlarm
#PowerDuringCessationEnumType
Parameter is only sent, if the EV has to feed-in power or reactive power during fault-ride through (FRT) as defined by HVMomCess curve and LVMomCess curve.
| Value |
|---|
Active |
Reactive |
Used in: ReportDERControl, SetDERControl
#DERCurveGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
curve |
DERCurveType | Yes | ||
curveType |
DERControlEnumType | Yes | ||
id |
string | Yes | maxLength: 36 | Id of DER curve |
isDefault |
boolean | Yes | True if this is a default curve | |
isSuperseded |
boolean | Yes | True if this setting is superseded by a higher priority setting (i.e. lower value of priority) | |
customData |
CustomDataType | No |
Used in: ReportDERControl
#DERCurvePointsType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
x |
number | Yes | The data value of the X-axis (independent) variable, depending on the curve type. | |
y |
number | Yes | The data value of the Y-axis (dependent) variable, depending on the of the curve. If y is power factor, then a positive value means DER is absorbing reactive power (under-excited), a negative value when DER is injecting reactive power (over-excited). | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#DERCurveType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
curveData |
DERCurvePointsType[] | Yes | minItems: 1, maxItems: 10 | |
priority |
integer | Yes | min: 0.0 | Priority of curve (0=highest) |
yUnit |
DERUnitEnumType | Yes | ||
duration |
number | No | Duration in seconds that this curve will be active. Only absent when default is true. | |
hysteresis |
HysteresisType | No | ||
reactivePowerParams |
ReactivePowerParamsType | No | ||
responseTime |
number | No | Open loop response time, the time to ramp up to 90% of the new target in response to the change in voltage, in seconds. A value of 0 is used to mean no limit. When not present, the device should follow its default behavior. | |
startTime |
string (date-time) | No | Point in time when this curve will become activated. Only absent when default is true. | |
voltageParams |
VoltageParamsType | No | ||
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#EnterServiceGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
enterService |
EnterServiceType | Yes | ||
id |
string | Yes | maxLength: 36 | Id of setting |
customData |
CustomDataType | No |
Used in: ReportDERControl
#EnterServiceType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
highFreq |
number | Yes | Enter service frequency high | |
highVoltage |
number | Yes | Enter service voltage high | |
lowFreq |
number | Yes | Enter service frequency low | |
lowVoltage |
number | Yes | Enter service voltage low | |
priority |
integer | Yes | min: 0.0 | Priority of setting (0=highest) |
delay |
number | No | Enter service delay | |
rampRate |
number | No | Enter service ramp rate in seconds | |
randomDelay |
number | No | Enter service randomized delay | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#FixedPFGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
fixedPF |
FixedPFType | Yes | ||
id |
string | Yes | maxLength: 36 | Id of setting. |
isDefault |
boolean | Yes | True if setting is a default control. | |
isSuperseded |
boolean | Yes | True if this setting is superseded by a lower priority setting. | |
customData |
CustomDataType | No |
Used in: ReportDERControl
#FixedPFType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
displacement |
number | Yes | Power factor, cos(phi), as value between 0..1. | |
excitation |
boolean | Yes | True when absorbing reactive power (under-excited), false when injecting reactive power (over-excited). | |
priority |
integer | Yes | min: 0.0 | Priority of setting (0=highest) |
duration |
number | No | Duration in seconds that this setting is active. | |
startTime |
string (date-time) | No | Time when this setting becomes active | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#FixedVarGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
fixedVar |
FixedVarType | Yes | ||
id |
string | Yes | maxLength: 36 | Id of setting |
isDefault |
boolean | Yes | True if setting is a default control. | |
isSuperseded |
boolean | Yes | True if this setting is superseded by a lower priority setting | |
customData |
CustomDataType | No |
Used in: ReportDERControl
#FixedVarType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
priority |
integer | Yes | min: 0.0 | Priority of setting (0=highest) |
setpoint |
number | Yes | The value specifies a target var output interpreted as a signed percentage (-100 to 100). A negative value refers to charging, whereas a positive one refers to discharging. The value type is determined by the unit field. | |
unit |
DERUnitEnumType | Yes | ||
duration |
number | No | Duration in seconds that this setting is active. | |
startTime |
string (date-time) | No | Time when this setting becomes active. | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#FreqDroopGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
freqDroop |
FreqDroopType | Yes | ||
id |
string | Yes | maxLength: 36 | Id of setting |
isDefault |
boolean | Yes | True if setting is a default control. | |
isSuperseded |
boolean | Yes | True if this setting is superseded by a higher priority setting (i.e. lower value of priority) | |
customData |
CustomDataType | No |
Used in: ReportDERControl
#FreqDroopType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
overDroop |
number | Yes | Over-frequency droop per unit, oFDroop | |
overFreq |
number | Yes | Over-frequency start of droop | |
priority |
integer | Yes | min: 0.0 | Priority of setting (0=highest) |
responseTime |
number | Yes | Open loop response time in seconds | |
underDroop |
number | Yes | Under-frequency droop per unit, uFDroop | |
underFreq |
number | Yes | Under-frequency start of droop | |
duration |
number | No | Duration in seconds that this setting is active | |
startTime |
string (date-time) | No | Time when this setting becomes active | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#GradientGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
gradient |
GradientType | Yes | ||
id |
string | Yes | maxLength: 36 | Id of setting |
customData |
CustomDataType | No |
Used in: ReportDERControl
#GradientType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
gradient |
number | Yes | Default ramp rate in seconds (0 if not applicable) | |
priority |
integer | Yes | min: 0.0 | Id of setting |
softGradient |
number | Yes | Soft-start ramp rate in seconds (0 if not applicable) | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#HysteresisType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
hysteresisDelay |
number | No | Delay in seconds, once grid parameter within HysteresisLow and HysteresisHigh, for the EV to return to normal operation after a grid event. | |
hysteresisGradient |
number | No | Set default rate of change (ramp rate %/s) for the EV to return to normal operation after a grid event | |
hysteresisHigh |
number | No | High value for return to normal operation after a grid event, in absolute value. This value adopts the same unit as defined by yUnit | |
hysteresisLow |
number | No | Low value for return to normal operation after a grid event, in absolute value. This value adopts the same unit as defined by yUnit | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#LimitMaxDischargeGetType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id |
string | Yes | maxLength: 36 | Id of setting |
isDefault |
boolean | Yes | True if setting is a default control. | |
isSuperseded |
boolean | Yes | True if this setting is superseded by a higher priority setting (i.e. lower value of priority) | |
limitMaxDischarge |
LimitMaxDischargeType | Yes | ||
customData |
CustomDataType | No |
Used in: ReportDERControl
#LimitMaxDischargeType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
priority |
integer | Yes | min: 0.0 | Priority of setting (0=highest) |
duration |
number | No | Duration in seconds that this setting is active | |
pctMaxDischargePower |
number | No | Only for PowerMonitoring. + The value specifies a percentage (0 to 100) of the rated maximum discharge power of EV. The PowerMonitoring curve becomes active when power exceeds this percentage. | |
powerMonitoringMustTrip |
DERCurveType | No | ||
startTime |
string (date-time) | No | Time when this setting becomes active | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#ReactivePowerParamsType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
autonomousVRefEnable |
boolean | No | Only for VoltVar: Enable/disable autonomous VRef adjustment | |
autonomousVRefTimeConstant |
number | No | Only for VoltVar: Adjustment range for VRef time constant | |
vRef |
number | No | Only for VoltVar curve: The nominal ac voltage (rms) adjustment to the voltage curve points for Volt-Var curves (percentage). | |
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl
#VoltageParamsType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
hv10MinMeanTripDelay |
number | No | Time for which the voltage is allowed to stay above the 10 min mean value. After this time, the EV must trip. This value is mandatory if OverVoltageMeanValue10min is set. | |
hv10MinMeanValue |
number | No | EN 50549-1 chapter 4.9.3.4 Voltage threshold for the 10 min time window mean value monitoring. The 10 min mean is recalculated up to every 3 s. If the present voltage is above this threshold for more than the time defined by hv10MinMeanValue, the EV must trip. This value is mandatory if hv10MinMeanTripDelay is set. | |
powerDuringCessation |
PowerDuringCessationEnumType | No | ||
customData |
CustomDataType | No |
Used in: ReportDERControl, SetDERControl