Você está na página 1de 7

Atividade 5 de Controle Digital - Pojeto de

Controladores por Espaço de Estados


Karen A. M. Santos ∗ Lucas A. Bueno ∗∗

Faculdade de Engenharia Mecatrônica, Centro Federal de Ensino
Tecnológico, MG, (e-mail:karemvzp@hotmail.com).
∗∗
Faculdade de Engenharia Mecatrônica, Centro Federal de Ensino
Tecnológico, MG, (e-mail:al.lucasbueno@gmail.com)

1. CASO 1 de acomodação, é possivel determinar o valor de ωn , como


mostrado na equação (22);
Para o caso 1, o processo em estudo é representado pela
equação (1). 4
ωn = = 1.0256 (6)
1 × 3.9
1
G1p (s) = e−2.8s (1) Então, substituindo os valores de ζ e ωn nas equações
(s + 0.1)
(8) e (7), foram encontrados θ e r.
1.1 Discretização p
θ = ωn T 1 − ζ2 = 0 (7)
O sistema G1 (s) = ZOH ∗ G1p (s) foi convertido para
espaço de estados e discretizado, com a amostragem T=
0.39 (1 décimo do tempo de acomodação desejado para o r = eζωn T = 0.6703 (8)
sistema), e sua equação é dada por:
Foi obtido, assim, o pólo dominante:

x(k+1) = Ad1 x(k) + Bd1 u(k)
(2) z = re±jθ = 0.6703 (9)
y(k) = Cd1 x(k)

Em que: 1.4 Projeto do controlador

Ad1 = [0.96078944] (3) Primeiramente, foi calculada a controlabilidade de (2),


atravéz da ferramenta ctrb da biblioteca de controle do
python, para a matriz [Ad Ad Bd ]. Concluiu-se que o sis-
Bd1 = [0.39210561] (4) tema é controlável.
O controle desse caso inclui a ação integral sobre o erro
Cd1 = [1] (5) de regulação.
Foi definido que o sistema controlado deveria possuir os
1.2 Especificações de Projeto pólos calculados(apresentados em (9)), alocando-os numa
matriz P:
A tabela 1 mostra as especificações dos parâmetros de
desempenho desejados para o processo.
P1 = [0.6703 0] (10)
Tabela 1. Especificações para o Caso 1
Em seguida, foi utilizada a função place da biblioteca de
Parêmetro ts tr OS% tp controle do python, que calcula o controlador K2 a partir
Especificação Ts (M.Aberta)/2 < sem restrição 0% - dos pólos desejados e das matrizes Ad2 e Bd2 .
K̃1 = [2.45033332 −0.18719447]
1.3 Cálculo dos Parâmetros (11)

O sistema em malha aberta possui tempo de acomo-


dação de aproximadamente 7.7 s, assim, os parâmetros em que:
foram calculados para Ts = 3.9 s Para este caso, como o
overshoot desejado é de 0%, foi definido zeta unitário, pois K1 = [2.45033332] (12)
em sistemas de segunda ordem este valor garante resposta
criticamente amortecida. Portanto, com o valor de zeta
determinado e utilizando o valor desejado para o tempo Ka1 = −0.18719446601424702 (13)
1.5 Aplicação do Controlador "
−0.08849733 −0.6549396 −0.41454875
#
Ad2 = 0.31888365 0.6130467 −0.32011177 (16)
O controlador obtido foi então aplicado ao sistema
0.24623982 0.86061126 0.87159851
utilizando o código apresentado no apêndice. A saı́da do
sistema é a parte superior da Figura 1, a parte inferior é
0.31888365
" #
referente ao sinal de controle.
Bd2 = 0.24623982 (17)
0.09877038
1.0

0.8

0.6
Cd2 = [0 0 1] (18)
0.4

0.2

0.0
2.2 Especificações de Projeto
0 5 10 15 20 25

0.175

0.150
A tabela 2 mostra as especificações dos parâmetros de
0.125

0.100
desempenho desejados para o processo.
0.075

0.050

0.025
Tabela 2. Especificações para o Caso 2
0.000
0 5 10 15 20 25
Tempo(s)
Parêmetro ts tr OS% tp
Especificação 10s sem restrição 10% -
Figura 1. Saı́da do sistema em resposta a um degrau
unitário 2.3 Cálculo dos Parâmetros
Observa-se que nessa topologia, o sistema alcançou %OS = Substituindo o valor do tempo de acomodação desejado
0%, atendendo à especificaçõe de overshoot. Porém o mostrado na tabela 2 em (19), é possı́vel estabelecer a
tempo de acomodação Ts = 20s não é exatamente o relação entre ζ e ωn , como mostrado em (20):
esperado. A seguinte Figura apresenta o comportamento
dos estados durante a simulação.
4
ζωn = (19)
ts
40

