Skip to content

Docs Módulo implementacao_controlador

labvirtual.simulador_aeropendulo.implementacao_controlador.ControladorDiscreto

Classe que implementa os controladores para o sistema.

Parameters:

Name Type Description Default
referencia int

int - Sinal de referência para o controlador seguir.

1
T float

Período de amostragem do controlador.

0.0625
Return

None

Source code in labvirtual/simulador_aeropendulo/implementacao_controlador.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
class ControladorDiscreto:
    """
        Classe que implementa os controladores para o sistema.
        Args:
            referencia: int - Sinal de referência para o controlador seguir.
            T: Período de amostragem do controlador.
        Return:
            None
    """
    def __init__(self, referencia: int = 1, T: float = 0.0625) -> None:
        self.uk = 0
        self.uk1 = 0
        self.ek = 0
        self.ek1 = 0
        self.yout = 0
        self.k = 0
        self.r = referencia
        self.T = T

    # Pega o sinal do sensor
    def set_sensor(self, yout: float = 1) -> None:
        """
            Recebe o sinal de saída, o ângulo do braço do aeropêndulo.
        Args:
            yout: Sinal do sensor de ângulo.
        Return:
            None
        """
        self.yout = yout

    # disponibiliza o sinal de controle
    def get_u(self) -> float:
        """
            Método que retorna o sinal de controle.
        Return:
            float: Sinal de controle.
        """
        return self.uk

    # Calcula o sinal de controle Proporcional Integral.
    def control_pi(self) -> None:
        """
            Método que implementa o controle Proporcional Integral
            discretizado.
        Return:
            None
        """
        self.ek = self.r - self.yout
        self.uk = self.uk1 + 0.2165 * self.ek - 0.2087 * self.ek1
        self.ek1 = self.ek
        self.uk1 = self.uk
        self.k = self.k + 1

    def controle_proporcional(self, kp=1.0):
        """
            Método que implementa o controle Proporcional discretizado.
        Args:
            kp: Ganho do controlador Proporcional.
        Return:
            None
        """
        self.ek = self.r - self.yout
        self.KP = kp
        self.uk = self.KP * self.ek

set_sensor(yout=1)

Recebe o sinal de saída, o ângulo do braço do aeropêndulo.

Parameters:

Name Type Description Default
yout float

Sinal do sensor de ângulo.

1
Return

None

Source code in labvirtual/simulador_aeropendulo/implementacao_controlador.py
37
38
39
40
41
42
43
44
45
def set_sensor(self, yout: float = 1) -> None:
    """
        Recebe o sinal de saída, o ângulo do braço do aeropêndulo.
    Args:
        yout: Sinal do sensor de ângulo.
    Return:
        None
    """
    self.yout = yout

get_u()

Método que retorna o sinal de controle.
Return

float: Sinal de controle.

Source code in labvirtual/simulador_aeropendulo/implementacao_controlador.py
48
49
50
51
52
53
54
def get_u(self) -> float:
    """
        Método que retorna o sinal de controle.
    Return:
        float: Sinal de controle.
    """
    return self.uk

control_pi()

Método que implementa o controle Proporcional Integral
discretizado.
Return

None

Source code in labvirtual/simulador_aeropendulo/implementacao_controlador.py
57
58
59
60
61
62
63
64
65
66
67
68
def control_pi(self) -> None:
    """
        Método que implementa o controle Proporcional Integral
        discretizado.
    Return:
        None
    """
    self.ek = self.r - self.yout
    self.uk = self.uk1 + 0.2165 * self.ek - 0.2087 * self.ek1
    self.ek1 = self.ek
    self.uk1 = self.uk
    self.k = self.k + 1

controle_proporcional(kp=1.0)

Método que implementa o controle Proporcional discretizado.

Parameters:

Name Type Description Default
kp

Ganho do controlador Proporcional.

1.0
Return

None

Source code in labvirtual/simulador_aeropendulo/implementacao_controlador.py
70
71
72
73
74
75
76
77
78
79
80
def controle_proporcional(self, kp=1.0):
    """
        Método que implementa o controle Proporcional discretizado.
    Args:
        kp: Ganho do controlador Proporcional.
    Return:
        None
    """
    self.ek = self.r - self.yout
    self.KP = kp
    self.uk = self.KP * self.ek