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#

DifferentialModeController

Current controller of the differential modes.

DifferentialModeSignals

DM signals in the controller coordinates, each of shape (n_sets - 1,).

ExternalReferences

External reference signals.

Measurements

Measured signals.

MultiThreePhaseControlSystem

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.

compute_output(i_cm, i_dm)[source]#

Compute the DM current references and voltage references.

Parameters:
  • i_cm (complex)

  • i_dm (numpy.ndarray)

Return type:

tuple[numpy.ndarray, numpy.ndarray]

set_sharing(k_share)[source]#

Set the current-sharing coefficients, summing up to the number of sets.

Parameters:

k_share (Sharing)

Return type:

None

update(T_s, dm, w_c)[source]#

Update the integral states using the realized or limited DM voltages.

Parameters:
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.ExternalReferences[source]#

External reference signals.

class motulator_multiphase.control.Measurements[source]#

Measured signals.

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, see DifferentialModeSignals, 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:

tuple[float, collections.abc.Sequence[float]]

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:

mdl (motulator_multiphase.model.MultiThreePhaseDrive)

Return type:

Measurements

post_process()[source]#

Extend the post-process method.

Return type:

motulator.common.control.TimeSeries

save(t, **signal_groups)[source]#

Extend the base class method by saving the DM signals.

Parameters:
  • t (float)

  • signal_groups (Any)

Return type:

None

set_current_sharing(ref_fcn)[source]#

Set the current-sharing coefficients.

Parameters:

ref_fcn (Sequence[float] | Callable[[float], Sequence[float]]) – Coefficients of the sets, summing up to the number of sets, constant or a function of time. Equal sharing, i.e., all coefficients equal to one, is used by default.

Return type:

None

set_speed_ref(ref_fcn)[source]#

Set the external speed reference for speed-control mode.

Parameters:

ref_fcn (float | Callable[[float], float]) – Speed reference (mechanical rad/s), constant or a function of time.

Return type:

None

set_torque_ref(ref_fcn)[source]#

Set the external torque reference for torque-control mode.

Parameters:

ref_fcn (float | Callable[[float], float]) – Torque reference (Nm), constant or a function of time.

Return type:

None

update(ref, fbk)[source]#

Update the controller states.

Parameters:
  • ref (References)

  • fbk (Feedbacks)

Return type:

None