35 4
ζωn = =4 (20)
30 1
25

Assim, zeta foi calculado em (21), substituindo no valor


20

de overshoot um valor inferior ao desejado, para que a folga


15
garanta o valor desejado.
10

−ln(%Os )/100
0
ζ=q = 0.7156 (21)
0 5 10 15 20 25

π 2 + ln( %O s 2
100 )

Figura 2. Estados do sistema em resposta a um degrau Então, com o valor de ζ definido como 0.5, é possivel
unitário determinar o valor de ωn , como pode ser observado na
equação (22).
2. CASO 2
4
ωn = = 0.5589 (22)
Para o caso 2, o processo em estudo é represantado pela 0.5
equação (32)
Assim, substituindo os valores de ζ e ωn nas equações
(41) e (40), foram encontrados θ e r.
s+2
G2p (s) = (14)
s2 + 0.2s + 0.65 p
θ = ωn T 1 − ζ 2 = 0.3904 (23)
2.1 Discretização

O sistema G2 (s) = ZOH ∗ G2p (s) foi convertido para r = eζωn T = 0.6703 (24)
espaço de estados e discretizado, com a amostragem T=
1 (1 décimo do tempo de acomodação desejado para o Foram obtidos, assim, os pólos dominantes:
sistema), e sua equação é dada por: z1,2 = re±jθ = 0.5729 ± 0.3479 ∗ 1j (25)

x(k+1) = Ad2 x(k) + Bd2 u(k) 2.4 Projeto do controlador
(15)
y(k) = Cd2 x(k)
Primeiramente, foi calculada a controlabilidade de (15),
Na qual atravéz da ferramenta ctrb da biblioteca de controle do
python, para a matriz [Ad Ad Bd ]. Concluiu-se que o sis- Observa-se que nessa topologia, o sistema alcançou Ts =
tema é controlável. 10s e %OS = 10%, atendendo às especificações. A seguinte
Figuta mostra o comportamento dos estados durante a
O controle desse caso inclui a ação integral sobre o erro simulação.
de regulação.
Foi definido que o sistema controlado deveria possuir os
pólos calculados(apresentados em (25)), alocando-os numa 1.0

matriz P:
0.8

0.6

P2 = [0.5729 + 0.3479 ∗ 1j 0.5729 − 0.3479 ∗ 1j 0.001 0.002]


(26) 0.4

Em seguida, foi utilizada a função place da biblioteca de


0.2

controle do python, que calcula o controlador K2 a partir 0.0

dos pólos desejados e das matrizes Ad2 e Bd2 . 0 5 10 15 20 25

K̃2 = [1.19075754 2.76693951 0.8178906 −0.79295763]


(27)
Figura 4. Estados do sistema em resposta a um degrau
unitário
em que:
3. CASO 3
K2 = [1.19075754 2.76693951 0.8178906] (28) Por fim, para o caso 3, o processo em estudo é represen-
tado pela equação (32).
Ka2 = −0.7929576300 (29)
5(s − 5)
G3 (s) = (32)
2.5 Observador de Estados (s − 2)(s + 2)

Foi verificado, a princı́pio, se o sistema é observável, 3.1 Discretização


utilizando a ferramenta obsv da biblioteca de controle do
python. Conclui-se que é. O sistema G3 (s) = ZOH ∗ G3p (s) foi discretizado, com a
amostragem T= 0.5, e sua equação é dada por:
Foi definido, empiricamente, uma matriz P que inclua
os polos desejados para o observador mais rápidos que o 
sistema: x(k+1) = Ad3 x(k) + Bd3 u(k)
(33)
Pobs2 = [0.33 0.32 0.31] (30) y(k) = Cd3 x(k)

Aplicando a função place da biblioteca de controle do Na qual


python obteve-se o ganho do observador,
 
Kobs2 = [−0.23139396 −0.46072332 0.43614788] (31) 1.54308063 1.17520119
Ad3 = (34)
1.17520119 1.54308063
2.6 Aplicação do Controlador  
2.35040239
Bd3 = (35)
O controlador obtido foi então aplicado ao sistema, 1.08616127
utilizando o código apresentado no Apêndice. A saı́da do
sistema é a parte superior da Figura 3, a parte inferior é Cd3 = [1.25 −3.125] (36)
referente ao sinal de controle.
3.2 Especificações de Projeto

