-
Notifications
You must be signed in to change notification settings - Fork 43
IIDM ‐ XIIDM ‐ JIIDM 1.12 evolutions
TODO
TODO
- In node/breaker topology:
<iidm:voltageLevel id="VL1" nominalV="400.0" topologyKind="NODE_BREAKER">
<iidm:nodeBreakerTopology>
<!-- ... -->
</iidm:nodeBreakerTopology>
<iidm:ground id="GroundNB" name="GroundNB" node="6"/>
</iidm:voltageLevel>
- In bus/breaker topology:
<iidm:voltageLevel id="VL2" nominalV="220.0" topologyKind="BUS_BREAKER">
<iidm:busBreakerTopology>
<!-- ... -->
</iidm:busBreakerTopology>
<iidm:ground id="GroundBB" name="GroundBB" bus="BUS2" connectableBus="BUS2"/>
</iidm:voltageLevel>
Reactive power control mode was added to ratio tap changers:
- RTC
regulationMode
was introduced (with methodsgetRegulationMode
/setRegulationMode
). The possible values areVOLTAGE
orREACTIVE_POWER
; -
targetV
becomesregulationValue
(with methodsgetRegulationValue
/setRegulationValue
); -
getTargetV
andsetTargetV
were kept as shortcuts as follows. They also ensure backward compatibility:-
setTargetV
automatically switches mode to VOLTAGE (if new targetV is not NaN); -
getTargetV
returns NaN if mode is not VOLTAGE.
-
- In voltage control mode:
<iidm:ratioTapChanger lowTapPosition="0" tapPosition="1" targetDeadband="0.0" loadTapChangingCapabilities="true" regulating="true" regulationMode="VOLTAGE" regulationValue="158.0">
<iidm:terminalRef id="NHV2_NLOAD" side="TWO"/>
<iidm:step r="0.0" x="0.0" g="0.0" b="0.0" rho="0.85"/>
<iidm:step r="0.0" x="0.0" g="0.0" b="0.0" rho="1.00"/>
<iidm:step r="0.0" x="0.0" g="0.0" b="0.0" rho="1.15"/>
</iidm:ratioTapChanger>
- In reactive power control mode:
<iidm:ratioTapChanger regulating="true" lowTapPosition="0" tapPosition="0" targetDeadband="0.0" loadTapChangingCapabilities="true" regulationMode="REACTIVE_POWER" regulationValue="-10.0">
<iidm:terminalRef id="T2wT" side="TWO"/>
<iidm:step r="0.1089" x="0.01089" g="0.8264462809917356" b="0.08264462809917356" rho="0.9"/>
</iidm:ratioTapChanger>
It is now forbidden to create operational limits with temporary limits only, a permanent limit is required: an exception is thrown.
To provide backward compatibility with previous IIDM versions, when the permanent limit is missing and temporary limits are present, the following policy is applied:
- if there is a temporary limit with an infinite acceptable duration, its value is used as permanent limit and the said temporary limit is removed;
- else, the permanent limit is computed as a certain percentage of the minimum temporary limits' value: the default percentage is 100%; for IIDM/JIIDM imports, it could be changed using the
iidm.import.xml.missing-permanent-limit-percentage
parameter.
For each network element side:
Instead of having objects for currentLimits
, activePowerLimits
and apparentPowerLimits
directly on the network element, they are grouped together in an operationalLimitsGroup
object which have an ID.
There can be several operationalLimitsGroup
objects but only one is used for limit violations detection. The ID of this "selected" OperationLimitsGroup is indicated by an attribute of the network element.
<iidm:line id="NHV1_NHV2_2" r="3.0" x="33.0" g1="0.0" b1="1.93E-4" g2="0.0" b2="1.93E-4" bus1="NHV1" connectableBus1="NHV1" voltageLevelId1="VLHV1" bus2="NHV2" connectableBus2="NHV2" voltageLevelId2="VLHV2">
<iidm:activePowerLimits1 permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:activePowerLimits1>
<iidm:apparentPowerLimits1 permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:apparentPowerLimits1>
<iidm:currentLimits1 permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:currentLimits1>
<iidm:activePowerLimits2 permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:activePowerLimits2>
<iidm:apparentPowerLimits2 permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:apparentPowerLimits2>
<iidm:currentLimits2 permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:currentLimits2>
</iidm:line>
<iidm:line id="NHV1_NHV2_2" r="3.0" x="33.0" g1="0.0" b1="1.93E-4" g2="0.0" b2="1.93E-4" bus1="NHV1"
connectableBus1="NHV1" voltageLevelId1="VLHV1" bus2="NHV2" connectableBus2="NHV2"
voltageLevelId2="VLHV2" selectedOperationalLimitsGroupId1="DEFAULT" selectedOperationalLimitsGroupId2="DEFAULT">
<iidm:operationalLimitsGroup1 id="DEFAULT">
<iidm:activePowerLimits permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:activePowerLimits>
<iidm:apparentPowerLimits permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:apparentPowerLimits>
<iidm:currentLimits permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:currentLimits>
</iidm:operationalLimitsGroup1>
<iidm:operationalLimitsGroup2 id="DEFAULT">
<iidm:activePowerLimits permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:activePowerLimits>
<iidm:apparentPowerLimits permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:apparentPowerLimits>
<iidm:currentLimits permanentLimit="350.0">
<iidm:temporaryLimit name="20'" acceptableDuration="1200" value="370.0"/>
<iidm:temporaryLimit name="10'" acceptableDuration="600" value="380.0"/>
</iidm:currentLimits>
</iidm:operationalLimitsGroup2>
</iidm:line>
Operational limits are grouped by side in 2 objects operationalLimitsGroup1
(for side 1) and operationalLimitsGroup2
(for side 2). Here, both groups are called with the default id DEFAULT
. They are defined as the selected group on both sides with the attributes selectedOperationalLimitsGroupId1="DEFAULT" selectedOperationalLimitsGroupId2="DEFAULT"
.
When there are several groups for a side n, they are listed using several operationalLimitsGroup
n objects. For instance, if a line has the operational limit groups A
and B
on side 1 and the groups G1
and G2
on side two, the XIIDM will look like:
<iidm:line id="NHV1_NHV2_2" r="3.0" x="33.0" g1="0.0" b1="1.93E-4" g2="0.0" b2="1.93E-4" bus1="NHV1"
connectableBus1="NHV1" voltageLevelId1="VLHV1" bus2="NHV2" connectableBus2="NHV2"
voltageLevelId2="VLHV2" selectedOperationalLimitsGroupId1="A" selectedOperationalLimitsGroupId2="G2">
<iidm:operationalLimitsGroup1 id="A">
<!-- ... -->
</iidm:operationalLimitsGroup1>
<iidm:operationalLimitsGroup1 id="B">
<!-- ... -->
</iidm:operationalLimitsGroup1>
<iidm:operationalLimitsGroup2 id="G1">
<!-- ... -->
</iidm:operationalLimitsGroup2>
<iidm:operationalLimitsGroup2 id="G2">
<!-- ... -->
</iidm:operationalLimitsGroup2>
</iidm:line>
TODO or delete