motulator_multiphase.control#
Control of multi-three-phase machine drives.
The common mode of the three-phase sets is controlled by the vector controllers of three-phase machines, and the differential modes are current-controlled.
Classes#
Current controller of the differential modes. |
|
DM signals in the controller coordinates, each of shape (n_sets - 1,). |
|
External reference signals. |
|
Measured signals. |
|
Vector control system of multi-three-phase machine drives. |
Module Contents#
- class motulator_multiphase.control.DifferentialModeController(L_ls, n_sets=2, alpha_c=2 * pi * 200, alpha_i=None, T_s=None)[source]#
Current controller of the differential modes.
Each DM is a resistive-inductive circuit with the leakage inductance L_ls. The DM currents are controlled in the coordinates of the vector controller using the flux-linkage-based complex-vector 2DOF controllers, in the same manner as in the current controllers of motulator. The DM current references correspond to the current-sharing coefficients of the sets, i.e., the reference of the set k is k_share[k]*i_cm, where i_cm is the common-mode current.
- Parameters:
L_ls (float) – Leakage inductance (H) of a set.
n_sets (int, optional) – Number of three-phase sets, defaults to 2.
alpha_c (float, optional) – Current-control bandwidth (rad/s), defaults to 2*pi*200.
alpha_i (float, optional) – Integral-action bandwidth (rad/s), defaults to alpha_c. Not used in the direct discrete-time design.
T_s (float, optional) – Sampling period (s). If given, the direct discrete-time design is used instead of the continuous-time design. The vector controller must then be a direct discrete-time design as well (k_comp = 0), since the angle advance of the voltage references is common to all modes, and its sampling period must equal this value.
- set_sharing(k_share)[source]#
Set the current-sharing coefficients, summing up to the number of sets.
- Parameters:
k_share (Sharing)
- Return type:
None
- class motulator_multiphase.control.DifferentialModeSignals[source]#
DM signals in the controller coordinates, each of shape (n_sets - 1,).
- class motulator_multiphase.control.MultiThreePhaseControlSystem(vector_ctrl, dm_ctrl, speed_ctrl=None, theta_sets=None, pwms=None)[source]#
Bases:
motulator.common.control.ControlSystem[motulator_multiphase.model.MultiThreePhaseDrive,Measurements,References,Feedbacks]Vector control system of multi-three-phase machine drives.
The control is based on the decoupled multi-stator (DMS) transformation, which maps the three-phase sets to the common mode (CM) and the differential modes (DMs) [1]. The CM is controlled by the given vector controller of a three-phase machine, see
to_parallel(). Its feedback signals are the CM voltage and the current of the equivalent machine, i.e., the sum of the set currents. The DMs are controlled by the DM current controller in the coordinates of the vector controller. Each set has its own PWM. As in VectorControlSystem, the angles of the voltage references are advanced by k_comp*T_s*w_c, where k_comp is given by the vector controller, and the speed controller and the external references work in the same manner. The DM signals are logged in the signal group dm, seeDifferentialModeSignals, with the shape (N, n_sets - 1). In the post-processed time series, they are in the same coordinates as the signals of the vector controller (e.g., in the estimated rotor flux coordinates for induction machines).- Parameters:
vector_ctrl (VectorController) – Vector controller of the CM, configured with the parameters of the parallel-connected equivalent machine.
dm_ctrl (DifferentialModeController) – Current controller of the DMs.
speed_ctrl (SpeedController | PIController | None, optional) – Speed controller. If None (default), torque-control mode is used.
theta_sets (Sequence[float], optional) – Angles (rad) of the phases a of the sets, defaults to the asymmetrical arrangement.
pwms (Sequence[PWM], optional) – Pulse-width modulators of the sets, defaults to PWM() for each set.
References
- compute_output(fbk)[source]#
Compute the references and the duty ratios of the sets.
- Parameters:
fbk (Feedbacks)
- Return type:
References
- compute_standby_output(fbk)[source]#
Compute the controller output while the gates are blocked.
- Parameters:
fbk (Feedbacks)
- Return type:
References
- get_command(ref)[source]#
Extract the sampling period and the duty ratios from the references.
- Parameters:
ref (References)
- Return type:
- get_feedback(meas)[source]#
Get the feedback signals.
- Parameters:
meas (Measurements)
- Return type:
Feedbacks
- get_measurement(mdl)[source]#
Sample the sensors, the speed and position sensors if the drive has them.
- Parameters:
- Return type:
- save(t, **signal_groups)[source]#
Extend the base class method by saving the DM signals.
- Parameters:
t (float)
signal_groups (Any)
- Return type:
None