1.0
A tabela 3 mostra as especificações dos parâmetros de
0.8

0.6
desempenho desejados para o processo escolhidas pelos
0.4 autores.
0.2

0.0
0 5 10 15 20 25
Tabela 3. Especificações para o Caso 3
1.4

1.2 Parêmetro ts tr OS% tp


1.0

0.8
Especificação <15s sem restrições <20% -
0.6

0.4

0.2

0.0
0 5 10 15 20 25
3.3 Cálculo dos Parâmetros
Tempo(s)

Assim como feito em casos anteriores, a relação entre


Figura 3. Saı́da do sistema em resposta a um degrau ζ e ωn pode ser obtida substituindo o valor do tempo de
unitário acomodação desejado mostrado na tabela 3 em (37).
4 Foi definido, empiricamente, uma matriz P que inclua
ζωn = = 1.1 (37) os polos desejados para o observador mais rápidos que o
3.6
sistema:
O valor desejado de overshoot foi substituido na equação Pobs3 = [0.01 0.02] (47)
(??), de forma a obter o valor de ζ, como pode ser visto
na equação (38). Aplicando a função place da biblioteca de controle do
python obteve-se o ganho do observador,
−ln(15)/100 Kobs3 = [−1.67031015 −1.64609567] (48)
ζ=q = 0.5912 (38)
15 2
π 2 + ln( 100 )
3.6 Aplicação do Controlador
Assim, é possivel determinar o valor de ωn , mostrado
em (39)
O controlador obtido foi então aplicado ao sistema
utilizando o código apresentado no apêndice. A saı́da do
ωn = 1.8777 (39) sistema é a parte superior da Figura 5, a parte inferior é
referente ao sinal de controle.
Em seguida, foram substituı́dos os valores de ζ e ωn nas
equações (41) e (40), encontrando assim θ e r.
p 1.0

θ = ωn T 1 − ζ 2 = 1.5145rad (40) 0.8

0.6

0.4

0.2

ζωn T
r=e = 0.3296 (41) 0.0
0 5 10 15 20 25

0.175

Substituindo os valores calculados, foram obtidos os pólos 0.150

0.125

dominantes que estarão presentes na identidade diofantina: 0.100

0.075

z1,2 = re±jθ = 0.8607 ± 0.1583i (42) 0.050

0.025

0.000

0 5 10 15 20 25
Tempo(s)

3.4 Projeto do controlador

Primeiramente, foi calculada a controlabilidade de (15), Figura 5. Saı́da do sistema em resposta a um degrau
atravéz da ferramenta ctrb da biblioteca de controle do unitário
python, para a matriz [Ad Ad Bd ]. Concluiu-se que o sis-
tema é controlável. Observa-se que o tempo de acomodação e o overshoot
O controle desse caso inclui a ação integral sobre o erro atenderam aos parâmetros estabelecidos.
de regulação. A seguinte Figura apresenta o comportamento dos estados
Foi definido que o sistema controlado deveria possuir os durante a simulação.
pólos calculados(apresentados em (42)), alocando-os numa
matriz P:
50

P3 = [0.8607 + 0.1583i 0.8607 − 0.1583i 0.01] (43) 40

Em seguida, foi utilizada a função place da biblioteca de 30

controle do python, que calcula o controlador K2 a partir


20

dos pólos desejados alocados em (43) e das matrizes Ad2 e


Bd2 . 10

K̃3 = [0.71139822 0.62581012 0.0064843] (44)


0

0 5 10 15 20 25

em que:

K2 = [0.71139822 0.62581012] (45) Figura 6. Estados do sistema em resposta a um degrau


unitário

Ka2 = 0.0064843 (46)


4. REFERÊNCIAS
3.5 Observador de Estados
DORF, R.C; BISHOP, R.H. Sistema de Controle
Modernos. 11ª ed. Rio de Janeiro: LTC, 2011.
Foi verificado, a princı́pio, se o sistema é observável,
utilizando a ferramenta obsv da biblioteca de controle do NISE, N.S. Engenharia de Sistemas de Controle. 6ª
python. Conclui-se que é. ed. São Paulo: Gen LTC, 2012.
Apêndice A. CÓDIGO EM PYTHON UTILIZADO PARA O CASO 1

