Main Content

Simulate Initial Position Estimation and Field-Weakening Control of IPMSM Using Pulsating High-Frequency Injection and Extended EMF Observer

This example uses sensorless techniques such as pulsating high-frequency injection and extended EMF observer to estimate and track motor position to simulate interior permanent magnet synchronous motor (IPMSM) operation using field-weakening control (FWC).

Extended EMF (EEMF) relies on back-emf to estimate the motor position. However, the back-emf generated in motor at lower speeds is not high enough for measurement due to which EEMF cannot function at lower speeds. To overcome this limitation, the usual back-emf based sensorless control strategies begin running a motor using open-loop control at lower speeds and eventually transition to closed-loop control requiring real time position tracking at higher speeds.

However, to increase motor efficiency and avoid drawing large currents during open-loop control execution, the example directly starts running the motor in a closed-loop by using the sensorless technique of pulsating high-frequency injection to estimate and track motor position. Afterwards, when the speed rises and back-emf is high enough for measurement, the example transitions to EEMF based position tracking to run the motor at higher speeds (including speeds above the rated speed of the motor).

The Pulsating High Freq Observer (PHFO) block performs initial position estimation (IPE) with a stationary motor. The block later injects a pulsating high-frequency (PHF) signal at lower speeds to track the motor position as shown in the following figure.

For more information about PHFO block operation, see Pulsating High Freq Observer.

The example uses the stationary rotor position obtained by PHFO block in Stage - 1 to compute the fundamental frequency voltages and to start running the motor. However, once the motor starts running, the example needs real time position tracking, which can be done by PHFO Stage - 2.

Therefore, when the motor is running, the example superimposes PHF voltage with the fundamental frequency voltages. This results in motor currents that have a lower fundamental frequency component and two high frequency components. PHFO expects high-frequency currents as feedback, whereas the FWC technique expects the fundamental frequency current. To achieve this, the example uses a filter to separate out the high- and low-frequency currents.

The filter can successfully separate these frequencies only upto a specific motor speed. This is because when motor speed increases the fundamental frequencies also increase, which brings them closer to the higher frequencies. Therefore, PHFO can function only at lower motor speeds within an upper speed limit.

The accurate operating region shown in the figure highlights the speed range within which PHFO and EEMF provide an accurate position. Speed indicated by point A is the lower limit of EEMF, whereas the speed indicated by point B is the upper limit of PHFO. The switching point (when PHFO transitions to EEMF) can lie anywhere between A and B. The selected plant (motor and inverter) parameters define the points A and B, which are 10% and 20% of the base speed, respectively, in this example.

To continue to run the motor smoothly after transitioning from PHFO to EEMF, the position detected by PHFO must be close enough to the one detected by EEMF. The motor can stop running if there is a big difference in position during the transition. For example, if the motor saliency is very low, point B may become less than point A as shown in the following figure.

Therefore, this example works only with a motor with good saliency.


This example includes the mcb_ipmsm_init_pos_est_fwc_sim_phfo_eemf Simulink® model.

You can use this model only for simulation.

Required MathWorks Products

Motor Control Blockset™


1. Obtain the motor parameters. The example includes default motor parameters with the Simulink® model, which you can replace with values from the motor datasheet or other sources.

However, if you have the motor control hardware, you can estimate the parameters for the motor that you want to use with the Motor Control Blockset parameter estimation tool. For instructions, see Estimate PMSM Parameters Using Recommended Hardware.

The parameter estimation tool updates the motorParam variable (in the MATLAB® workspace) with the estimated motor parameters.

2. Update the motor and inverter parameters in the model initialization script mcb_ipmsm_init_pos_est_fwc_sim_phfo_eemf_datascript.m associated with the Simulink® model. For instructions, see Estimate Control Gains and Use Utility Functions.

Simulate Model

This example supports simulation. Follow these steps to simulate the model.

1. Open a model included with this example.

2. Click Run on the Simulation tab to simulate the model. The example starts running the motor in the closed-loop mode using PHFO and transitions to EEMF at 0.1pu (10% of rated speed). After gradually reaching the motor rated speed, the example also demonstrates FWC by exceeding the speed beyond the motor base speed.

3. Click Data Inspector on the Simulation tab to view and analyze the simulation results.