# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# SPDX-License-Identifier: MPL-2.0
from VeraGridEngine.IO.iidm.devices.iidm_object import IidmObject, Unit
[docs]
class RatioTapChangerStep(IidmObject):
def __init__(self, rho: float, r: float = 0.0, x: float = 0.0, g: float = 0.0, b: float = 0.0):
super().__init__("RatioTapChangerStep")
self.rho = rho
self.r = r
self.x = x
self.g = g
self.b = b
self.register_property("rho", "step:rho", float, description="Ratio change factor")
self.register_property("r", "step:r", float, Unit("Ohm"), description="Step resistance")
self.register_property("x", "step:x", float, Unit("Ohm"), description="Step reactance")
self.register_property("g", "step:g", float, Unit("S"), description="Step conductance")
self.register_property("b", "step:b", float, Unit("S"), description="Step susceptance")
[docs]
class RatioTapChanger(IidmObject):
def __init__(self, lowTapPosition: int, tapPosition: int,
regulationMode: str, regulationValue: float,
loadTapChangingCapabilities: bool, regulating: bool, targetDeadband: float):
super().__init__("RatioTapChanger")
self.lowTapPosition = lowTapPosition
self.tapPosition = tapPosition
self.regulationMode = regulationMode
self.regulationValue = regulationValue
self.loadTapChangingCapabilities = loadTapChangingCapabilities
self.regulating = regulating
self.targetDeadband = targetDeadband
self.register_property("lowTapPosition", "tapChanger:lowTapPosition", int, description="Lowest tap position")
self.register_property("tapPosition", "tapChanger:tapPosition", int, description="Current tap position")
self.register_property("regulationMode", "tapChanger:regulationMode", str, description="Regulation mode")
self.register_property("regulationValue", "tapChanger:regulationValue", float,
description="Target regulation value")
self.register_property("loadTapChangingCapabilities", "tapChanger:loadTapChangingCapabilities", bool,
description="Is load tap changing enabled")
self.register_property("regulating", "tapChanger:regulating", bool, description="Is regulating")
self.register_property("targetDeadband", "tapChanger:targetDeadband", float,
description="Deadband for regulation")
[docs]
class PhaseTapChanger(IidmObject):
def __init__(self, regulationMode: str, tapPosition: int, regulationValue: float, regulating: bool):
super().__init__("PhaseTapChanger")
self.regulationMode = regulationMode
self.tapPosition = tapPosition
self.regulationValue = regulationValue
self.regulating = regulating
self.register_property("regulationMode", "phaseTapChanger:regulationMode", str, description="Regulation mode")
self.register_property("tapPosition", "phaseTapChanger:tapPosition", int, description="Tap position")
self.register_property("regulationValue", "phaseTapChanger:regulationValue", float, description="Regulation value")
self.register_property("regulating", "phaseTapChanger:regulating", bool, description="Is regulating?")