Main Content

PMSM

Permanent magnet synchronous motor with sinusoidal flux distribution

  • PMSM block

Libraries:
Simscape / Electrical / Electromechanical / Permanent Magnet

Description

The PMSM block models a permanent magnet synchronous motor (PMSM) with a three-phase wye-wound or delta-wound stator. Use this block to model an interior permanent magnet synchronous machine (IPMSM), surface permanent magnet synchronous machine (SPMSM), transverse flux motor, axial flux (pancake) motor, or PMSM servomotor.

PMSMs have a permanent magnet rotor and a wound stator. You use these motors in traction applications like electric vehicles (EVs) and in actuation systems. In actuation systems, PMSMs are also called brushless servomotors. You typically design a PMSM to have a sinusoidal back EMF profile. This design reduces undesirable high-frequency mechanical and electrical current harmonics compared to motors like the brushless DC (BLDC) motor which have a trapezoidal back EMF profile.

The PMSM block models the motor with fixed d-axis and q-axis inductances Ld and Lq. You can use this block to model the two main types of PMSM:

  • SPMSM or surface permanent magnet (SPM) motor — The "S" signifies that the rotor magnets are surface mounted. Ld and Lq are equal.

  • IPMSM or interior permanent magnet (IPM) motor — The "I" signifies that the rotor magnets are interior to the rotor. Ld and Lq are not equal.

You can also categorize PMSMs based on the main flux paths. The main flux paths are commonly radial but they can be axial which causes much higher torques for the same physical size of motor. You can use the PMSM block to model both categories of PMSM.

This figure shows the equivalent electrical circuit for a wye-wound stator.

You can model the permanent magnet synchronous motor in a delta-wound or open-end configuration by setting Winding type to Delta-wound or Open-end, respectively.

You can choose different built-in parameterizations for this block. For more information, see the Predefined Parameterization section.

Note

Simscape™ Electrical™ includes several blocks that can model the same type of motor or actuator. You must choose a block that has sufficient modeling detail for the engineering design questions that you need to answer. However, do not use more detail than you need, because higher-fidelity models slow down simulation and are more complex to parameterize.

Blocks like the PMSM block model motors with fixed or parameter-dependent coefficients with a simple equivalent circuit. These models have an intermediate level of fidelity. Use this block to design controls or systems in actuation applications, such as robotics and mechatronics, and for efficiency predictions when saturation and harmonics only weakly impact losses. For more information about choosing the right block to model your motor at the right level of fidelity, see Choose Blocks to Model Motors or Actuators.

Motor Construction

This figure shows the motor construction with a single pole-pair on the rotor.

Permanent magnets generate a rotor magnetic field that creates a sinusoidal rate of change of flux based on the rotor angle.

For the axes convention, when you set the Rotor angle definition parameter to Angle between the a-phase magnetic axis and the d-axis, the a-phase and permanent magnet fluxes align when the rotor mechanical angle, θr, is zero. When you set the Rotor angle definition parameter to Angle between the a-phase magnetic axis and the q-axis, the rotor mechanical angle is the angle between the a-phase magnetic axis and the rotor q-axis.

Equations

Voltages across the stator windings are

[vavbvc]=[Rs000Rs000Rs][iaibic]+[dψadtdψbdtdψcdt],

where:

  • va, vb, and vc are the individual phase voltages across the stator windings.

  • Rs is the equivalent resistance of each stator winding.

  • ia, ib, and ic are the currents flowing in the stator windings.

  • dψadt,dψbdt, and dψcdt are the rates of change for the magnetic flux in each stator winding.

The permanent magnet and the three windings contribute to the total flux linking each winding. The total flux is

[ψaψbψc]=[LaaLabLacLbaLbbLbcLcaLcbLcc][iaibic]+[ψamψbmψcm],

where:

  • ψa, ψb, and ψc are the total fluxes linking each stator winding.

  • Laa, Lbb, and Lcc are the self-inductances of the stator windings.

  • Lab, Lac, Lba, and so on, are the mutual inductances of the stator windings.

  • ψam, ψbm, and ψcm are the permanent magnet fluxes linking the stator windings.

The inductances in the stator windings are functions of the rotor electrical angle and defined by

θe=Nθr+rotoroffset

