motulator_bearingless.model#
Continuous-time models for six-phase bearingless synchronous machine drives.
The symmetrical six-phase winding is described by means of the vector-space decomposition: the two-pole plane (h = 1) and the four-pole plane (h = 2) are represented by peak-valued complex space vectors. The machine model is expressed in rotor coordinates, where the plane h rotates at the electrical angular speed h*w_M. The magnetic model is a gradient of a magnetic energy function, which allows representing magnetic saturation and rotor eccentricity in a consistent manner [1]. Uppercase M denotes mechanical quantities, as in motulator. The rotor displacement q_M and the radial force f_M are complex numbers, whose real and imaginary parts correspond to the i and j axes. The mechanical system models and the simulation class of motulator and the converter model of motulator_multiphase are re-exported for convenience.
References
Classes#
Continuous-time system model of a six-phase bearingless machine drive. |
|
Sensors of a bearingless drive, ideal by default, see Sensor. |
|
Six-phase bearingless synchronous machine model. |
|
Constant parameters of a six-phase bearingless synchronous machine. |
|
Rotor held at an externally given radial position. |
|
Radial rigid-body dynamics of the rotor. |
|
Parameters of a saturated bearingless synchronous machine. |
|
Parameters of a saturated bearingless synchronous machine with spatial harmonics. |
Module Contents#
- class motulator_bearingless.model.BearinglessDrive(machine, mechanics, radial, converter, sensors=None)[source]#
Bases:
motulator.common.model.Model[motulator_multiphase.model.MultiThreePhaseConverter]Continuous-time system model of a six-phase bearingless machine drive.
- Parameters:
machine (BearinglessSynchronousMachine) – Machine model.
mechanics (MechanicalSystem | TwoMassMechanicalSystem | ExternalRotorSpeed) – Rotational mechanics.
radial (ExternalRotorPosition | RadialMechanics) – Radial mechanics.
converter (MultiThreePhaseConverter) – Converter model with two three-phase sets.
sensors (BearinglessDriveSensors, optional) – Sensors, see BearinglessDriveSensors, defaults to ideal phase-current, DC-bus voltage, and displacement sensors. Sensored control also needs the speed and position sensors.
- class motulator_bearingless.model.BearinglessDriveSensors[source]#
Bases:
motulator.drive.model.DriveSensorsSensors of a bearingless drive, ideal by default, see Sensor.
- Parameters:
i_c (Sensor, optional) – Phase-current sensors of the two sets, [[i_1, i_2], [i_3, i_4], [i_5, i_6]]. Their conversion defaults to complex2abc. They cannot have a bandwidth.
u_dc (Sensor, optional) – DC-bus voltage sensor.
w_M (Sensor, optional) – Rotor speed sensor (mechanical rad/s), defaults to None, i.e., no sensor.
theta_M (Sensor, optional) – Rotor position sensor (mechanical rad), defaults to None, i.e., no sensor. The sensored control uses the speed and position sensors. The position sensor cannot have a bandwidth, since the angle is wrapped.
q_M (Sensor, optional) – Rotor displacement sensor (m) in stator coordinates.
- class motulator_bearingless.model.BearinglessSynchronousMachine(par)[source]#
Bases:
motulator.common.model.SubsystemSix-phase bearingless synchronous machine model.
The model is internally represented in rotor coordinates. The interfaces are in stator coordinates: the voltages and currents as the space vectors of the two three-phase sets, the displacement and the force as complex numbers. The first set consists of the phases 1, 3, 5 and the second set of the phases 2, 4, 6. The magnetic model is selected via the parameters: linear magnetics with
BearinglessSynchronousMachinePars, or magnetic saturation withSaturatedBearinglessSynchronousMachineParsor, including spatial harmonics,SpatialSaturatedBearinglessSynchronousMachinePars.Notes
A radial force that is constant in stator coordinates results from the interaction of the four-pole field (rotating with the rotor) and a two-pole field having the same electrical angular frequency 2*w_M in stator coordinates. Hence, the two-pole quantities rotate at w_M in rotor coordinates, while the displacement of a rotor held at a fixed position rotates at -w_M.
- Parameters:
par (BaseBearinglessMachinePars) – Machine parameters.
- compute_outputs(state, q_M_ab=0j)[source]#
Compute output variables.
- Parameters:
state (Any)
q_M_ab (Any)
- Return type:
tuple[Any, Any, Any, Any, Any]
- class motulator_bearingless.model.BearinglessSynchronousMachinePars[source]#
Bases:
BearinglessMagneticModelConstant parameters of a six-phase bearingless synchronous machine.
The four-pole rotor produces the torque with the four-pole field (h = 2) and the radial force with the two-pole field (h = 1). Linear magnetics are assumed. The flux linkages are psi_s = L_s(q_M)*i_s, where the inductance matrix depends linearly on the rotor displacement via the radial force constants:
L_s = [[L_1*I, L_21.T], [L_21, diag(L_d, L_q)]] L_21 = [[m_d*q_i, -m_d*q_j], [m_q*q_j, m_q*q_i]]
The corresponding radial force is f_M = 1.5*i_s.T*(dL_s/dq_M)*i_s, i.e.:
f_i = 3*(m_d*i_2d*i_1d + m_q*i_2q*i_1q) f_j = 3*(m_q*i_2q*i_1d - m_d*i_2d*i_1q)
- Parameters:
R_s (float) – Stator resistance (Ω).
L_1 (float) – Inductance (H) of the two-pole plane, isotropic for the four-pole rotor.
L_d (float) – d-axis inductance (H) of the four-pole plane.
L_q (float) – q-axis inductance (H) of the four-pole plane.
m_d (float) – d-axis radial force constant (H/m).
m_q (float) – q-axis radial force constant (H/m).
Notes
The negative stiffness (unbalanced magnetic pull proportional to the displacement) is a second-order effect of the displacement on the inductances, which is not included in this linear model.
- df_dq(i_s1, i_s2, q_M)[source]#
Force sensitivity d f_M/d q_M at constant flux, shape (…, 2, 2).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
numpy.ndarray
- di_dq(i_s1, i_s2, q_M)[source]#
Current sensitivity d i_s/d q_M at constant flux, shape (…, 4, 2).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
numpy.ndarray
- f_M(i_s1, i_s2, q_M)[source]#
Radial force (N) as a function of currents (A) and displacement (m).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
Any
- i_s(psi_s1, psi_s2, q_M, exp_j_theta_M=None)[source]#
Currents (A) and radial force (N) from flux linkages (Vs).
- Parameters:
psi_s1 (Any)
psi_s2 (Any)
q_M (Any)
exp_j_theta_M (Any)
- Return type:
tuple[Any, Any, Any]
- incr_ind_mat(i_s1, i_s2, q_M)[source]#
Incremental inductance matrix (H), shape (…, 4, 4).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
numpy.ndarray
- class motulator_bearingless.model.ExternalRotorPosition[source]#
Bases:
motulator.common.model.SubsystemRotor held at an externally given radial position.
This corresponds to a rotor supported by active magnetic bearings or by mechanical bearings, in which case the radial force of the machine has no effect on the position. The displacement is constant or a function of time, defaulting to a centric rotor.
- create_time_series(t)[source]#
Create time series.
- Parameters:
t (numpy.ndarray)
- Return type:
ExternalRotorPositionTimeSeries
- class motulator_bearingless.model.RadialMechanics(m, c=0.0)[source]#
Bases:
motulator.common.model.SubsystemRadial rigid-body dynamics of the rotor.
The rotor is modeled as a point mass, which is acted upon by the electromagnetic radial force of the machine, an optional external force (e.g., gravity or unbalance), and an optional viscous damping. The tilting and axial motion are not modeled.
- Parameters:
- create_time_series(t)[source]#
Create time series.
- Parameters:
t (numpy.ndarray)
- Return type:
RadialMechanicsTimeSeries
- class motulator_bearingless.model.SaturatedBearinglessSynchronousMachinePars[source]#
Bases:
BearinglessMagneticModelParameters of a saturated bearingless synchronous machine.
The class corresponds to
motulator.drive.model.SaturatedSynchronousMachinePars. The saturation model is specified as a current map. Optionally, to be used only in control systems, a flux map can be provided.- Parameters:
R_s (float) – Stator resistance (Ω).
i_s_fcn (Callable[[Any, Any, Any], tuple[Any, Any, Any]], optional) – Currents (A) and radial force (N) as functions of the flux linkages (Vs) of the two planes and the displacement (m), e.g.,
CurrentMap. Needed in the machine model.psi_s_fcn (FluxMapFcn, optional) – Flux linkages (Vs) and radial force (N) as functions of the currents (A) of the two planes and the displacement (m), with the Jacobian, e.g.,
FluxMap. Needed in the control systems.
- df_dq(i_s1, i_s2, q_M)[source]#
Force sensitivity d f_M/d q_M at constant flux, shape (…, 2, 2).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
numpy.ndarray
- di_dq(i_s1, i_s2, q_M)[source]#
Current sensitivity d i_s/d q_M at constant flux, shape (…, 4, 2).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
numpy.ndarray
- f_M(i_s1, i_s2, q_M)[source]#
Radial force (N) as a function of currents (A) and displacement (m).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
Any
- i_s(psi_s1, psi_s2, q_M, exp_j_theta_M=None)[source]#
Currents (A) and radial force (N) from flux linkages (Vs).
- Parameters:
psi_s1 (Any)
psi_s2 (Any)
q_M (Any)
exp_j_theta_M (Any)
- Return type:
tuple[Any, Any, Any]
- incr_ind_mat(i_s1, i_s2, q_M)[source]#
Incremental inductance matrix (H), shape (…, 4, 4).
- Parameters:
i_s1 (Any)
i_s2 (Any)
q_M (Any)
- Return type:
numpy.ndarray
- linearized(i_s2)[source]#
Constant parameters of the linear model at an operating point.
The inductances of the four-pole plane are the secant inductances at the given current and those of the two-pole plane are the incremental inductances at a centric rotor without the two-pole current. The force constants are fitted to the sensitivity of the radial force to the two-pole current.
- Parameters:
i_s2 (complex) – Current (A) of the four-pole plane in rotor coordinates. Its both components must be nonzero.
- Returns:
Parameters of the linear model.
- Return type:
- class motulator_bearingless.model.SpatialSaturatedBearinglessSynchronousMachinePars[source]#
Bases:
BaseBearinglessMachineParsParameters of a saturated bearingless synchronous machine with spatial harmonics.
The class corresponds to
motulator.drive.model.SpatialSaturatedSynchronousMachinePars. This version is intended for the machine model, while the control methods do not support spatial harmonics.- Parameters:
R_s (float) – Stator resistance (Ω).
magnetic_map_fcn (Callable[[Any, Any, Any, Any], tuple[Any, Any, Any, Any]]) – Currents (A), radial force (N), and torque (Nm) as functions of the flux linkages (Vs) of the two planes, the displacement (m), and the complex exponential of the mechanical rotor angle, e.g.,
CurrentMapWithHarmonics.