top of page

Colocando na forma de espaço de estados

Vamos agora um breve tutorial de como achar as equações de espaço de estados usando um software de computador (MATLAB), que possui uma versão gratuita para estudantes e que pode ser baixado no próprio site. Primeiramente tomem o sistema de equações diferenciais abaixo como exemplo:

 

 

 

 

 

 

 

 

 

 

 

As equações descrevem um sistema formado por um tanque que recebe um fluido com uma vazão F0, que é a nossa variável de entrada. Ele tem como variáveis de estado o F, que representa a vazão de saída do fluido no tanque (pode ser escrito como v.Ap), h, o nível do fluido no tanque e v o volume do fluido no tanque.

 

 

 

 

 

 

Essas três variáveis de estado são também variáveis de saída, pois elas podem ser medidas. Além disso temos os parâmetros, onde L = 3000 ft é o comprimento da linha de saída, Ap = 7.06 ft2 é sua seção transversal, AT = 113 ft2 é a seção transversal do tanque, (roh) = 62.5 lbm/ft3 é a densidade do líquido, v é a velocidade da vazão de saída, F é a vazão volumétrica de saída, F0 = 35.1 ft3/s é a vazão volumétrica de entrada, h é o nível do tanque, g =32.2 ft/s2 é a aceleração da gravidade, t é o tempo, KF = 2.81∙10-2 lbf/(ft/s)2 ft é o fator de fricção e gc = 32.2 lbm∙ft/lbf∙s2 é o fator de transformação de unidades.

O código comentado para colocar esse sistema em espaço de estados está aqui:

%Essas três linhas limpam a área de trabalho do matlab:

 

clear all

close all

clc

 

 

%Declaremos todas as variáveis e parâmetros:

syms vp g L h kf gc rho ap at fo F v

 

%Aqui estão as equações de estado que tínhamos anteriormente, onde f1

%representa dv/dt, f2 representa dh/dt e f3 representa dF/dt:

 

f1 = ((g/L)*h) - ((kf*gc)/(rho*ap))*v^2;

f2 = ( fo - (v*ap) ) / at;

f3 = ap*(((g/L)*h) - ((kf*gc)/(rho*ap))*v^2);

 

 

%representamos o sistema de equações como um vetor f de equações:

f = [f1; f2 ; f3];

 

%Aqui está o vetor x de variáveis de estado estados:

x = [v;h;F];

%Aqui o vetor u de entradas:

u = [fo];

 

%Declaramos o valor dos parâmetros e constantes:

L=3000;

ap=7.06;

at=113;

rho = 62.5;

fo=35.1;

g=32.2;

kf=0.0281;

gc=32.2;

 

%Temos que definir o estado estacionário da entrada(f0):

fo= 35.1;

 

% E aqui o estado estacionário nos estados (h e v):

h=4.72;

v=4.97;

 

%vamos agora linearizar o sistema nos pontos dos estados

%estacionários declarados anteriormente. A linearização é

%imprescindível para colocar o modelo espaço de estados em

%forma de matrizes. Para isso usamos a função “jacobian”,

%que vai gerar as matrizes A e B:

 

A = double(subs(jacobian(f,x)));

B = double(subs(jacobian(f,u)));

 

 

 

 

%Declaramos a matriz C como uma matriz identidade nxn, onde n é o

%número de estados do sistema, já que o número de estados é o mesmo da

%saída. Caso algum estado não seja também uma saída, é só criar a

%mesma matriz, mas apagar a linha correspondente ao estado que não é

%saída:

 

n=3;

C = eye(n);

 

%Matriz D é nula:

D = [ ];

 

%Usando a função ss, vamos criar o sistema espaço de estados, definido

%por G, a linha abaixo vai também mostrar todas as quatro matrizes na área

%de trabalho do matlab:

 

 

G = ss(A,B,C,D)

 

%Agora podemos plotar o gráfico de 0 até o tempo 1000 s, que

%representarão as três saídas na órdem declarada anteriormente:

 

step(G,1000)

Agora depois de escrito o código é só clicar em “run”, na área de trabalho vai aparecer as matrizes A, B, C e D e os gráficos representando o comportamento das saídas no sistema. Vocês podem testar outros sistemas de equações usando o mesmo padrão deste código.

Veja o gráfico gerado de v, h e F respectivamente:

Escola politécnica - Universidade Federal da Bahia

Engenharia de controle e automação

  • Facebook Clean Grey
  • Twitter Clean Grey
  • LinkedIn Clean Grey

2018 Grupo de alunos da Universidade Federal da Bahia

bottom of page