Laa=Ls+Lmcos(2θe)

Lbb=Ls+Lmcos(2(θe2π/3))

Lcc=Ls+Lmcos(2(θe+2π/3))

Lab=Lba=MsLmcos(2(θe+π/6))

Lbc=Lcb=MsLmcos(2(θe+π/62π/3))

Lca=Lac=MsLmcos(2(θe+π/6+2π/3))

where:

  • θr is the rotor mechanical angle.

  • θe is the rotor electrical angle.

  • rotor offset is 0 if you define the rotor electrical angle with respect to the d-axis, or -pi/2 if you define the rotor electrical angle with respect to the q-axis.

  • Ls is the stator self-inductance per phase. This value is the average self-inductance of each of the stator windings.

  • Lm is the stator inductance fluctuation. This value is the amount the self-inductance and mutual inductance fluctuate with the changing of the rotor angle.

  • Ms is the stator mutual inductance. This value is the average mutual inductance between the stator windings.

The permanent magnet flux linking winding a is a maximum when θe = 0° and zero when θe = 90°. Therefore, the linked motor flux is defined by:

[ψamψbmψcm]=[ψmcosθeψmcos(θe2π/3)ψmcos(θe+2π/3)]

where ψm is the permanent magnet flux linkage.

Simplified Electrical Equations

Applying Park’s transformation to the block electrical equations produces an expression for torque that is independent of the rotor angle.

Park’s transformation is defined by:

P=2/3[cosθecos(θe2π/3)cos(θe+2π/3)sinθesin(θe2π/3)sin(θe+2π/3)0.50.50.5]

where θe is the electrical angle defined as r. N is the number of pole pairs.

Using Park's transformation on the stator winding voltages and currents transforms them to the dq0 frame, which is independent of the rotor angle:

[vdvqv0]=P[vavbvc]

[idiqi0]=P[iaibic]

Applying Park’s transformation to the first two electrical equations produces these equations that define the block behavior:

vd=Rsid+LddiddtNωiqLq

vq=Rsiq+Lqdiqdt+Nω(idLd+ψm)

v0=Rsi0+L0di0dt

T=32N(iq(idLd+ψm)idiqLq)


where:

  • Ld = Ls + Ms + 3/2 Lm. Ld is the stator d-axis inductance.

  • Lq = Ls + Ms − 3/2 Lm. Lq is the stator q-axis inductance.

  • L0 = Ls – 2Ms. L0 is the stator zero-sequence inductance.

  • ω is the rotor mechanical rotational speed.

  • N is the number of rotor permanent magnet pole pairs.

  • T is the rotor torque. Torque flows from the motor case (block physical port C) to the motor rotor (block physical port R).

The PMSM block uses the original, non-orthogonal implementation of the Park transform. If you try to apply the alternative implementation, you get different results for the dq0 voltage and currents.

Alternative Flux Linkage Parameterization

You can parameterize the motor using the back EMF or torque constants which are more commonly given on motor datasheets by using the Permanent magnet flux linkage parameter.

The back EMF constant is the peak voltage induced by the permanent magnet in the per-unit rotational speed of each of the phases. The relationship between the peak permanent magnet flux linkage and the back EMF is:

ke=Nψm.

The back EMF, eph, for one phase is:

eph=keω.

The torque constant is the peak torque induced by the per-unit current of each of the phases. It is numerically identical in value to the back EMF constant when both are expressed in SI units:

kt=Nψm.

When Ld=Lq and the currents in all three phases are balanced, the combined torque T is:

T=32ktiq=32ktIpk,

where Ipk is the peak current in any of the three windings.

The factor 3/2 follows from this being the steady-state sum of the torques from all phases. Therefore, the torque constant kt can also be:

kt=23(TIpk),

where T is the measured total torque when testing with a balanced three-phase current with peak line voltage Ipk. The RMS line current is:

kt=23Tiline,rms.

Calculating Iron Losses

Iron losses are divided into two terms, one representing the main magnetizing path, and the other representing the cross-tooth tip path that becomes active during field weakened operation. The iron losses model is based on [3].

The term representing the main magnetizing path depends on the induced RMS line-to-neutral stator voltage, Vmrms:

