This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28075: FCL PI Implementation

Part Number: TMS320F28075

Hi,

I am using the FCL controller and am seeing different torque outputs for the same Iq value depending on if the motor is running in quadrants 2 or 3.

This resulted in me digging into the FCL_PI implementation since there is a speed element in its implementation.  However, after I teased the pieces from the CLA and ISR, it doesn't look like any PI that I have worked with before.

From my understanding, here is what the PI controller does:

At time n:

err_n = ir_ref - iq_measured

Kp = L * I * wcc / V - Assume Relatively Constant 

Ki = R * I * wcc * dt / V - Assume Relatively Constant

Kerr = Ki / 2 + Kp

Kerr_old = Ki / 2 - Kp

carry_over = (err_n * Kerr_old) + Bemf *dSpeed

carry_over = err_n* Ki/2 - err_n* Kp + Bemf*dSpeed

At time n+1:

err_n_1 = ir_ref - iq_measured

Out = err_n_1* Kerr + carry_over

Out = err_n_1 * Ki/2 + err_n_1*Kp + err_n *Ki/2 - err_n*Kp + Bemf*dSpeed

Out = Ki* (err_n_1 + err_n) /2+ Kp *(err_n_1 - err_n) + Bemf*dSpeed

So sumarizing:

Out = Ki * avg_err (over 2 cycles) + Kp * (change in err) + Bemf * (change in speed)

Is there any documentation about how the FCL_PI works?  Where is the integrator?  Why is Kp getting applied to the change in Iq error instead of the error itself? Why is Bemf constant multiplied by the motor acceleration?

It seems like the implementation has combined a lot of logic and optimized for performance.  Which is great, but makes it hard to understand.  And before I am directed to Dave Wilsons blog, I've already read it and wasn't able to figure out this implementation

Thanks a bunch,

-Colin