# Pole Zero Cancellation on a Root Locus

Problem Design a controller in the feed-forward path to minimize the effects of the two pairs of dominant poles. Use the pole-zero cancellation technique via the root locus diagram.

I have a 5$$\^{th}\$$ order system with two pairs of dominant poles,

   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 overshoot $$\<5\% \$$ and settling time $$\<2s\$$. Using the sisotool() function in MATLAB, the white region represents where I need my new poles to be, to obtain the desired specifications:

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 overshoot $$\<5\%\$$ and settling time $$\<2s\$$, and can also be seen to fit in the white area above.

However, I am stuck when it comes to canceling out the complex pair of dominant poles. Should I add complex zeros, for instance, 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

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

• You do not want to cancel out any poles. You want to move them. Commented Jan 3, 2019 at 22:08
• 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.
– rrz0
Commented Jan 3, 2019 at 22:17
• 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. Commented Jan 4, 2019 at 0:23
• 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.
– Chu
Commented Jan 4, 2019 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.

• 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.
– rrz0
Commented Jan 4, 2019 at 19:16
• 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. Commented Jan 5, 2019 at 17:35
• 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. Commented Jan 7, 2019 at 22:21
• 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.
– rrz0
Commented Jan 7, 2019 at 22:33
• 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. Commented Jan 9, 2019 at 17:45