I'm modelling a wind turbine and PMSG with uncontrolled rectifier and buck converter. I am currently trying to design a current controller for the current Iq coming from the generator. To do so, i linearized the entire system. I previously attempted to design PI controllers for the systems but controllers that worked for the linear system did not work for the non linear system and vice versa. However, using the "linearize" command in Simulink which- the bode plot generated for the linear transfer function of the system and for the non linear model are exactly the same.

Now I am comparing the step responses of the linear and non linear system, which i am expecting should be the same for a small step (0.5). By stepping the duty cycle of the converter, the following step responses for the linear and non linear system were found. Does anyone have any idea what might be wrong?

N.B. ignore the fact that the response of the linear system starts at 0 and goes negative- i am mostly interested in the amount severity of the drop in current in the case of the non linear system and the time it takes before rising back up again.

System Response

  • \$\begingroup\$ Have you tried adding a Derivative element (i.e. to make it a full PID) to your controller? Can you post (at least some of) the details of the PI model with the relative gains? (and the buck converter if possible) \$\endgroup\$ – Oli Glaser Jan 22 '13 at 0:28

Integrator wind up. That's what seems likely after a 10 second review of your plots. Do you restrict the maximum and minimum values of the integrator sum? You should. The purpose of the integrator is to correct for the loop error left over by the proportional part of the loop, due to the proportional part's finite gain. The integrator sum should not be allowed to be much greater than is required to correct the proportional error.

At steady state the integrator will have reached some value that offsets the proportional error. Then there is the step change, and the integrator value is now badly wrong. It corrects, but it takes a lot of time. Meanwhile the loop is railed out as the integrator slowly increments (or decrements) its way back to balance the proportional contribution.

Here are 2 ways to vastly improve integrator performance:

  • Restrict the size of the integrator sum. Calculate, worst case, the value it takes to balance the error leftover from the proportional loop, and then use 1.5 to 2 times that to limit the value extremes of the integrator sum. This will also prevent rollover.

  • Phase reset of the integrator sum. Compare the sign of the error with the sign of the integrator sum. If the signs are the same, then set the integrator sum to zero. This will give your integrator a leg up, getting rid of a wrong value that it will have to work off over time, and allow it to contribute to minimizing the error right away. This is hard to do with an analog loop, but for an algorithm in a DSP or micro-controller is easy.

Anyway, check out the possibility of integrator wind up as cause.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.