import numpy as np
import matplotlib.pyplot as plt
import control as ctrl
plt.close(’all’)
#----------SISTEMA CONTÍNUO
def Simul_Sist_Cont(sys,Ti,T,dtT,Ue,IC):
io_sys = ctrl.LinearIOSystem(sysss)
temp = np.linspace(Ti, Ti+T, dtT)
Temp, yout, xout = ctrl.input_output_response(io_sys, temp, Ue, IC, return_x=True)
return Temp, yout[yout.shape[0]-1], xout.T[xout.shape[1]-1]
#----------PROJETO DO CONTROLADOR
A = [-0.1]
B = [1]
C = [1]
D = [0]
sysss = ctrl.ss(A,B,C,D)
T = 0.39
sysssd = ctrl.c2d(sysss,T,method=’zoh’)
Adaum1 = np.concatenate((sysssd.A, np.zeros((1,1))), axis=1)
Adaum2 = np.concatenate((-sysssd.C*sysssd.A, np.eye(1)), axis=1)
Adaum = np.concatenate((Adaum1, Adaum2), axis=0)
Bdaum = np.concatenate((sysssd.B, -sysssd.C*sysssd.B), axis=0)
Ctr=ctrl.ctrb(Adaum, Bdaum)
Post = np.linalg.matrix_rank(Ctr)
#----------CONTROLADOR
P = [0.7385, 0]
K = ctrl.place(Adaum,Bdaum,P)
Kp = K[0,0:1]
Ka = K[0,1]
Acl = Adaum-Bdaum*K
ConfAutVal = np.linalg.eig(Acl)
#----------IMPLEMENTAÇ~
AO
x1ci = 0
xaci = 0
IC = [[x1ci]]
Ti = 0
u0 = 0
y0 = 0
nAmost = 100
dtT = 1000
r = np.concatenate((np.zeros(1), np.ones(nAmost-1)))
y = np.zeros(nAmost+1)
x1 = np.concatenate((x1ci*np.ones(1), np.zeros(nAmost)))
xa = np.concatenate((xaci*np.ones(1), np.zeros(nAmost)))
u = np.zeros(nAmost)
Amostras = np.zeros(nAmost)
cont = 0
xa1 = xaci
while (Ti<=(nAmost-1)*T):
Amostras[cont] = cont
xk = IC
xa = xa1+r[cont]-y[cont]
u1 = -Kp*xk+(-Ka)*xa
u[cont] = u1[0, 0]
Ue = u1[0, 0]*np.ones_like(dtT)
Temp, yout, xout = Simul_Sist_Cont(sysss,Ti,T,dtT,Ue,IC)
cont = cont+1
y[cont] = yout
x1[cont] = xout[0]
IC = [[xout[0]]]
xa1 = xa
Ti = Ti + T
#----------GRÁFICOS
plt.figure(0)
plt.subplot(2,1,1)
plt.step(Amostras[0:nAmost-1]*T, y[0:nAmost-1], r[0:nAmost-1],’--’,where = ’post’,color=’cornflowerblue’)
plt.xlim([0, 25])
plt.grid()
plt.subplot(2,1,2)
plt.step(Amostras[0:nAmost-1]*T, u[0:nAmost-1],where = ’post’)
plt.xlabel(’Tempo(s)’)
plt.xlim([0,25])
plt.grid()
plt.figure(1)
plt.step(Amostras[0:nAmost-1]*T, x1[0:nAmost-1],Amostras[0:nAmost-1]*T,where = ’post’)
plt.xlim([0,25])
plt.grid()
Apêndice B. CÓDIGO EM PYTHON UTILIZADO PARA O CASO 2