POC(Vmrms)=ahkVmrms+ajk2Vmrms2+aexk1.5Vmrms1.5.

This is the dominant term during no-load operation. k is the back EMF constant relating RMS volts per Hz. It is defined as k=Vmrms/f, where f is the electrical frequency. The first term on the right-hand side is the magnetic hysteresis loss, the second is the eddy current loss and the third is the excess loss. The three coefficients appearing on the numerators are derived from the values that you provide for the open-circuit hysteresis, eddy, and excess losses.

The term representing the cross-tooth tip path becomes important when a demagnetizing field is set up and can be determined from a finite element analysis short-circuit test. It depends on the RMS EMF associated with the cross-tooth tip flux, Vdrms*:

PSC(Vdrms*)=bhkVdrms*+bjk2Vdrms*2+bexk1.5Vdrms*1.5.

The three numerator terms are derived from the values you provide for the short-circuit hysteresis, eddy, and excess losses.

Predefined Parameterization

There are multiple available built-in parameterizations for the PMSM block.

This pre-parameterization data allows you to set up the block to represent components by specific suppliers. The parameterizations of these permanent magnet synchronous motors match the manufacturer data sheets. To load a predefined parameterization, double-click the PMSM block, click the <click to select> hyperlink of the Selected part parameter and, in the Block Parameterization Manager window, select the part you want to use from the list of available components.

Note

The predefined parameterizations of Simscape components use available data sources for the parameter values. Engineering judgement and simplifying assumptions are used to fill in for missing data. As a result, expect deviations between simulated and actual physical behavior. To ensure accuracy, validate the simulated behavior against experimental data and refine component models as necessary.

For more information about pre-parameterization and for a list of the available components, see List of Pre-Parameterized Components.

Model Thermal Effects

You can expose thermal ports to model the effects of losses that convert power to heat. To expose the thermal ports, set the Modeling option parameter to either:

  • No thermal port — The block contains expanded electrical conserving ports associated with the stator windings, but does not contain thermal ports.

  • Show thermal port — The block contains expanded electrical conserving ports associated with the stator windings and thermal conserving ports for each of the windings and for the rotor.

For more information about using thermal ports in actuator blocks, see Simulating Thermal Effects in Rotational and Translational Actuators.

Variables

To set the priority and initial target values for the block variables before simulation, use the Initial Targets section in the block dialog box or Property Inspector. For more information, see Set Priority and Initial Target for Block Variables.

Nominal values provide a way to specify the expected magnitude of a variable in a model. Using system scaling based on nominal values increases the simulation robustness. You can specify nominal values using different sources, including the Nominal Values section in the block dialog box or Property Inspector. For more information, see System Scaling by Nominal Values.

Examples

Ports

Conserving

expand all

Expandable three-phase port. For more information, see Three-phase port.

Dependencies

To enable this port, set Electrical connection to Composite three-phase ports and Winding type to Wye-wound or Delta-wound.

Electrical conserving port associated with a-phase.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Wye-wound or Delta-wound.

Electrical conserving port associated with b-phase.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Wye-wound or Delta-wound.

Electrical conserving port associated with c-phase.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Wye-wound or Delta-wound.

Since R2024a

Expandable three-phase port associated with the stator positive-end connections.

Dependencies

To enable this port, set Electrical connection to Composite three-phase ports and Winding type to Open-end.

Since R2024a

Expandable three-phase port associated with the stator negative-end connections.

Dependencies

To enable this port, set Electrical connection to Composite three-phase ports and Winding type to Open-end.

Since R2024a

Electrical conserving port associated with the a positive-end connection.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Open-end.

Since R2024a

Electrical conserving port associated with the b positive-end connection.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Open-end.

Since R2024a

Electrical conserving port associated with the c positive-end connection.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Open-end.

Since R2024a

Electrical conserving port associated with the a negative-end connection.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Open-end.

Since R2024a

Electrical conserving port associated with the b negative-end connection.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Open-end.

Since R2024a

Electrical conserving port associated with the c negative-end connection.

Dependencies

To enable this port, set Electrical connection to Expanded three-phase ports and Winding type to Open-end.

Electrical conserving port associated with the neutral phase.

Dependencies

To enable this port, set Winding Type to Wye-wound and Zero sequence to Include.

