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:
Example: First-Order System
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
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
Parallel Connection
Feedback Connection
Key Takeaways
- ✅ Control systems manage and regulate behavior
- ✅ Closed-loop provides feedback for better performance
- ✅ Transfer functions describe system dynamics
- ✅ Stability requires all poles in left half-plane
- ✅ Damping ratio affects transient response
Next: Chapter 2 - PID Control Fundamentals!