import numpy as np
import matplotlib.pyplot as plt
import control as ctrl
plt.close(’all’)
def Simul_Sist_Cont(sys,Ti,T,dtT,Ue,IC): #----------SISTEMA CONTÍNUO
io_sys = ctrl.LinearIOSystem(sysss)
temp = np.linspace(Ti, Ti+T, dtT)
Temp, yout, xout = ctrl.input_output_response(io_sys, temp, Ue, IC, return_x=True)
return Temp, yout[yout.shape[0]-1], xout.T[xout.shape[1]-1]
A = [[-2.2, -1.05, -1.30], [1, 0, 0], [0, 1, 0]] #----------PROJETO DO CONTROLADOR
B = [[1], [0], [0]]
C = [0, 0, 1]
D = [0]
sysss = ctrl.ss(A,B,C,D)
T = 1
sysssd = ctrl.c2d(sysss,T,method=’zoh’)
Adaum1 = np.concatenate((sysssd.A, np.zeros((3,1))), axis=1)
Adaum2 = np.concatenate((-sysssd.C*sysssd.A, np.eye(1)), axis=1)
Adaum = np.concatenate((Adaum1, Adaum2), axis=0)
Bdaum = np.concatenate((sysssd.B, -sysssd.C*sysssd.B), axis=0)
Ctr=ctrl.ctrb(Adaum, Bdaum)
Post = np.linalg.matrix_rank(Ctr)
P = [0.5729 + 0.3479*1j, 0.5729 - 0.3479*1j, 0.001, 0.002] #----------CONTROLADOR
K = ctrl.place(Adaum,Bdaum,P)
Kp = K[0,0:3]
Ka = K[0,3]
Acl = Adaum-Bdaum*K
ConfAutVal = np.linalg.eig(Acl)
Obs = ctrl.obsv(sysssd.A, sysssd.C) #----------OBSERVADOR
Poste = np.linalg.matrix_rank(Obs)
Pe = [0.33, 0.32, 0.31]
Ke = ctrl.place(sysssd.A.T, sysssd.C.T,Pe)
x1ci = 0 #----------IMPLEMENTAÇ~
AO
x2ci = 0
x3ci = 0
xaci = 0
xe1ci = 0
xe2ci = 0
xe3ci = 0
IC = [[x1ci], [x2ci], [x3ci]]
Ti = 0
u0 = 0
y0 = 0
nAmost = 100
dtT = 1000
r = np.concatenate((np.zeros(1), np.ones(nAmost-1)))
y = np.zeros(nAmost+1)
x1 = np.concatenate((x1ci*np.ones(1), np.zeros(nAmost)))
x2 = np.concatenate((x2ci*np.ones(1), np.zeros(nAmost)))
x3 = np.concatenate((x3ci*np.ones(1), np.zeros(nAmost)))
xa = np.concatenate((xaci*np.ones(1), np.zeros(nAmost)))
xe1 = np.concatenate((xe1ci*np.ones(1), np.zeros(nAmost)))
xe2 = np.concatenate((xe2ci*np.ones(1), np.zeros(nAmost)))
xe3 = np.concatenate((xe3ci*np.ones(1), np.zeros(nAmost)))
u = np.zeros(nAmost)
Amostras = np.zeros(nAmost)
cont = 0
xa1 = xaci
xe1 =[[xe1ci], [xe2ci], [xe3ci]]
while (Ti<=(nAmost-1)*T):
Amostras[cont] = cont
xe = xe1
xa = xa1+r[cont]-y[cont]
u1 = -Kp*xe+(-Ka)*xa
xe1 = sysssd.A*xe+sysssd.B*u1+Ke.T*(y[cont]-sysssd.C*xe) #estado observado
u[cont] = u1[0, 0]
Ue = u1[0, 0]*np.ones_like(dtT) #ZOH
Temp, yout, xout = Simul_Sist_Cont(sysss,Ti,T,dtT,Ue,IC)
cont = cont+1
y[cont] = yout
x1[cont] = xout[0]
x2[cont] = xout[1]
x3[cont] = xout[2]
IC = [[xout[0]], [xout[1]], [xout[2]]]
xa1 = xa
Ti = Ti + T
plt.figure(0) #----------GRÁFICOS
plt.subplot(2,1,1)
plt.step(Amostras[0:nAmost-1]*T, y[0:nAmost-1], r[0:nAmost-1],’--’,where = ’post’)
plt.xlim([0, 25])
plt.grid()
plt.subplot(2,1,2)
plt.step(Amostras[0:nAmost-1]*T, u[0:nAmost-1],where = ’post’)
plt.xlabel(’Tempo(s)’)
plt.xlim([0,25])
plt.grid()
plt.figure(1)
plt.step(Amostras[0:nAmost-1]*T,x1[0:nAmost-1],Amostras[0:nAmost-1]*T,
’continuaç~
ao da linha superior:’x2[0:nAmost-1],Amostras[0:nAmost-1]*T,x3[0:nAmost-1],where=’post’)
plt.xlim([0,25])
plt.grid()
Apêndice C. CÓDIGO EM PYTHON UTILIZADO PARA O CASO 3

