pydynamicestimator.devices.inverter_inner
Inverter inner-control strategies (the cascaded voltage/current loops).
The inner controller is the converter’s fast actuator: it regulates the capacitor
voltage to the reference Vcd from the outer voltage loop and produces the
switching voltage Vsw that drives the filter. It is swapped as a whole unit
(cascaded PI + virtual impedance), never block-by-block – the is-a-cluster
signal – so it is a single strategy axis. See
docs/inverter_modernization_design.md §4.3.
It owns the four PI integrator states (xi_d/xi_q voltage loop,
gamma_d/gamma_q current loop) and the controller / virtual-impedance gains.
It reads the filter capacitance/inductance (host.Cf / host.Lf) for the
cross-coupling decoupling terms – a cross-strategy parameter read via the host,
exactly as the SG strategies read host parameters.
Attributes
Classes
Abstract base class for inverter inner-control strategies. |
|
Cascaded voltage + current PI control with virtual impedance. |
Module Contents
- class pydynamicestimator.devices.inverter_inner.InnerControl[source]
Bases:
abc.ABCAbstract base class for inverter inner-control strategies.
fgcall()consumes the converter-frame internal quantities (from the host’s Park transforms), the converter frequencyomega_cand the voltage referenceVcd, writes its PI integrator state equations intodae.f, and returns the switching voltage(Vswd, Vswq)in the network frame (consumed by the filter strategy).- abstract fgcall(host, dae: pydynamicestimator.system.Dae, internals, omega_c, delta_c)[source]
Run the inner control.
internalsis a dict of the converter-frame quantities {“Vfd”,”Vfq”,”itd”,”itq”,”ifd”,”ifq”}; the voltage command is read viahost.voltage_command(dae). Publishes the switching voltage onhost.Vswd/host.Vswq(read by the filter viahost.switching_voltage(dae)) and the current references onhost.ifd_ref/host.ifq_ref(viahost.current_ref(dae)); writes the integrator state equations intodae.f.- Parameters:
- requires() Set[str][source]
Plant capability tags this controller needs from the filter (checked at construction, warning on mismatch). Empty by default.
- Return type:
Set[str]
- abstract finit_sequential(host, dae: pydynamicestimator.system.Dae, filt, omega_c) Dict[str, numpy.ndarray][source]
Steady-state init of the control loop.
filtis the filter strategy’s init dict (op-point + Vsw);omega_cis the synchronizing frequency from the angle source. Returns the integrator states plus the frame angledelta_cand the voltage commandVcd– handed by the host to the angle (the delta_c slot) and the voltage controller (which unpacks Vcd).- Parameters:
- Return type:
Dict[str, numpy.ndarray]
- class pydynamicestimator.devices.inverter_inner.Cascaded[source]
Bases:
InnerControlCascaded voltage + current PI control with virtual impedance.
Voltage loop (xi): regulates the capacitor voltage to
Vcd(minus the virtual-impedance drop), producing the filter-current reference. Current loop (gamma): regulates the filter current, producing the switching voltage. With the cross-coupling decoupling and feed-forward terms. Byte-identical to the control ladder previously inlined inInverter.fgcall.- fgcall(host, dae: pydynamicestimator.system.Dae, internals, omega_c, delta_c)[source]
Run the inner control.
internalsis a dict of the converter-frame quantities {“Vfd”,”Vfq”,”itd”,”itq”,”ifd”,”ifq”}; the voltage command is read viahost.voltage_command(dae). Publishes the switching voltage onhost.Vswd/host.Vswq(read by the filter viahost.switching_voltage(dae)) and the current references onhost.ifd_ref/host.ifq_ref(viahost.current_ref(dae)); writes the integrator state equations intodae.f.- Parameters:
- requires() Set[str][source]
Plant capability tags this controller needs from the filter (checked at construction, warning on mismatch). Empty by default.
- Return type:
Set[str]
- finit_sequential(host, dae: pydynamicestimator.system.Dae, filt, omega_c) Dict[str, numpy.ndarray][source]
Steady-state of the cascaded control ladder. Solves the 6 conditions (the four PI integrators steady + the two switching-voltage matches) for the frame angle
delta_c, the voltage commandVcdand the four integrators.Pc_tilde/Qc_tildeare NOT solved here – they are the frame-invariant powers, computed by the host from the filter op-point. This is the first six (decoupled) rows of the previous 8x8 inner_loop_init, so the roots are bit-identical.- Parameters:
- Return type:
Dict[str, numpy.ndarray]
- pydynamicestimator.devices.inverter_inner.INNER_REGISTRY: Dict[str, type]