MATLAB Answers

How are the numbers derived for the "Adjusting the Bandwidth" section of the "Bode Diagram Design" documentation for Control System Toolbox 9.5 (R2013a)?

6 views (last 30 days)
I am going through the documentation for Control System Toolbox 9.5 (R2013a) to learn more about how to use MATLAB with Bode diagram design. Specifically, I am looking at the section titled "Adjusting the Bandwidth" of the following page:
In this section, it says:
Because the design requirements include a 0.5-second rise time, try setting the gain so that the DC crossover frequency is about 3 rad/s. The rationale for setting the bandwidth to 3 rad/s is that, to a first-order approximation, this should correspond to about a 0.33-second time constant...
For a crossover at 3 rad/s, the compensator gain should be about 38.
How are these numbers obtained? Specifically, I would like to know more details on the following:
1. How does a compensator gain of 38 correspond to a crossover frequency of 3 rad/s for the DC motor transfer function provided?
2. How does the desired rise time of 0.5 seconds lead to the conclusion that the crossover frequency should be 3 rad/s? What does this have to do with the time constant?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 10 Jul 2020
Edited: MathWorks Support Team on 10 Jul 2020
The compensator value of 38 corresponds to a crossover frequency of 3 rad/s because this is the value that causes the loop transfer function's gain to be unity (i.e. 1) when you plug in the frequency of 3 rad/s into the transfer function. For this specific example, you can see that the gain is 1 for a compensator value of 38 by doing the following at the MATLAB prompt:
>> s = tf(s)
>> sys = 1.5 / (s^2 + 14*s + 40.02)
>> [mag,phase] = bode(38*sys,3)
In this case, 's' is the Laplace variable, 'sys' is the transfer function for the DC motor, and the BODE command is used to find the magnitude and phase for the loop transfer function with a gain of 38. The value ‘mag’ turns out to be 1.0917, which is roughly 1.
You can verify this by hand by taking the following steps:
1. Substitute (w*j) for 's' in the transfer function, where 'w' is the crossover frequency, and 'j' is the imaginary number, i.e. sqrt(-1).
2. Multiply the numerator and denominator by the complex conjugate of the denominator to obtain a complex expression in the form 'a + b*j'.
3. Take the magnitude and phase of the resulting complex expression to obtain the magnitude and phase of the loop transfer function at the specified crossover frequency. The magnitude is given by sqrt(a^2 + b^2), and the phase is given by arctan(b/a).
Additional information on the BODE command can be found by typing the following at the MATLAB prompt:
>> doc bode
For the second part, the DC crossover frequency is chosen from the desired rise time based on a couple standard design relations from control theory. If ‘tr’ is the rise time, ‘tau’ is the time constant, and ‘wc’ is the crossover frequency, the following relations are used:
tr is roughly equal to 1.4*tau, for rise time defined as 20% to 80% of steady-state value.
tau = 1 / wc
Therefore, if we want tr = 0.5s, we get a time constant of 0.5/1.4 = 0.36, which we have adjusted slightly to get tau = 0.33. Then, we take the inverse of tau to get the crossover frequency of 3 rad/s.


Sign in to comment.

More Answers (0)


No tags entered yet.




Translated by