Chapter 1: Introduction to Control Systems

What is a Control System?

A control system is a system that manages, commands, or regulates other systems to achieve a desired output.

Open-Loop vs Closed-Loop

graph LR
    subgraph Open-Loop
        I1[Input] --> C1[Controller] --> P1[Plant] --> O1[Output]
    end
graph LR
    subgraph Closed-Loop
        R[Reference] --> S((+))
        S --> C[Controller]
        C --> P[Plant]
        P --> Y[Output]
        Y --> M[Sensor]
        M -->|Feedback| S
    end

Key Differences

Aspect Open-Loop Closed-Loop
Feedback No Yes
Accuracy Low High
Disturbance rejection Poor Good
Stability Usually stable Can be unstable
Complexity Simple Complex

Transfer Functions

The transfer function relates output to input in the Laplace domain:

G(s)=Y(s)U(s)G(s) = \frac{Y(s)}{U(s)}

Example: First-Order System

G(s)=Kτs+1G(s) = \frac{K}{\tau s + 1}

Where:

  • K = DC gain
  • τ = time constant
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# First-order system: G(s) = 1 / (s + 1)
num = [1]
den = [1, 1]
system = signal.TransferFunction(num, den)

# Step response
t, y = signal.step(system)

plt.figure(figsize=(10, 6))
plt.plot(t, y, 'b-', linewidth=2)
plt.xlabel('Time (s)')
plt.ylabel('Response')
plt.title('First-Order System Step Response')
plt.grid(True)
plt.show()

Second-Order Systems

G(s)=ωn2s2+2ζωns+ωn2G(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2}

Where:

  • ωn = natural frequency
  • ζ = damping ratio

Damping Cases

ζ Value Response Type
ζ = 0 Undamped (oscillatory)
0 < ζ < 1 Underdamped
ζ = 1 Critically damped
ζ > 1 Overdamped
from scipy import signal
import numpy as np
import matplotlib.pyplot as plt

# Different damping ratios
omega_n = 1.0
zetas = [0.1, 0.5, 0.7, 1.0, 2.0]

plt.figure(figsize=(12, 6))

for zeta in zetas:
    num = [omega_n**2]
    den = [1, 2*zeta*omega_n, omega_n**2]
    system = signal.TransferFunction(num, den)
    t, y = signal.step(system, T=np.linspace(0, 15, 500))
    plt.plot(t, y, label=f'ζ = {zeta}')

plt.xlabel('Time (s)')
plt.ylabel('Response')
plt.title('Second-Order System - Effect of Damping Ratio')
plt.legend()
plt.grid(True)
plt.show()

Stability Analysis

A system is stable if its output remains bounded for any bounded input.

Poles and Stability

  • All poles must have negative real parts
  • Poles in the right half-plane → unstable
  • Poles on imaginary axis → marginally stable
import numpy as np

# Example: Check stability
num = [1]
den = [1, 3, 2]  # s^2 + 3s + 2 = (s+1)(s+2)

poles = np.roots(den)
print(f"Poles: {poles}")
print(f"Stable: {all(np.real(poles) < 0)}")

Block Diagram Algebra

Series Connection

Gtotal=G1G2G_{total} = G_1 \cdot G_2

Parallel Connection

Gtotal=G1+G2G_{total} = G_1 + G_2

Feedback Connection

Gclosed=G1+GHG_{closed} = \frac{G}{1 + G \cdot H}

Key Takeaways

  1. ✅ Control systems manage and regulate behavior
  2. ✅ Closed-loop provides feedback for better performance
  3. ✅ Transfer functions describe system dynamics
  4. ✅ Stability requires all poles in left half-plane
  5. ✅ Damping ratio affects transient response

Next: Chapter 2 - PID Control Fundamentals!