Mechanical rotational conserving port associated with the motor rotor.

Mechanical rotational conserving port associated with the motor case.

Thermal conserving port associated with winding A.

Dependencies

To enable this port, set Modeling option to Show thermal port.

Thermal conserving port associated with winding B.

Dependencies

To enable this port, set Modeling option to Show thermal port.

Thermal conserving port associated with winding C.

Dependencies

To enable this port, set Modeling option to Show thermal port.

Thermal conserving port associated with the rotor.

Dependencies

To enable this port, set Modeling option to Show thermal port.

Parameters

expand all

Option to parameterize the block to represent components by specific suppliers. Click the <click to select> hyperlink to open the Block Parameterization Manager window. For more information about the Block Parameterization Manager, see Load Predefined Parameterizations.

Whether to enable the thermal ports of the block and model the effects of losses that convert power to heat.

Main

Whether to have composite or expanded three-phase ports.

Select the configuration for the windings:

  • Wye-wound — The windings are wye-wound.

  • Delta-wound — The windings are delta-wound. The a-phase is connected between ports a and b, the b-phase between ports b and c and the c-phase between ports c and a.

  • Open-end — The windings are in an open-end configuration. The block exposes each end of the windings as electrical connections.

Select the modeling fidelity:

  • Constant Ld, Lq and PMLd, Lq and PM values are constant and defined by their respective parameters.

  • Tabulated Ld, Lq and PMLd, Lq and PM values are computed online from DQ currents look-up tables as follows:

    Ld=f1(id,iq)

    Ld=f2(id,iq)

    λPM=f2(id,iq)

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0.

Number of permanent magnet pole pairs on the rotor.

Choose Specify flux linkage, Specify torque constant, or Specify back EMF constant.

Peak permanent magnet flux linkage with any of the stator windings.

Dependencies

To enable this parameter, set Permanent magnet flux linkage parameterization to Specify flux linkage and Modeling fidelity to Constant Ld, Lq and PM.

Torque constant with any of the stator windings.

Dependencies

To enable this parameter, set Permanent magnet flux linkage parameterization to Specify torque constant and Modeling fidelity to Constant Ld, Lq and PM.

Back EMF constant with any of the stator windings.

Note

The back EMF constant is the peak voltage induced by the permanent magnet in the per-unit rotational speed of each of the phases. For a wye-wound motor, this voltage is the line-to-neutral voltage.

Dependencies

To enable this parameter, set Permanent magnet flux linkage parameterization to Specify back EMF constant and Modeling fidelity to Constant Ld, Lq and PM.

Choose Specify Ld, Lq, and L0 or Specify Ls, Lm, and Ms.

D-axis inductance.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0 and Modeling fidelity to Constant Ld, Lq and PM.

Q-axis inductance.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0 and Modeling fidelity to Constant Ld, Lq and PM.

Direct-axis current vector, iD.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0 and Modeling fidelity to Tabulated Ld, Lq and PM.

Quadrature-axis current vector, iQ.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0 and Modeling fidelity to Tabulated Ld, Lq and PM.

Ld matrix.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0 and Modeling fidelity to Tabulated Ld, Lq and PM.

Lq matrix.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ld, Lq, and L0 and Modeling fidelity to Tabulated Ld, Lq and PM.

Permanent magnet flux linkage.

Dependencies

To enable this parameter, set:

  • Stator parameterization to Specify Ld, Lq, and L0

  • Modeling fidelity to Tabulated Ld, Lq and PM

  • Permanent magnet flux linkage parameterization to Specify flux linkage

Torque constant matrix.

Dependencies

To enable this parameter, set:

  • Stator parameterization to Specify Ld, Lq, and L0

  • Modeling fidelity to Tabulated Ld, Lq and PM

  • Permanent magnet flux linkage parameterization to Specify torque constant

Back EMF constant matrix.

Dependencies

To enable this parameter, set:

  • Stator parameterization to Specify Ld, Lq, and L0

  • Modeling fidelity to Tabulated Ld, Lq and PM

  • Permanent magnet flux linkage parameterization to Specify back EMF constant

Zero-sequence inductance.

Dependencies

