-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement minTargetP and maxTargetP from ActivePowerControl extension #1043
Conversation
2b28410
to
43ea581
Compare
43ea581
to
db34142
Compare
Signed-off-by: VIDAL Didier (Externe) <didier.vidal_externe@rte-france.com>
db34142
to
53b1117
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please align namings, (both in PR description and in code), this would make things consistent / less confusing:
- the iIDM extension is ActivePowerControl, not ActivePowerOperation
- activePowerOperationMinP contains redundant information "activePower" and "P", same for activePowerOperationMaxP. Please find a better name (why not just name maxPOverride just like in the iIDM extension?)
- in the iIDM extension we have minPOverride, why change in OLF the name to operationMinP ?
- in PR description is mentionned also "temporary" min/max P, now we have 3 terms override, temporary, operational
- I have the list of where the override is applied if existing, I lack the list of the places where it is not used - and the rationale for not using it.
Before working on naming, vocabulary standardization and synonym eradication, I'd like to first address this question. The purpose of this PR is that we have for generators some pmin and pmax that we consider the specification of the generator, independant of any condition, and some other limits (called in the extension pMinOverride and pMaOverride) that specify how much the generator can move in the current context. So we end up with the two concepts: In this PR, the usage of the limits are as follow. The choices can be challenged and discussed - except for compensation where it is important to use the "effective" maxP/minP slackBusSelection: absolute maxP compensation: effective minP/maxP |
Thanks, clarifies what you want to achieve. You mention:
Looking at powsybl/powsybl-core#3054 there is not concept here of more restrictive limits, only an override, which by its naming alone suggests a complete replacement: i.e. it can restrict the range, but can also extend the range, and can also replace with a completely disjoint range. I am OK with the choices you made on when to use generator Pmin/Pmax vs. when to use generator Pmin/Pmax override. I am OK also for both override possible interpretations: Currently a. is implemented in this PR, please confirm this is what you ant to do. If you want b. instead some of the code needs to be revisited (also maybe on the powsybl-core extension side). |
Yes. That is a very good point. If you agree with that, then I can propose naming as a next steps. |
|
Renaming done. Won't compile until new release of powsyble-core is done that includes the renaming in the extension. |
Signed-off-by: Didier Vidal <didier.vidal_externe@rte-france.com>
Signed-off-by: Didier Vidal <didier.vidal_externe@rte-france.com>
@@ -93,6 +93,20 @@ public double getMaxP() { | |||
return getBattery().getMaxP() / PerUnit.SB; | |||
} | |||
|
|||
@Override | |||
public double getMinTargetP() { | |||
Battery battery = getBattery(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you prefer to do everything here rather than do it at creation through 2 attributes? Same remark for generator impl.
Signed-off-by: Anne Tilloy <anne.tilloy@rte-france.com>
Signed-off-by: Anne Tilloy <anne.tilloy@rte-france.com>
Signed-off-by: Anne Tilloy <anne.tilloy@rte-france.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot @jeandemanged, as usual.
|
It implements powsybl/powsybl-core#3054 for OpenLoadFlow
Please check if the PR fulfills these requirements
Does this PR already have an issue describing the problem?
In some situations the actual pMin and pMax that can be used for Active Power Operation is different from the group capabilities.
powsybl/powsybl-core#3054 enables to capture these temporary active power limitations in the AtivePowerOperation extension.
This PR implements this override in openloadflow.
What kind of change does this PR introduce?
The generators genuine pmin and pmax are still used in operations that are not related to active power operations (such as deetermining if a generator is really up and can control voltage).
But in all situations related to power operations such as slakc distribution, generator change and related details such as slack bus selection, the pMin and PMAx can be overridden by the Active Power Operation extension.
At implementation, these overridable values are called activePowerOperationMinP and activePowerOperationMaxP
What is the current behavior?
Impossible to define a temporary limit for Pmin and PMax to be used in active power operations.
What is the new behavior (if this is a feature change)?
No change by default, but if pMin and pMax are overridden in the Active Power Operations, these values are taken into account for compensation operations and generator actions (if p limits are to be checked for these actions).
Does this PR introduce a breaking change or deprecate an API?
What changes might users need to make in their application due to this PR? (migration steps)
Application developers should be aware the pMin and pMax can be overriden in the Active Power Control Operation Extension
for example to enable users to change temorary pMin or pMax, to display those limits, or to import generator data fro exetrnal datasources..