Backemf observer

I am using MKV30 microcontroller for sensorless vector control of PMSM. I want to use the backemf observer and angle tracking observer to measure the speed. In RTCESL, there are two types of backemf observers available, so whats the difference between observer AB and DQ. Is the difference is only about ref axis or something else?

Is there anything specific like the different observers works for different types of motors (like surface mounted)?

1. AMCLIB_BEMF_OBSRV_AB which is calculated in Alpha / Beta coordinates. This one is typically used together with AMCLIB_ANGLE_TRACK_OBSRV to get speed and position (theta) s sin and cos of theta

2. AMCLIB_BEMF_OBSRV_DQ which is calculated in D/Q coordinates. This one is typically used together with AMCLIB_TRACK_OBSRV to get speed and position (theta)

We used in our MC reference application observer in DQ coordinates #2 (recommended) which is more stable and robust in lower speeds. Alpha/Beta observer can provide slightly better results in higher speeds.

I want to use the backemf observer AB to calculate the speed and position. As per the application need we got only option is to use this.

But the problem now is the observer AB not working at all. The observer outputs "Iobserv, Eobserv" are getting saturated at negative max value at the very first call and output of observer is always Frac16(0.707).

I have tried with different values of gain and as well as calculated value as per, given in that library guide.

Yes I have seen that reference solution, in that as you said, you are using DQ observer but unfortunately we can't use that in our application.

And the DQ observer seems to be most likely used for the motor with saliency.

Attachments

Fortunately, I got the Backemf_observer_AB working in floating point. Now I can match the theta generated from angle tracking observer and the theta Im generating for scalar open loop control. The only thing now is I cannot match the speed.

Im giving 600rpm to run in scalar control and checking the trackers in background and getting "fltSpeed = 88".

Attachments

I got the observers working right and the motor is running in foc at 1000rpm after that the speed gets saturated(rated speed 3000rpm). Its not responding even the for the higher Iq ref values.

Upto some point the Ud, Uq both are increasing linearly for corresponding Iq ref after that the Ud only increasing Uq is saturated. I have checked Ud, Uq limits but its way far. I have done the decoupling also but no change.