Skip to main content
Engineering LibreTexts

Chapter 9: Time Domain Specifications

  • Page ID
    123778
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\dsum}{\displaystyle\sum\limits} \)

    \( \newcommand{\dint}{\displaystyle\int\limits} \)

    \( \newcommand{\dlim}{\displaystyle\lim\limits} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Time-Domain Specifications and Response Characterization

    Control engineers often describe system behavior using time-domain performance metrics. These metrics provide insight into how a system responds to changes in input, particularly in reference tracking scenarios. When designing control systems, especially those modeled as second-order systems, these specifications become critical performance targets.

    Let's consider a generic 2nd order plant transfer function that can describe a number of systems, such as a spring-mass-damper system or torsional pendulum:

    $$
    H(s) = \frac{\sigma^2 + \omega^2}{(s + \sigma)^2 + \omega^2} = \frac{\omega_n^2}{s^2 + 2\zeta \omega_n s + \omega_n^2}
    \]

    Here, \( \omega_n \) is the undamped natural frequency and \( \zeta \) is the damping ratio.

    Classification of system response based on \( \zeta \):

    - \( \zeta > 1 \): overdamped – no oscillations, slow response
    - \( \zeta = 1 \): critically damped – fastest non-oscillatory response
    - \( 0 < \zeta < 1 \): underdamped – oscillatory, most common in mechanical systems
    - \( \zeta = 0 \): undamped – pure sinusoidal oscillations

    We are working with this general second-order transfer function:

    $$
    H(s) = \frac{\sigma^2 + \omega^2}{(s + \sigma)^2 + \omega^2}
    \]

    The poles of this system are:

    $$
    s = -\sigma \pm j\omega
    \]

    splane.jpg
    Figure \(\PageIndex{1}\): Poles in S-plane

    Alternatively, using the form:

    $$
    H(s) = \frac{\omega_n^2}{s^2 + 2\zeta \omega_n s + \omega_n^2}
    \]

    Solving the denominator gives:

    $$
    s = -\zeta \omega_n \pm j\omega_n \sqrt{1 - \zeta^2}
    \]

    Let us define:

    - \( \sigma = \zeta \omega_n \) (real part)
    - \( \omega = \omega_n \sqrt{1 - \zeta^2} \) (imaginary part = damped natural frequency)

    So the poles are located at:

    $$
    s = -\sigma \pm j\omega
    \]

    Geometric Interpretation in the s-Plane

    - The poles form a complex conjugate pair, symmetric about the real axis
    - These poles lie on a semicircle of radius \( \omega_n \) centered at the origin
    - A right triangle can be formed with:
    - Opposite side: \( \omega = \omega_n \sqrt{1 - \zeta^2} \)
    - Adjacent side: \( \sigma = \zeta \omega_n \)
    - Hypotenuse: \( \omega_n \)

    The angle between the pole vector and the imaginary axis is:

    $$
    \theta = \sin^{-1}(\zeta)
    \]

    We also use the identities:
    \( \sigma = \zeta \omega_n \)
    \( \omega = \omega_n \sqrt{1 - \zeta^2} \)

    Standard Time-Domain Performance Metrics

    We define several critical time-domain performance metrics to control the shape of the system output:

    - Rise Time \( t_r \): Time for the output to rise from 10% to 90% of the steady-state value.
    Approximate expression:
    $$
    t_r \approx \frac{1.8}{\omega_n}
    \]

    - Peak Time \( t_p \): Time at which the output reaches its first maximum:
    $$
    t_p = \frac{\pi}{\omega}
    \]

    - Maximum Overshoot \( M_p \): Percent by which output exceeds steady-state:
    $$
    M_p = e^{\left(-\frac{\pi \zeta}{\sqrt{1 - \zeta^2}}\right)} \times 100\%
    \]

    - Settling Time \( t_s \): Time for output to stay within 1% of the final value:
    $$
    t_s \approx \frac{4.6}{\zeta \omega_n}
    \]

    tdomainspecs.jpg
    Figure \(\PageIndex{2}\): Time Domain Specifications

    Worked Example: Step Input Response

    Let’s examine a step input:
    \( u(t) = 1 \)

    We know:

    $$
    P(s) = \frac{Y(s)}{U(s)}
    \]

    and

    $$
    U(s) = \frac{1}{s}
    \]

    We can compute the output \( Y(s) \), then use the inverse Laplace transform to get the time-domain output \( y(t) \).

    Let’s choose:

    - \( \omega_n = 10 \, \text{rad/s} \)
    - \( \zeta = 0.5 \)

    We find very strong agreement between both the analytical solution and fundamental time-domain metric definitions. This can also be verified using Mathematica or other simulation tools.

    It is important to recognize that some discrepancies between numerical results and metric approximations may occur. Many of these equations are empirical or derived from numerical fits. When designing control systems, we must remain aware of these approximations.

    Meeting Control Specifications

    In practice, specifications originate from user requirements, safety, or physical limits. For example, a temperature control system for a room might specify:

    - Overshoot must be less than 10%
    - Peak time must be less than 0.5 s
    - Settling time must be less than 2 s

    So the designer imposes:

    $$
    M_p < 10\%, \quad t_p < 0.5 \, \text{s}, \quad t_s < 2 \, \text{s}
    \]

    The control objective becomes designing a controller that moves the system poles to meet these specifications.

    Spring-Mass-Damper Response System

    Let’s consider a design example using a mass-spring-damper system:

    - Mass: \( m = 2 \, \text{kg} \)
    - Spring constant: \( k = 200 \, \text{N/m} \)
    - Damping coefficient: \( c = 8 \, \text{Ns/m} \)

    We want to check if the system meets the following design metrics:

    - Rise time \( t_r < 0.8 \, \text{s} \)
    - Maximum overshoot \( M_p < 15\% \)
    - Settling time \( t_s < 10.1 \, \text{s} \)

    We calculate the actual system values:

    $$
    t_p \approx 0.32 \, \text{s} \\
    M_p \approx 52\% \\
    t_r \approx 0.18 \, \text{s} \\
    t_s \approx 2.3 \, \text{s}
    \]

    Conclusion:
    The system fails the overshoot requirement badly. With 52% overshoot, the system might exceed design tolerances, potentially causing damage or instability. This is unacceptable.

    So how can we tune the system to reduce overshoot while maintaining the other requirements?

    Let’s take a more fundamental approach — by analyzing pole location in the \( s \)-domain and how it relates to our time-domain metrics.

    Relating Time-Domain Specs to the s-Plane

    We know from earlier that:

    - Settling time relates to the real part of the pole:
    $$
    t_s = \frac{4.6}{\sigma}
    \]

    - Rise time relates to the natural frequency:
    $$
    t_r = \frac{1.8}{\omega_n}
    \]

    - Overshoot relates to damping ratio \( \zeta \), which controls the angle \( \theta \) between the pole and the negative real axis:
    $$
    \theta = \cos^{-1}(\zeta)
    \]

    We can now construct a shaded region in the left-half of the s-plane that satisfies all of our time-domain design criteria.

    p1l9.jpg
    Figure \(\PageIndex{3}\): Pole Domains - Settling Time Bound

    This figure shows the leftmost vertical boundary determined from the settling time bound. Any poles to the left of this line will meet the settling time requirement.

    p2l9.jpg
    Figure \(\PageIndex{4}\): Pole Domains - Rise Time Bound

    This figure adds a circular arc centered at the origin representing a constant natural frequency \( \omega_n \). This corresponds to the rise time requirement.

    p3l9.jpg
    Figure \(\PageIndex{5}\): Pole Domains - Overshoot Bound

    This final figure overlays a sloped line indicating a fixed damping ratio \( \zeta \), or equivalently, an angle \( \theta \). This corresponds to the overshoot requirement.

    Design Check for the Mass-Spring-Damper System

    We are working with:

    - \( m = 2 \)
    - \( c = 8 \)
    - \( k = 200 \)

    We compute:

    $$
    \omega_n = \sqrt{\frac{k}{m}} = \sqrt{100} = 10 \\
    \zeta = \frac{c}{2\sqrt{km}} = \frac{8}{2 \cdot 20} = 0.2
    \]

    This damping ratio is too low — it violates the overshoot constraint.

    Thus, the poles fall outside the shaded "safe" region. Overshoot will be too high.

    Now, let’s fix that by adjusting damping.

    Adjusting Damping Coefficient \(c\) to Meet Pole Placement Specifications

    Consider the standard second-order transfer function for a spring-mass-damper system:

    $$
    H(s) = \frac{1}{m s^2 + c s + k}
    \]

    This system has the form:

    $$
    H(s) = \frac{1}{m \left(s^2 + \frac{c}{m} s + \frac{k}{m} \right)}
    = \frac{1}{m \left(s^2 + 2\zeta \omega_n s + \omega_n^2 \right)}
    \]

    where:

    $$
    \omega_n = \sqrt{\frac{k}{m}}, \quad
    \zeta = \frac{c}{2 \sqrt{km}}
    \]

    Suppose we are given design specifications that include:

    - Maximum overshoot less than 15% \( \Rightarrow \zeta > 0.516 \)
    - Rise time \(t_r < 0.8\,\text{s}\)
    - Settling time \(t_s < 10.1\,\text{s}\)

    Given our original parameters:

    $$
    m = 2, \quad c = 8, \quad k = 200
    \]

    We find:

    $$
    \omega_n = \sqrt{\frac{200}{2}} = \sqrt{100} = 10, \quad
    \zeta = \frac{8}{2 \cdot \sqrt{200 \cdot 2}} = \frac{8}{2 \cdot 20} = 0.2
    \]

    This damping ratio is insufficient (\(0.2 < 0.47\)) and results in excessive overshoot.

    To meet the overshoot spec, we must increase \(c\) so that \(\zeta > 0.47\).

    Solving for the new required damping coefficient:

    $$
    \zeta_{\text{min}} = \frac{c_{\text{new}}}{2 \sqrt{k m}}
    \quad \Rightarrow \quad
    c_{\text{new}} = 2 \zeta_{\text{min}} \sqrt{k m}
    \]

    Substitute in values:

    $$
    c_{\text{new}} = 2 \cdot 0.47 \cdot \sqrt{200 \cdot 2}
    = 2 \cdot 0.47 \cdot 20 = 18.8
    \]

    Therefore, to move the poles into the desired region, we must increase the damping coefficient from 8 to:

    $$
    \boxed{c = 18.8}
    \]

    This ensures \(\zeta = 0.47\), satisfying the overshoot specification, and places the poles within the allowable region of the \(s\)-plane.

    p4l9.jpg
    Figure \(\PageIndex{6}\): Pole Domains

    This should make sense conceptually because we increased the damping coefficient to damp out the overshoot so our conceptual understanding matches our numerical understanding!!


    This page titled Chapter 9: Time Domain Specifications is shared under a CC BY-NC-ND license and was authored, remixed, and/or curated by Joshua P. Steimel.

    • Was this article helpful?