Main Content

Analysis of Systems with Time Delays

You can use analysis commands such as step, bode, or margin to analyze systems with time delays. The software makes no approximations when performing such analysis.

For example, consider the following control loop, where the plant is modeled as first-order plus dead time:

You can model the closed-loop system from r to y with the following commands:

s = tf('s');
P = 5*exp(-3.4*s)/(s+1);
C = 0.1 * (1 + 1/(5*s));
T = feedback(P*C,1);

T is a state-space model with an internal delay. For more information about models with internal delays, see Closing Feedback Loops with Time Delays.

Plot the step response of T:

stepplot(T)

Figure contains an axes. The axes contains an object of type line. This object represents T.

For more complicated interconnections, you can name the input and output signals of each block and use connect to automatically take care of the wiring. Suppose, for example, that you want to add feedforward to the control loop of the previous model.

You can derive the corresponding closed-loop model Tff by

F = 0.3/(s+4);
P.InputName = 'u';  
P.OutputName = 'y';
C.InputName = 'e';  
C.OutputName = 'uc';
F.InputName = 'r';  
F.OutputName = 'uf';
Sum1 = sumblk('e','r','y','+-');    % e = r-y
Sum2 = sumblk('u','uf','uc','++');  % u = uf+uc
Tff = connect(P,C,F,Sum1,Sum2,'r','y');

and compare its response with the feedback only design.

stepplot(T,Tff)
legend('No feedforward','Feedforward')

Figure contains an axes. The axes with title From: r To: y contains 2 objects of type line. These objects represent No feedforward, Feedforward.

The state-space representation keeps track of the internal delays in both models.

Considerations to Keep in Mind when Analyzing Systems with Internal Time Delays

The time and frequency responses of delay systems can look odd and suspicious to those only familiar with delay-free LTI analysis. Time responses can behave chaotically, Bode plots can exhibit gain oscillations, etc. These are not software or numerical quirks but real features of such systems. Below are a few illustrations of these phenomena.

Gain ripple:

s = tf('s');
G = exp(-5*s)/(s+1);
T = feedback(G,.5);
bodemag(T)

Figure contains an axes. The axes contains an object of type line. This object represents T.

Gain oscillations:

G = 1 + 0.5 * exp(-3*s);
bodemag(G)

Figure contains an axes. The axes contains an object of type line. This object represents G.

Jagged step response:

G = exp(-s) * (0.8*s^2+s+2)/(s^2+s);
T = feedback(G,1);
stepplot(T)

Figure contains an axes. The axes contains an object of type line. This object represents T.

Note the rearrivals (echoes) of the initial step function.

Chaotic response:

G = 1/(s+1) + exp(-4*s);
T = feedback(1,G);
stepplot(T,150)

Figure contains an axes. The axes contains an object of type line. This object represents T.

You can use Control System Toolbox™ tools to model and analyze these and other strange-appearing artifacts of internal delays.

Related Examples

More About