I have this model in simulink (the graph is my output):

enter image description here

The step input has amplitude 0.5 m/s, and it steps up after 0.1 seconds. The gain $K_p=5$.

The saturation block is to keep the voltage between -3 and 3 volts.

The transfer function is the system, and it is given by $H(s) = \frac{16.94s + 579.5}{s^2 + 507.2s + 1224}$

The integration block is to convert velocity (in m/s) to position (in m). So the output is position.

I want my system response to be as fast as possible, and with no overshoot. On the graph above, an overshoot can be seen. To fix this, I added a $C_d=\frac{0.4s+1}{0.04s+1}$ term in the feedback loop.

enter image description here

As you can see there is no longer any overshoot. But it still takes about 3 seconds for the output to stabilize around the desired value.

How do I make the system response faster, such that the desired output value is reached sooner? Can I add a block in my simulink model perhaps?


Putting the $C_d$ block in the forward path sped up the response, but not by much. About 1 sec.

enter image description here

  • 1
    $\begingroup$ If Simulink has a model for the Holy Graal, add it, otherwise, there's always a trade-off between the system's response and its bandwidth: too fast a response means higher bw which invites instability, and low bw means slow response. No free lunch. $\endgroup$ – a concerned citizen Mar 9 at 17:55
  • $\begingroup$ You don't show a differentiation block -- there's an integrator in there (simulating the motor?) but no differentiator. When you say "The transfer function is the system" -- well, no, the whole system is described by the whole block diagram. What does that transfer function actually represent? Is it your motor and driver, just the motor, or what? $\endgroup$ – TimWescott Mar 9 at 17:59
  • $\begingroup$ @TimWescott Oops, my bad I got the input and output mixed up. It's actually velocity that is the input and position that is the output, I edited the question. As for the transfer function, it represents the relation between input voltage and the wheel velocity of my robot. So $H(s) = \frac{\text{output}}{\text{input}} = \frac{v_{velocity}}{V_{voltage}}$. I hope what I have written makes sense, if not, I can elaborate. $\endgroup$ – Carl Mar 9 at 18:05
  • $\begingroup$ why is your compensator in the feedback? $\endgroup$ – Ben Mar 9 at 18:48
  • $\begingroup$ Yes, putting it in the forward path should speed up the response. $\endgroup$ – TimWescott Mar 9 at 19:11

The transfer function is $H(s) = \frac{16.94s + 579.5}{s^2 + 507.2s + 1224}$

This transfer function has 2 poles, one slow pole at -2.4248 and a fast pole at -504.7752. The function has a slowish zero at -34.2. Good news, your poles and zero are all in the left-half plane. It is much easier to control a system with zeroes and poles in the left-half plane than in the right-half plane. Your slow pole at -2.4248 will limit your performance. Your slowish zero at -34.2 will probably limit your performance by creating some overshoot, or maybe not. Your fast pole will have a limited impact on the closed-loop performance, so you can simply ignore it for now.

You could design your controller to cancel the slow pole at -2.4248 and the slowish zero at -34.2. This would be a lead lag compensator looking like this

$$H_{LeadLag} = K\frac{s + 2.4248}{s+34.2}$$

Then you could set a PI in series with the lead-lag compensator and tune the P and I gain to get the closed-loop performance you want.

$$H_{c} = H_{LeadLag} \frac{K_ps + K_i}{s}$$ That being said, I'm not sure my solution is particularly robust. You should check the Gang of four stability functions https://www.cds.caltech.edu/~murray/courses/cds101/fa02/caltech/astrom-ch5.pdf.

Edit 2 :

Another solution, simply use a PI controller and set the ratio of the P and I gain to 2.4248 to cancel your slow pole. This controller will not cancel your slowish zero, but maybe you don't need to cancel it to get the performance you want.

$$H_{PI} = K\frac{s+2.4248}{s}$$

  • 2
    $\begingroup$ PID will be a good solution when speed is desired and limited by a low frequency pile. With PID you can virtually cancel the lowest frequency pole and the achievable response time is limited by the higher frequency pole. $\endgroup$ – Dan Boschen Mar 9 at 22:44
  • 2
    $\begingroup$ (Low frequency pole, not pile!) $\endgroup$ – Dan Boschen Mar 9 at 23:17
  • 1
    $\begingroup$ @Ben , thank you, this helped me out. $\endgroup$ – Carl Mar 10 at 10:02

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.