Question: ...design a controller in the feedforward path to minimise the effects of the two pairs of dominant poles. Use a pole-zero cancellation technique on a root locus diagram....

I have a 5th order system with 2 pairs of dominant poles, which I present below:

   Poles =

   1.0e+02 *

  -9.9990 + 0.0000i
  -0.0004 + 0.0344i
  -0.0004 - 0.0344i
  -0.0002 + 0.0058i
  -0.0002 - 0.0058i

Design specifications are <5% overshoot and <2s settling time. Using sisotool() on MATLAB the white region represents where I need my new poles to give desired specifications:

enter image description here

To compensate the system, I need to get rid, or perhaps more realistically minimize the effect, of the two complex poles. Then I need to re-shape my root locus.

This pair of dominant poles: des_poles = [-2.6+2.329j; -2.6-2.329j], give a closed loop response to get <5% overshoot and <2s settling time, and can also be seen to fit in the white area above.

I am stuck when it comes to cancelling out the complex pair of dominant poles. Should I add a complex zero, for example: 0.0004 - 0.0344i and 0.0002 + 0.0058i ? These don't seem to yield desired results.

Or should I only cancel out the poles which go unstable to the right hand side?

How can I cancel out the pair of dominant poles to add the poles which bring about a closed loop within desired specifications?

Any help is appreciated.

My thought process so far: - Outputs are still not making sense

I proceeded to add two pairs of complex zeros, to cancel out the complex dominant poles to end up with something like this:

enter image description here

I then add the pair of desired complex poles, and another pair of complex poels to the left to make the compensator realizable.

enter image description here

  • 1
    \$\begingroup\$ You do not want to cancel out any poles. You want to move them. \$\endgroup\$ – TimWescott Jan 3 '19 at 22:08
  • \$\begingroup\$ The question specifically states that I must use the pole zero cancellation technique to minimize the effects of the two pairs of dominant poles.. I know this is not ideal in the real world, but this is a design constraint. \$\endgroup\$ – rrz0 Jan 3 '19 at 22:17
  • 1
    \$\begingroup\$ I would make a complex pair of zeros equal to the higher-frequency complex poles, then see if you can come up with a suitable system design with the remaining three poles in play. In reality I'd only do something like that if I knew the resonant poles could be trusted not to move much in frequency, and then I'd choose the trustiest, possibly after spending some time with the chief mechanical designer tied to a chair while I interrogated them about which pole pair I could trust the most. \$\endgroup\$ – TimWescott Jan 4 '19 at 0:23
  • \$\begingroup\$ Placing zeros close to poles in an attempt to 'cancel' is not too clever. It's usually impossible to plonk a zero directly on top of a pole and expect both pole and zero to stay put. The result is a 'dipole' (a pole and zero in close proximity) that gives rise to a long-tail in the transient response. \$\endgroup\$ – Chu Jan 4 '19 at 1:28

As long as build-ability is not a design requirement, why not place two pairs of conjugate zeroes? Place one pair next to each pair of conjugate open-loop poles. Use SISOtool to play around with where exactly the zeroes should be placed in relation to the poles.

If the zeroes are placed appropriately close to the poles, the residues on the closed-loop poles can be made very small, which will minimize the effect of the slow, underdamped dominant closed-loop poles. (Can you prove this?)

Going beyond (what I assume is) the homework problem, @TimWescott's comment about having a heart-to-heart with the mechanical engineer is a good one. The closed-loop poles you end up with when you use to above-described "cancellation" method are dangerously close to the Imaginary axis. What's more, if you were to truly cancel them mathematically, it's extremely unlikely that you would be able to fully cancel them physically.

  • 1
    \$\begingroup\$ Thanks for the helpful suggestions, I will look into it further. Just to clarify, so if I have a complex pole at -0.0004 + 0.0344i should I add the zero exactly on top of it, also at -0.0004 + 0.0344i? The reason for my question is that I'm not sure how pz cancellation works for complex poles and can't find the required information online. \$\endgroup\$ – rrz0 Jan 4 '19 at 19:16
  • \$\begingroup\$ I don't see an immediate downside to exactly cancelling your complex open-loop poles. A secondary downside, however, is that if your open-loop poles are not exactly where you think they are, then you are doing the next person to review your work a disservice by claiming to have exactly cancelled the poles. \$\endgroup\$ – HermitianCrustacean Jan 5 '19 at 17:35
  • 1
    \$\begingroup\$ Based on your edit, I think there are a couple of confounding factors here: 1) The 4th order controller you've chosen is difficult to numerically model, so the SISOtool step solver may not be as robust as the Simulink solver. 2) The step response appears to be very sensitive to the open-loop gain. In SISOtool, try changing the gain the C block from 1 to 1.03. On my machine, the step response changes to the chattering form you see in Simulink. \$\endgroup\$ – HermitianCrustacean Jan 7 '19 at 22:21
  • 1
    \$\begingroup\$ Thanks for your insight. SISOtool and MATLAB responses are matching (same solver?),but the Simulink output is the one which is different. I dont get the chattering when changing the gain to 1.03 but do get a similar resposne when I move the complex pole from -200 +/- 1i to -10 +/- 1i. \$\endgroup\$ – rrz0 Jan 7 '19 at 22:33
  • 1
    \$\begingroup\$ The easiest way is to reduce the order of the system. You can do this without much cost by simply omitting the "old" dominant open loop poles and the "new" open loop zeroes you've placed to cancel them. Since in theory they should cancel each other, there is an argument to be made that they can be removed from the numerical model. \$\endgroup\$ – HermitianCrustacean Jan 9 '19 at 17:45

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.