Skip to content

IIDM ‐ XIIDM ‐ JIIDM 1.12 evolutions

Olivier Perrin edited this page Jan 19, 2024 · 5 revisions

Features

Automation systems: Overload management system

TODO

New "Ground" injection

TODO

Examples, in XIIDM

  • 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>

Ratio tap changers in reactive power control mode

Reactive power control mode was added to ratio tap changers:

  • RTC regulationMode was introduced (with methods getRegulationMode / setRegulationMode). The possible values are VOLTAGE or REACTIVE_POWER;
  • targetV becomes regulationValue(with methods getRegulationValue / setRegulationValue);
  • getTargetV and setTargetV 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.

Examples, in XIIDM

  • 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>

Permanent limit mandatory in presence of temporary limits

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.

Operational limits serialization

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.

Example in XIIDM

Before (IIDM 1.11):
<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>
After (IIDM 1.12):
<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 operationalLimitsGroupn 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>

Changes

TODO or delete

Clone this wiki locally