I have a fifth order transfer function for which I designed a controller using pole-zero cancellation technique on a root locus. I am targeting \$<5%\$ overshoot and \$<2s\$ settling time. Currently, the overshoot criteria are satisfied.

Note I know that exact p-z cancellation is nearly impossible in real life.

The controller and the original 5th order transfer function are shown in Simulink below

enter image description here

which give a response with a long tail in the transient response, and thus, a very long settling time.

enter image description here

As per Chu's comment here,

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 poles 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.

and HermitianCrustacean's comment,

The 4th order controller you've chosen is difficult to numerically model ...

What would be the root cause of this unacceptably long settling time, inexact p-z cancellation (the controller which is difficult to numerically model), or both? Any suggestions on how to improve the response would also be greatly appreciated.

Poles of 5th order system

   Poles =

   1.0e+02 *

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

Zeros placed to cancel poles

enter image description here

4th order controller

enter image description here

I would be happy to provide further information if needed.

  • 1
    \$\begingroup\$ What is your hysteresis zone? If you've got .1 volt or so at the top to work with, the transient may not matter. \$\endgroup\$ Commented Jan 12, 2019 at 17:25
  • 1
    \$\begingroup\$ Thanks for your comment. Hysteresis is 0.0835 which is more than the 2% (0.02 for a step input of 1) criterion for settling time \$\endgroup\$
    – rrz0
    Commented Jan 12, 2019 at 17:56
  • \$\begingroup\$ Can you upload the Simulink File please? \$\endgroup\$
    – Brethlosze
    Commented Jan 21, 2019 at 6:00
  • 1
    \$\begingroup\$ I put this as a comment and not a solution because it's a guess. Try putting four zeros at \$s = -1\$ and see what happens. Then try putting them all at \$s = -4\$. Then see if that suggests a way that you can get things working. Note that (without actually checking), my intuition tells me that the system just isn't going to be terribly robust. \$\endgroup\$
    – TimWescott
    Commented Jan 29, 2019 at 21:51
  • 2
    \$\begingroup\$ One of the ways in which the system is "difficult to model" is that it is difficult to model a pole and zero exactly cancelling. \$\endgroup\$
    – david
    Commented Mar 22, 2019 at 7:47

2 Answers 2


The slow oscillating behavior in the system results from a pole with real part close to zero and, by looking at your step response, with a frequency close to \$0.1 \; \text{Hz}\$ \$\; (0.62 \; \text{rad/s})\$. So the poles causing it are the ones at \$s_0 = -0.02+0.58i\$ , and \$s_1 = -0.02-0.58i\$.

You should check if they really have been cancelled, and if they have not, try using root locus and different gains to change the pole positions away from the complex axis (having real parts as negative as possible).


I think you need to check the residue corresponding to pole you want to cancel to check if pole-zero cancellation is valid. Residue is the constant multiplied to partial fraction term of this pole. For example, if $$F(s)=\frac{26.25(s+4)}{s(s+3.5)(s+6)}$$ the residue of the partial fraction term of \$s+3.5\$ pole is \$1\$ which cannot be neglected so \$s+3.5\$ and \$s+4\$ cannot cancel each other, and for $$F(s)=\frac{26.25(s+4)}{s(s+4.01)(s+6)}$$ the residue of the partial fraction term of \$s+4.01\$ pole is \$0.033\$ which can be neglected so \$s+4.04\$ and \$s+4\$ can cancel each other.

Reference: Example 4.10, page 195 in Control Systems Engineering, Norman S. Nise, 6th Edition, 2010, John Wiley.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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