Esempio n. 1
0
 def __init__(self, n, A, B, C, D, Ak, Bk, Ck, Q, R, Kp, Ki, epsilon, Ts, plant):
     self.reduced_model = ReducedModel(n, A, B, C, D)
     self.feedback_controller = Controller(Kp, Ki, n, Ak, Bk, Ck, Q, R)
     self.delay_block = DelayBlock(epsilon, Ts)
     self.plant = plant
     self.y_err = 0.0
     self.y = 0.0
     self.rm_out = 0.0
     self.u = 0.0
Esempio n. 2
0
class Model:
    def __init__(self, n, A, B, C, D, Ak, Bk, Ck, Q, R, Kp, Ki, epsilon, Ts, plant):
        self.reduced_model = ReducedModel(n, A, B, C, D)
        self.feedback_controller = Controller(Kp, Ki, n, Ak, Bk, Ck, Q, R)
        self.delay_block = DelayBlock(epsilon, Ts)
        self.plant = plant
        self.y_err = 0.0
        self.y = 0.0
        self.rm_out = 0.0
        self.u = 0.0

    def closed_loop(self, y_top, y_bottom):
        self.rm_out = self.reduced_model.compute_y(self.u)
        self.y_err = (self.rm_out - self.delay_block.get_last_entry()) + y_bottom - self.y
        self.delay_block.update(self.rm_out)
        controller_out = self.feedback_controller.compute_next_u(self.y_err)
        self.u = y_top + controller_out
        self.y = self.plant.compute_y(self.u)
        return self.y