Ejemplo n.º 1
0
 def __init__(self, reg, model, delay, **opt):
     """
     Arguments:
     reg : `Models.Block`
         Controller block.
     model : `Models.Block`
         Model of a process/plant.
     opt : `dict`
         ``Models.Block`` options.
     """
     self.controller = reg
     self.model = model
     self.delay = Models.Delay(d=delay, **
                               opt) if delay is not None else None
     super().__init__(in_len=1, output_no_mem=True, **opt)
Ejemplo n.º 2
0
 def __init__(self, reg, model, delay, filter=None, **opt):
     """
     Arguments:
     ---------
     reg : `Models.Block`
         Regulator represantation.
     model : `Models.Block`
         Model of a process.
     delay : `int`
         Dead time. Number of samples to be delayed.
     filter : `Models.Block`, optional
         Filtering block.
     opt : `dict`, optional
         `Model.Block` options.
     """
     self.controller = reg
     self.model = model
     self.model_delay = Models.Delay(d=delay, **opt)
     self.filter = filter
     super().__init__(model='Smith-Predictor',
                      shape=(2, 1, 0),
                      model_func=None,
                      **opt)
Ejemplo n.º 3
0
"""Simulation parameters"""
N = 100  # Simulation time's end
dt = 0.01  # Sampling time
max_len = int(N / dt)  # Simulation's vectors' length
time = np.arange(0, N, dt)  # Time vector
u = np.ones((1, max_len))  # Input vector u=1
input_on_time = 20  # Start time of input
u[0, 0:int(input_on_time / dt)] = 0  # Input u = 0 if t < input_on_time
"""
Open loop - step response
"""
# Process P(s) = 12/(12s+1)e^-2 to state-space
A, B, C, D = [[-1 / 12]], [[1]], [[1]], [[0]]
d = int(2 / dt)
Plant_openloop0 = Models.StateSpace(ABCD=[A, B, C, D], dt=dt, len=max_len)
Delay_openloop0 = Models.Delay(d=d, dt=dt, len=max_len)
"""
******
*** IMC 1 - model with delay
******
"""
# Process P(s) = 12/(12s+1)e^-2s to state-space
Plant1 = Models.StateSpace(ABCD=[A, B, C, D], dt=dt, len=max_len)

Delay1 = Models.Delay(d=d, dt=dt, len=max_len)
# Model Pm(s) = 12/(12s+1)e^-2s
Plant_model1 = Models.StateSpace(ABCD=[A, B, C, D], dt=dt, len=max_len)
# Regulator Q(s) = 12s+1/6s+12
Ar1, Br1, Cr1, Dr1 = [[-2]], [[1]], [[-23 / 6]], [[2]]
Reg1 = Models.StateSpace(ABCD=[Ar1, Br1, Cr1, Dr1], dt=dt, len=max_len)
# IMC
Ejemplo n.º 4
0
"""Simulation parameters"""
N = 50  # Simulation time's end
dt = 0.1  # Sampling time
max_len = int(N / dt)  # Simulation's vectors' length
time = np.arange(0, N, dt)  # Time vector
u = np.ones((1, max_len))  # Input vector u=1
v = -1*np.ones((1, max_len))  # Disturbance vector v=-1, for t>=20
v_start = int(20 / dt)
v[0, :v_start] = 0

"""Open loop - step response"""
# Process model P(s) =  1/(1s+1)e^-5 to state-space
A, B, C, D = [[-1]], [[1]], [[1]], [[0]]
d = int(5 / dt)
Plant_openloop = Models.StateSpace(ABCD=[A, B, C, D], dt=dt, len=max_len)
Delay_openloop = Models.Delay(d=d, dt=dt, len=max_len)

"""Smith Predictor"""
# Process model P(s) = 1/(1s+1)e^-5 to state-space
Plant = Models.StateSpace(ABCD=[A, B, C, D], dt=dt, len=max_len)
Delay = Models.Delay(d=d, dt=dt, len=max_len)
# Model Pmo(s) = 1/(1s+1)
Model = Models.StateSpace(ABCD=[A, B, C, D], dt=dt, len=max_len)
# Regulator C(s) = (1s + 1)/(0.5s)
Ar, Br, Cr, Dr = [[0]], [[1]], [[2]], [[2]]
Reg = Models.StateSpace(ABCD=[Ar, Br, Cr, Dr], dt=dt, len=max_len)
# Output memory
Mem = Models.Memory(in_len=1, dt=dt, len=max_len)
# SmithPredictor structure
SmithPred = SP.SmithPredictor(reg=Reg, model=Model, delay=d, len=max_len)