Main Content

Per-Unit System

Motor Control Blockset™ uses these International System of Units (SI):






radians per second

revolutions per minute





The SI Unit for speed is rad/s. However, most manufacturers use rpm as the unit to specify the rotational speed of the motors. Motor Control Blockset prefers rpm as the unit of rotational speed over rad/s. However, you can use either value based on your preference.

Per-Unit System

The per-unit (PU) system is commonly used in electrical engineering to express the values of quantities like voltage, current, power, and so on. It is used for transformers and AC machines for power system analysis. Embedded systems engineers also use this system for optimized code-generation and scalability, especially when working with fixed-point targets.

For a given quantity (such as voltage, current, power, speed, and torque), the PU system expresses a value in terms of a base quantity:

quantity expressed in PU = quantity expressed in SI unitsbase value

Generally, most systems select the nominal values of the system as the base values. Sometimes, a system may also select the maximum measurable value as the base value. After you establish the base values, all signals are represented in PU with respect to the selected base value.

For example, in a motor control system, if the selected base value of the current is 10A, then the PU representation of a 2A current is expressed as (2/10) PU = 0.2 PU.


quantity expressed in SI units = quantity expressed in PU × base value

For example, the SI unit representation of 0.2 PU = (0.2 x base value) = (0.2 x 10) A.

Per-Unit System and Motor Control Blockset

Motor Control Blockset uses these conventions to define the base values for voltage, current, speed, torque, and power.

Base voltageVbase

This is the maximum phase voltage supplied by the inverter.

Generally, for Space Vector PWM, it is PU_System.V_base = (inverter.V_dc3).

For Sinusoidal PWM, it is PU_System.V_base = (inverter.V_dc2).

For discrete PWM (DPWM), it is PU_System.V_base = (inverter.V_dc3).

For more information about the PWM techniques, see PWM Reference Generator.
Base currentIbase

This is the maximum current that can be measured by the current sensing circuit of the inverter.

Generally, but not necessarily, it is ISenseMax of the inverter.

PU_System.I_base = inverter.ISenseMax

Base speedNbaseThis is the nominal (or rated) speed of the motor. This is also the maximum speed that the motor can achieve at the nominal voltage and nominal load without a field-weakening operation.
Base torqueTbase

This torque is mathematically derived from the base current. Physically, the motor may or may not be able to produce this torque.

Generally, it is PU_System.T_base = 32×pmsm.p×pmsm.FluxPM×PU_System.I_base.

Base powerPbase

This is the power derived by the base voltage and base current.

Generally, it is PU_System.P_base = 32×PU_System.V_base×PU_System.I_base.


  • Vdc is the DC voltage that you provide to the inverter.

  • Imax is the maximum current measured by the ADCs connected to the current sensors of the inverter.

  • p is the number of pole pairs available in the PMSM.

  • FluxPM is the permanent magnet flux linkage of the PMSM.

  • pmsm is the MATLAB® workspace parameter structure that saves the motor variables.

  • inverter is the MATLAB workspace parameter structure that saves the inverter variables.

  • PU_System is the MATLAB workspace parameter structure that saves the PU system variables.

For the voltage and current values, you can generally consider the peak value of the nominal sinusoidal voltage (or current) as 1PU. Therefore, the base values used for voltage and current are the RMS values multiplied by 2, or the peak value measured between phase-neutral.

You can simplify your calculations by using the PU system. Motor Control Blockset uses these base value definitions for the PU-system-related conversions performed by the algorithms used in the toolbox examples. The toolbox stores the PU-system-related variables in a structure called PU_System in the MATLAB workspace.

Why Use Per-Unit System Instead of Standard SI Units

Per-unit representation of signals has many advantages over the SI units. This technique:

  • Improves the computational efficiency of code execution, and therefore is a preferred system for fixed-point targets.

  • Creates a scalable control algorithm that can be used across many systems.