To enable this parameter either:

  • Set Winding Type to Wye-wound, Zero sequence to Include, and Stator parameterization to Specify Ld, Lq, and L0.

  • Set Winding Type to Delta-wound and Stator parameterization to Specify Ld, Lq, and L0.

Average self-inductance of each of the three stator windings.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ls, Lm, and Ms.

Amount that the self-inductance and mutual inductance of the stator windings fluctuate with the rotor angle.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ls, Lm, and Ms.

Average mutual inductance between the stator windings.

Dependencies

To enable this parameter, set Stator parameterization to Specify Ls, Lm, and Ms.

Resistance of each of the stator windings.

Option to include or exclude zero-sequence terms.

  • Include — Include zero-sequence terms. To prioritize model fidelity, use this default setting. Using this option:

  • Exclude — Exclude zero-sequence terms. To prioritize simulation speed for desktop simulation or real-time deployment, select this option.

Dependencies

To enable this parameter, set Winding Type to Wye-wound.

Reference point for the rotor angle measurement. The figure in the Motor Construction section shows the default value, Angle between the a-phase magnetic axis and the d-axis. When you select this value, the rotor and a-phase fluxes align when the rotor angle is zero.

When you select Angle between the a-phase magnetic axis and the q-axis, the a-phase current generates maximum torque when the rotor angle is zero.

Iron Losses

Specify the iron losses computational model.

Row vector, of length 3, of the open-circuit iron losses due to hysteresis, Eddy, and excess losses, respectively, at the frequency specified by Electrical frequency at which losses determined.

Dependencies

To enable this parameter, set Model to Empirical.

Row vector, of length 3, of the short-circuit iron losses due to hysteresis, Eddy, and excess losses, respectively, at the frequency specified by Electrical frequency at which losses determined.

Dependencies

To enable this parameter, set Model to Empirical.

Electrical frequency at which the block measures the open-circuit and short-circuit iron losses.

Dependencies

To enable this parameter, set Model to Empirical.

Resulting short-circuit RMS phase current when measuring the short-circuit losses.

Dependencies

To enable this parameter, set Model to Empirical.

Mechanical

Inertia of the rotor attached to mechanical translational port R. The value can be zero.

Rotary damping.

Temperature Dependence

Temperature at which the block quotes the motor parameters.

Dependencies

To enable this parameter, set Modeling option to Show thermal port.

Coefficient α in the equation relating resistance to temperature. For more information, see Thermal Model for Actuator Blocks. The default value is for copper.

Dependencies

To enable this parameter, set Modeling option to Show thermal port.

Fractional rate at which the permanent magnet flux density changes with the temperature. Use this parameter to linearly reduce the torque and the induced back EMF as the temperature rises.

Dependencies

To enable this parameter, set Modeling option to Show thermal port.

Thermal Port

Thermal mass value for the A, B, and C windings. The thermal mass is the energy required to raise the temperature by one degree.

Dependencies

To enable this parameter, set Modeling option to Show thermal port.

Thermal mass of the rotor, that is, the energy required to raise the temperature of the rotor by one degree.

Dependencies

To enable this parameter, set Modeling option to Show thermal port.

Percentage of the main flux path iron losses associated with the magnetic path through the rotor. It determines how much of the iron loss heating is attributed to the rotor thermal port HR, and how much is attributed to the three winding thermal ports HA, HB, and HC.

Dependencies

To enable this parameter, set Modeling option to Show thermal port and, in the Iron Losses tab, set Model to Empirical.

Percentage of the cross-tooth flux path iron losses associated with the magnetic path through the rotor. It determines how much of the iron loss heating is attributed to the rotor thermal port HR, and how much is attributed to the three winding thermal ports HA, HB, and HC.

Dependencies

To enable this parameter, set Modeling option to Show thermal port and, in the Iron Losses tab, set Model to Empirical.

References

[1] Kundur, P. Power System Stability and Control. New York, NY: McGraw Hill, 1993.

[2] Anderson, P. M. Analysis of Faulted Power Systems. Hoboken, NJ: Wiley-IEEE Press, 1995.

[3] Mellor, P.H., R. Wrobel, and D. Holliday. A computationally efficient iron loss model for brushless AC machines that caters for rated flux and field weakened operation. IEEE Electric Machines and Drives Conference. May 2009.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Version History

Introduced in R2013b

expand all