Hi guys,

So here I explain a bit more what i meant.

First of all, let’s start with an assumption: the inner current control loop is fast enough that can be neglected by the motor dynamics, in order to simplify the analysis. So lets assume that the equivalent transfer function of the current closed loop and electric model of the motor is a 1.

Then, by applying the motor torque dynamic equation we have that:

J*w*s = Kt*Iq_ref - B w - T (laplace domain)

Where J is inertia, Kt is motor constant, B is viscous friction, T is external load, w is speed, Iq_ref is quadrature current and s is the laplace operator. The motor model is then a first order system which can be expressed as a gain with a time constant.

Since Kt is a constant, that expression can be written also as: J * w = Kt * Iq_ref - B*w - Kt*Iq_load, where T = Kt * Iq_load. This means that Iq_load is equivalent to the external load, but scaled with the Kt factor. I do this because then you can identify the whole system as a gain and time constant, otherwise you would need to know the Kt factor (which is not always available).

Then, the load observer that I suggest is this one:

So as I said, it simply uses the information of the identified plant to estimate a velocity, which is then compared with the measured velocity, and the error is passed through a PI controller. Its output is the estimated Iq_load, which, when summed to the Iq_ref, is the input to the mechanical model of the motor.

Once we already have the observer, its output (Iq_load_estimated) can be substracted to the calculated Iq current of the speed loop like in the following picture:

As I said in my previous message, to implement this only 2 things are needed:

- identifying gain and time constant of motor dynamic model
- tuning the PI controller of the observer

For the identification, it can be done by applying a step in the Iq current and then observing the settling time and gain of the speed. The PI controller of the observer can be set with the same parameters as for the PI of the speed loop, for example.

I have experimentally applied this control structure in another motor drive that I develop and it improves quite a lot the disturbance rejection, which is extremely important in CNC machines.

I hope my explanation helps to understand it!

Jorge.