There are 2 main types of process responses, (1) Self-regulating and (2) Integrating. Self-regulating responses are more common.
For self-regulating responses, a finite change in the process input will move the process output towards a new, stable value. In other words, the process self-regulates to a new steady state. For example, the temperature of a liquid in response to increased heating is a self-regulating process.
import control
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
G = control.tf([2],[1.5,1]) # Transfer function for the process
print(G)
T = np.linspace(0,10,100) # Time scale of the process
# Input vector
u = np.zeros(len(T))
u[20:] = 1
# Generate a step response
t, yout, _ = control.forced_response(G,T,u)
# Plot
plt.figure(1, figsize=(5,3))
plt.xlabel('Time')
plt.ylabel('Output')
plt.plot(t,yout)
plt.plot(t,u, '--')
plt.show()
2 --------- 1.5 s + 1
For integrating processes, a finite change in process input will produce a ramp response in the process output. It does not move towards a new stable value.
import control
import matplotlib.pyplot as plt
G = control.tf([0.5],[1,0]) # Transfer function for the process
print(G)
T = np.linspace(0,10,100) # Time scale of the process
# Input vector
u = np.zeros(len(T))
u[20:] = 1
# Generate a step response
t, yout, _ = control.forced_response(G,T,u)
# Plot
plt.figure(1, figsize=(5,3))
plt.xlabel('Time')
plt.ylabel('Output')
plt.plot(t,yout)
plt.plot(t,u, '--')
plt.show()
0.5 --- s
Observe how the process output stabilizes in response to the change in input. Observe that the process output is now at a new steady state value of 1.5, even though the process input has returned to 0.
import control
import matplotlib.pyplot as plt
G = control.tf([0.5],[1,0]) # Transfer function for the process
print(G)
T = np.linspace(0,10,100) # Time scale of the process
# Input vector
u = np.zeros(len(T))
u[20:50] = 1
# Generate a step response
t, yout, _ = control.forced_response(G,T,u)
# Plot
plt.figure(1, figsize=(5,3))
plt.xlabel('Time')
plt.ylabel('Output')
plt.plot(t,yout)
plt.plot(t,u, '--')
plt.show()
0.5 --- s
Compare this to the output of a self-regulating process below. Here, the process returns to the original steady state value of 0 when the input returns to 0.
import control
import matplotlib.pyplot as plt
G = control.tf([2],[1.5,1]) # Transfer function for the process
print(G)
T = np.linspace(0,10,100) # Time scale of the process
# Input vector
u = np.zeros(len(T))
u[20:50] = 1
# Generate a step response
t, yout, _ = control.forced_response(G,T,u)
# Plot
plt.figure(1, figsize=(5,3))
plt.xlabel('Time')
plt.ylabel('Output')
plt.plot(t,yout)
plt.plot(t,u, '--')
plt.show()
2 --------- 1.5 s + 1
Later on in the course, we will see that integrating processes will always have at least one pole at the origin, i.e. there is a $\frac{1}{s}$ term in the transfer function.