Skip to content

Docs Módulo compensador_maglev

labvirtual.simulador_maglev.compensador_maglev.Compensador

Classe que implementa o compensador para o sistema de controle por espaço de estados.

Source code in labvirtual/simulador_maglev/compensador_maglev.py
 6
 7
 8
 9
10
11
12
13
14
15
16
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
class Compensador:
    """Classe que implementa o compensador para o sistema
        de controle por espaço de estados.
    """
    def __init__(self, planta, P, Q):

        # Ordem do sistema
        n = planta.A.shape[0]

        # Projeto numérico do regulador integral
        Aa = np.block([[planta.A, np.zeros((n, 1))], [-planta.C, 0]])
        Ba = np.block([[planta.B], [0]])
        Ka = ct.acker(Aa, Ba, P)
        K = Ka[:, :n]
        Ki = Ka[:, n]

        # Projeto numérico do observador
        L = ct.acker(planta.A.T, planta.C.T, Q).T

        # Matrizes para implementação do compensador
        Ar = np.block(
            [[planta.A-planta.B@K-L@planta.C, -planta.B*Ki], [np.zeros((1, n+1))]])
        Br = np.block([[L, np.zeros((n, 1))], [-1, 1]])

        # Armazena atributos do objeto
        self.Ar = Ar
        self.Br = Br
        self.K = K[0, :]
        self.Ki = Ki
        self.Ka = Ka[0, :]
        self.L = L

    # Definindo os sinais de referência para rastreamento
    @staticmethod
    def ref_seno(t):
        """Referência senoidal."""
        return (mag.x0*np.sin(2*pi*t))

    @staticmethod
    def ref_quad(t):
        """Referência quadratica."""
        return (mag.x0)*(np.sin(2*pi*t) >= 0)

ref_seno(t) staticmethod

Referência senoidal.

Source code in labvirtual/simulador_maglev/compensador_maglev.py
39
40
41
42
@staticmethod
def ref_seno(t):
    """Referência senoidal."""
    return (mag.x0*np.sin(2*pi*t))

ref_quad(t) staticmethod

Referência quadratica.

Source code in labvirtual/simulador_maglev/compensador_maglev.py
44
45
46
47
@staticmethod
def ref_quad(t):
    """Referência quadratica."""
    return (mag.x0)*(np.sin(2*pi*t) >= 0)