Course materials · Control Engineering II

Frequency Response

English translation

Execution conditions

MATLAB · Control System Toolbox

Learning objectives

Understanding how amplitude and phase change at each frequency connects Bode plots to actual signals.

Measuring gain and phase with sinusoids

Starting conditions

G(s)=1s2+0.5s+1G(s)=\frac1{s^2+0.5s+1}, u=sin⁡(ωt)u=\sin(\omega t), ω∈{.2,1,3}\omega\in\{.2,1,3\} rad/s. 0≤t≤2000\le t\le 200 s, Δt=.01\Delta t=.01 s.

Procedure

  1. Calculate the output using lsim, and plot the input and output for only the final two periods.
  2. Fit the output to asin⁡(ωt)+bcos⁡(ωt)a\sin(\omega t)+b\cos(\omega t) by least squares to obtain gain a2+b2\sqrt{a^2+b^2} and phase atan2(b,a)\mathrm{atan2}(b,a).
  3. Compare with the gain and phase calculated using abs and angle from the complex response of squeeze(freqresp(G,omega)). angle returns radians. Convert both phase calculations to degrees in the table.

Results to retain

  • A frequency table with 3 rows and 3 plots comparing the final two periods.
s=tf('s'); G=1/(s^2+.5*s+1); omega=1; t=(0:.01:199.99)'; u=sin(omega*t);
y=lsim(G,u,t); keep=t>=t(end)-4*pi/omega;
% TODO: Fit a,b over the keep interval and calculate gain and phase.
 

Record results and self-check

ω [rad/s]
Measured gain
Calculated gain
Measured phase [deg]
Calculated phase [deg]

Points to check

  • Did you exclude the initial interval containing the transient?
  • Did you compare errors after aligning phase units and accounting for 360° periodicity?

Comparing damping and resonance

Starting conditions

Set the denominator to s2+as+1s^2+as+1 and compare a∈{.2,.5,1}a\in\{.2,.5,1\}. Use ω=logspace(-2,2,400).

Procedure

  1. Plot the gains and phases of the three models on the same frequency axis.
  2. Tabulate each model's maximum gain, its frequency, and DC gain.
  3. Choose one sinusoidal condition near the maximum gain and check it using the method from the first activity.

Results to retain

  • 1 set of Bode plots and a resonance comparison table.
s=tf('s'); omega=logspace(-2,2,400);
for a=[.2 .5 1]
response=squeeze(freqresp(1/(s^2+a*s+1),omega)); fprintf('a %.2g max magnitude %.9g\n',a,max(abs(response)));
end
% TODO: Complete the phase and resonance-frequency table.
 

Record results and self-check

a
Maximum gain
ω at maximum gain
DC Gain

Points to check

  • Did you distinguish dB from linear gain?
  • Did you use the same frequency grid and input amplitude for all models?

Checking frequency units in the time domain

Starting conditions

ω=1\omega=1 rad/s differs from f=1f=1 Hz. The second input is sin⁡(2πt)\sin(2\pi t).

Procedure

  1. First record the periods of both inputs, then calculate their responses for the same G.
  2. Record the phase difference both as a time delay and as an angle.
  3. Explain what you would misread on a Bode plot if you confused rad/s with Hz.

Results to retain

  • A unit comparison table with 2 rows and output plots.
s=tf('s'); G=1/(s^2+.5*s+1);
for w=[1 2*pi], fprintf('omega %.9g, period %.9g\n',w,2*pi/w); end
% TODO: Compare the responses to the two inputs on the same time axis.
 

Record results and self-check

Input
ω [rad/s]
Period [s]
Gain
Phase [deg]

Points to check

  • Did you use the relationship T=2πωT=\frac{2\pi}{\omega}?
  • Did you record amplitude changes and period changes as distinct phenomena?