pydynamicestimator.devices.inverter_voltage

Inverter outer voltage-control strategies (the reactive / voltage side).

The voltage controller is the AVR-analogue of the converter: it turns the reactive-power / voltage setpoints into the voltage-magnitude reference Vcd that the inner control ladder regulates the capacitor voltage to. It owns the reactive-power measurement state Qc_tilde and the Qref / Vref setpoints. See docs/inverter_modernization_design.md §4.

NOTE (Phase 2 boundary, same as the angle source): the strategy owns the Qc_tilde state but the host writes its measurement-filter equation d Qc_tilde/dt = omega_f (Qc - Qc_tilde) because Qc comes from the shared Park-transform loop in Inverter.fgcall.

Attributes

VOLTAGE_REGISTRY

Classes

VoltageControl

Abstract base class for inverter outer voltage-control strategies.

QVDroop

Reactive-power / voltage droop: Vcd = Vref + Kq (Qref - Qc_tilde).

Module Contents

class pydynamicestimator.devices.inverter_voltage.VoltageControl[source]

Bases: abc.ABC

Abstract base class for inverter outer voltage-control strategies.

Must expose the voltage-magnitude reference: fgcall() returns the Vcd vector consumed by the inner control ladder (host-mediated via host.voltage_command). Reads host params/states/setpoints by attribute.

abstract states() List[str][source]
Return type:

List[str]

algebs() List[str][source]
Return type:

List[str]

algebs_units() Dict[str, str][source]
Return type:

Dict[str, str]

algebs_noise() Dict[str, float][source]
Return type:

Dict[str, float]

algebs_x0() Dict[str, float][source]
Return type:

Dict[str, float]

abstract units() List[str][source]
Return type:

List[str]

abstract params() Dict[str, float][source]
Return type:

Dict[str, float]

abstract states_noise() Dict[str, float][source]
Return type:

Dict[str, float]

abstract states_init_error() Dict[str, float][source]
Return type:

Dict[str, float]

abstract x0() Dict[str, float][source]
Return type:

Dict[str, float]

abstract descriptions() Dict[str, str][source]
Return type:

Dict[str, str]

abstract setpoints() Dict[str, float][source]
Return type:

Dict[str, float]

abstract fgcall(host, dae: pydynamicestimator.system.Dae)[source]

Publish the voltage-magnitude reference on host.Vcd (read by the inner controller via host.voltage_command(dae)). The host writes the Qc_tilde measurement-filter equation (Qc is host-computed).

Parameters:

dae (pydynamicestimator.system.Dae)

abstract finit_sequential(host, dae: pydynamicestimator.system.Dae, Qc: numpy.ndarray, Vcd: numpy.ndarray) Dict[str, numpy.ndarray][source]

Resolve the voltage controller’s states/setpoints from the (frame-invariant) reactive power Qc and the inner controller’s voltage command Vcd. This is where the Q-V gauge lives. The base raises so a new voltage law declares its own resolution.

Parameters:
Return type:

Dict[str, numpy.ndarray]

class pydynamicestimator.devices.inverter_voltage.QVDroop[source]

Bases: VoltageControl

Reactive-power / voltage droop: Vcd = Vref + Kq (Qref - Qc_tilde).

Owns the filtered reactive-power state Qc_tilde, the droop gain Kq and the Qref / Vref setpoints. Byte-identical to the previously inlined voltage reference.

states() List[str][source]
Return type:

List[str]

units() List[str][source]
Return type:

List[str]

params() Dict[str, float][source]
Return type:

Dict[str, float]

states_noise() Dict[str, float][source]
Return type:

Dict[str, float]

states_init_error() Dict[str, float][source]
Return type:

Dict[str, float]

x0() Dict[str, float][source]
Return type:

Dict[str, float]

setpoints() Dict[str, float][source]
Return type:

Dict[str, float]

descriptions() Dict[str, str][source]
Return type:

Dict[str, str]

fgcall(host, dae: pydynamicestimator.system.Dae)[source]

Publish the voltage-magnitude reference on host.Vcd (read by the inner controller via host.voltage_command(dae)). The host writes the Qc_tilde measurement-filter equation (Qc is host-computed).

Parameters:

dae (pydynamicestimator.system.Dae)

finit_sequential(host, dae: pydynamicestimator.system.Dae, Qc: numpy.ndarray, Vcd: numpy.ndarray) Dict[str, numpy.ndarray][source]

Resolve the voltage controller’s states/setpoints from the (frame-invariant) reactive power Qc and the inner controller’s voltage command Vcd. This is where the Q-V gauge lives. The base raises so a new voltage law declares its own resolution.

Parameters:
Return type:

Dict[str, numpy.ndarray]

pydynamicestimator.devices.inverter_voltage.VOLTAGE_REGISTRY: Dict[str, type]