import numpy as np
import matplotlib.pyplot as plt
import control as ctrl
plt.close(’all’)
def Simul_Sist_Cont(sys,Ti,T,dtT,Ue,IC): #----------SISTEMA CONTÍNUO
io_sys = ctrl.LinearIOSystem(sysss)
temp = np.linspace(Ti, Ti+T, dtT)
Temp, yout, xout = ctrl.input_output_response(io_sys, temp, Ue, IC, return_x=True)
return Temp, yout[yout.shape[0]-1], xout.T[xout.shape[1]-1]
A = [[0, 2], [2, 0]] #----------PROJETO DO CONTROLADOR
B = [[4], [0]]
C = [1.25, -3.125]
D = [0]
sysss = ctrl.ss(A,B,C,D)
T = 0.5
sysssd = ctrl.c2d(sysss,T,method=’zoh’)
Adaum1 = np.concatenate((sysssd.A, np.zeros((2,1))), axis=1)
Adaum2 = np.concatenate((-sysssd.C*sysssd.A, np.eye(1)), axis=1)
Adaum = np.concatenate((Adaum1, Adaum2), axis=0)
Bdaum = np.concatenate((sysssd.B, -sysssd.C*sysssd.B), axis=0)
Ctr=ctrl.ctrb(Adaum, Bdaum)
Post = np.linalg.matrix_rank(Ctr)
P = [0.8607+0.1583*1j, 0.8607-0.1583*1j, 0.01,] #----------CONTROLADOR
K = ctrl.place(Adaum,Bdaum,P)
Kp = K[0,0:2]
Ka = K[0,2]
Acl = Adaum-Bdaum*K
ConfAutVal = np.linalg.eig(Acl)
Obs = ctrl.obsv(sysssd.A, sysssd.C) #----------OBSERVADOR
Poste = np.linalg.matrix_rank(Obs)
Pe = [0.01, 0.02]
Ke = ctrl.place(sysssd.A.T, sysssd.C.T,Pe)
x1ci = 0 #----------IMPLEMENTAÇ~
AO
x2ci = 0
#x3ci = 0
xaci = 0
xe1ci = 0
xe2ci = 0
IC = [[x1ci], [x2ci]]
Ti = 0
u0 = 0
y0 = 0
nAmost = 100
dtT = 1000
r = np.concatenate((np.zeros(1), np.ones(nAmost-1)))
y = np.zeros(nAmost+1)
x1 = np.concatenate((x1ci*np.ones(1), np.zeros(nAmost)))
x2 = np.concatenate((x2ci*np.ones(1), np.zeros(nAmost)))
xa = np.concatenate((xaci*np.ones(1), np.zeros(nAmost)))
xe1 = np.concatenate((xe1ci*np.ones(1), np.zeros(nAmost)))
xe2 = np.concatenate((xe2ci*np.ones(1), np.zeros(nAmost)))
u = np.zeros(nAmost)
Amostras = np.zeros(nAmost)
cont = 0
xa1 = xaci
xe1 =[[xe1ci], [xe2ci]]
while (Ti<=(nAmost-1)*T):
Amostras[cont] = cont
xe = xe1
xa = xa1+r[cont]-y[cont]
u1 = -Kp*xe+(-Ka)*xa
xe1 = sysssd.A*xe+sysssd.B*u1+Ke.T*(y[cont]-sysssd.C*xe)
u[cont] = u1[0, 0]
Ue = u1[0, 0]*np.ones_like(dtT)
Temp, yout, xout = Simul_Sist_Cont(sysss,Ti,T,dtT,Ue,IC)
cont = cont+1
y[cont] = yout
x1[cont] = xout[0]
x2[cont] = xout[1]
IC = [[xout[0]], [xout[1]]]
xa1 = xa
Ti = Ti + T
plt.figure(0) #----------GRÁFICOS
plt.subplot(2,1,1)
plt.step(Amostras[0:nAmost-1]*T, y[0:nAmost-1], r[0:nAmost-1],’K’,where = ’post’)
plt.xlim([0, 25])
plt.grid()
plt.subplot(2,1,2)
plt.step(Amostras[0:nAmost-1]*T, u[0:nAmost-1],where = ’post’)
plt.xlabel(’Tempo(s)’)
plt.xlim([0,25])
plt.grid()
plt.figure(1)
plt.step(Amostras[0:nAmost-1]*T, x1[0:nAmost-1],Amostras[0:nAmost-1]*T,
’continuaç~
ao da linha superior:’x2[0:nAmost-1],Amostras[0:nAmost-1]*T,where = ’post’)
plt.xlim([0,25])
plt.grid()

Você também pode gostar