Você está na página 1de 12

Processo de Neutralizao do pH

Ilustrao 1 - Malha Aberta do Sistema do pH A funo de transferncia em tempo contnuo do sistema dada por:

H 0 (s) =

18 .2760 e 0.4341 S 2.3289 s +1

Consideraes iniciais: Ts =12/60; u _ 0 =15.55*60/1000 y _ 0 =7; Controle Digital do Sistema do pH


O controle Digital do Sistema do pH baseia-se na modelagem do sistema e preocupa-se apenas com correo dos os erros entre o valor do set-point e a sada do sistema. Assim, ele no se preocupar com alterao de parmetro que possa ocorrer. O controle da malha foi realiza usando o critrio de ZieglerNichols e o calculo dos ganhos do controlador foi baseado na funo de transferncia do sistema.

Diagrama de Blocos:

Ilustrao 2- Malha de controle digital do pH

Ilustrao 3 - Controlador Digital do Sistema do pH

Programa:
function ys=controlph(u) y1 = u(1); y1sp = u(2); tempo= u(3); global uc1_0 e1_0 e1_00 if tempo==0 uc1_0 = 15.55*60/1000; e1_0 = 0; e1_00 = 0; end % erros e tempo de amostragem e1 = y1sp-y1; Ts=12/60; % funoes de transferencia k1 = 18.2760; tau1 = 2.3289*Ts; teta1= 0.4341*Ts; % controladores PID teta1p Kc1 Tau_i1 Tau_d1 = = = = teta1+Ts/2; 1.2*tau1/(k1*teta1p); 2*teta1p; 0.5*teta1p;

uc1 = 0.07*Kc1*((1+Ts/Tau_i1+Tau_d1/Ts)*e1(1+2*Tau_d1/Ts)*e1_0+Tau_d1*e1_00/Ts)+uc1_0; % saida ys=[uc1]; % update uc1_0 = uc1; e1_00 = e1_0; e1_0 = e1;

Resultado:
Aps implementar o programa, foi necessrio realizar um pequeno ajuste no ganho do controlador. Isto pode ser feito apenas multiplicando a sada do controlador u 1 por um numero N real c positivo. Inicialmente, com N igual a 1, a sada do sistema oscilava e em no convergia. Em seguida o valor de N foi reduzido at chegar ao valor 0.07, onde a resposta produzida pelo sistema foi consideravelmente satisfatria. Com valores de N abaixo de 0.07, a sada demorava para alcanar o setpoint, e at no o alcanava.

Ilustrao 4 - Sistema oscilando com N=1.

Ilustrao 5 - Sistema convergindo com N=0,07

Ilustrao 6 - Sistema convergindo com N=0.03. Observe que no alcanou pH=6,5

Controle Adaptativo (1 ordem)


Desconsiderando o atraso , a modelagem do sistema do pH pode ser aproximada a um sistema de 1 ordem. Assim, sero calculados apenas dois parmetros, a e b , para realizar o controle do sistema, u 1 sada do controlador, e para calcular a sada estimada, y1 , do sistema aps o c (k (k controle. A sada y1 encontrada usando o vetor ) ,Fi, , transposto com o vetor ) ,Teta. ) a composta pela ultima sada negada y _ 0 do sistema e a ultima sada do (k (k controlador u _ 0 . ) composto pelos parmetros estimados a e b . A sada do controlador " y " um vetor coluna composto por [ u 1 ; y1 ; a ; b ]. s c O controle baseado no critrio do ZieglerNichols, que calcula os valores do ganho (k crtico e do perodo de oscilao usando as componentes do vetor ) e o tempo de amostragem do sistema Ts =12/60 a cada momento.

Diagrama de Blocos:

Ilustrao 7- Malha de controle do pH

Ilustrao 8 - Controlador Adaptativo do Sistema do pH

Programa:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ys=controlph(u) y1 = u(1); y1sp = u(2); tempo= u(3); global uc1_0 e1_0 e1_00 teta_0 P_0 y1_0 y1_00 if tempo==0 uc1_0 = 15.55*60/1000; e1_0 = 0; e1_00 = 0; end % erros e tempo de amostragem e1 = y1sp-y1; Ts=12/60; % funoes de transferencia k1 = 18.2760; tau1 = 2.3289; teta1= 0.4341; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % controlador PID self-tuning if tempo == 0

end fi = [-y1_0;uc1_0]; No = 1e4; erroe = y1-fi'*teta_0; lambda=No/(No+erroe^2*pinv(1+fi'*P_0*fi)); if lambda<0.95 lambda=0.95; end K = P_0*fi/(lambda+fi'*P_0*fi); P = (eye(2)-K*fi')*P_0/lambda; teta = teta_0+K*erroe; a1=teta(1); b1=teta(2); Kpu=(1-a1)/b1; % ganhos crticos Tu=2*Ts; % Perodo de crtico %controlador Kc1 = 0.6*Kpu; Tau_i1 = 0.5*Tu; Tau_d1 = 0.125*Tu; uc1 = 0.01*Kc1*((1+Ts/Tau_i1+Tau_d1/Ts)*e1(1+2*Tau_d1/Ts)*e1_0+Tau_d1*e1_00/Ts)+uc1_0; if uc1<=0 uc1=0; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % saida ys=[uc1;fi'*teta_0;teta_0]; % update uc1_0 = uc1; e1_00 = e1_0; e1_0 = e1; y1_0 = y1; teta_0 = teta;

teta_0 = [0.9174;1.5]; P_0 = diag([1e6 1e6]); uc1_0 = 15.55*60/1000; y1_0 = 7; e1_0 = 0; e1_00 = 0;

Resultado:
Assim como para o controle digital, foi feito ajustes no ganho do controlador. Da mesma forma,

c a sada do controlador u 1 multiplicada por um numero N real positivo. Comeando com N igual a 0.5, a sada do sistema oscilava e em no convergia. Reduzindo o valor de N at chegar ao valor 0.01, a resposta vai convergindo e satisfazendo a mudana de set-point. Com valores de N menores do que 0.01, a sada demorava para alcana o set-point e com 0.005 quase no alcanou o pH de 6,5 .

Ilustrao 9 - Sistema ainda oscilando com N=0,5 Sada medida (amarela) e estimada (rosa)

Ilustrao 10 - Sistema convergindo com N=0.005. Observe que quase no alcanou pH=6,5

Ilustrao 11 Sistema convergindo com N=0.01. Sada medida (amarela) e estimada (rosa)

Ilustrao 12 - Variao de parmetros e b do Sistema com N=0.01

Controle Preditivo QDMC


limitando a sada do controle us e encontrado a variao dela necessria para controlar o sistema. Para isso, o programa utiliza vrio parmetros pr-estabelecidos ( n de entrada e de sada, horizonte de modelo, de predio e de controle, limite mximo e mnimo da sada de controle). O programa aplica um degrau na funo de transferncia do sistema para colher amostras, e destas amostras encontrar as matrizes Smn e Sm necessrias para a correo do erro. O controle preditivo ainda pondera a suavidade de entrada de controle e sada do controle atravs das matrizes R e W. O controle preditivo, como j diz o nome, indica os futuros passo para alcanar o set-point,

Diagrama de Blocos:

Ilustrao 13 - Controlador Adaptativo do Sistema do pH

Ilustrao 14- Malha de controle QDMC do pH

Programa:
function ys = controlphqdmc(u) yp1 = u(1); ysp1 = u(2); ts = u(3); global H NN W Smn Sm Ns e1_0 u_0 ypm_0 Umax Umin Ymax Ymin Dumax % ny=1; %numero de nu=1; %numero de N=80; %horizonte p=10; %horizonte m=3 ; %horizonte Ts=12/60; %tempo umax = [1.5]; umin = [0.5]; dumax = [0.05]; tp=0:Ts:Ts*N; yp = [yp1]; ysp = [ysp1]; ypp = []; yspp = []; for i=1:N ypp = [ypp;yp]; yspp= [yspp;ysp]; end if ts==0 %-------------------------------------------------%initial conditions u_0 = [15.55*60/1000];%[0.03]; ym_0 = [7.0];% valor do ph ypm_0 = []; for i=1:N ypm_0 = [ypm_0;ym_0]; end saidas entradas do modelo (%pode ser 50) de prediao (otimizaao) de controle de amostragem

e1_0 = yspp(1:ny*p) - ypm_0(1:ny*p); %step response of transfer functions g11 = tf(18.2750,[2.3289 1],'iodelay',0.4341); sg11 = step(g11,tp); G11 = sg11(1:N); %step response matrix Gm = G11; %Dynamic Matrix for in=1:N; sm(1+(in-1)*ny,1)= Gm(in,(1-1)*ny+1); Gm, mas cria uma matriz (ny.(ny+(N-1))xnu end a Smn for matriz = sm(1:ny*p,:); = a; iu=1:m-1; Smn) a=[zeros(ny,nu);a(1:(p-1)*ny,:)]; acrescentando zero na primeira linha Smn=[Smn a]; end

% neste caso o prprio

% a= 10 primeiras linhas % m= 3 (cria colunas da % cria duas colunas % matriz 10x3

% S Matrix Sm = sm(1:ny*N,:); %Sm as 80 primeiras linhas de sm ou seja Sm=Gm %Shifting matrix Ns = [zeros((N-1)*ny,ny) diag(ones(1,ny*(N-1))); zeros(ny,(N-1)*ny) diag(ones(1,ny))]; %fator de supressao das manipuladas (Entrada) r=1; % controla a suavidade da entrada rr=[]; for im=1:m; rr=[rr r]; %Cria uma matriz 1X3 end R = diag(rr); %cria uma matriz diagonal 3X3 com valores de r %fator de supressao das controladas (Sada) w=1; % controla a suavidade da sada ww=[]; for iy=1:p; ww=[ww w]; %Cria uma matriz 1X10 end W =diag(ww); %cria uma matriz diagonal 10X10 com valores de r %Matrix H H=Smn'*W'*W*Smn + R'*R; %Auxiliary constraint matrix NN=[diag(ones(1,nu))]; identidade de ordem nu=1 aux=[diag(ones(1,nu))]; identidade de ordem nu=1 %cria uma matriz %cria uma matriz %cria uma matriz 3X3

for i=1:m-1; aux=[aux diag(ones(1,nu))]; NN=[NN zeros(i*nu,nu) % criou uma matriz triangular inferior com valores iguais a 1 para o calculo do vetor b aux]; end % NN = nu=1 % % 1 0 0 % 1 1 0 % 1 1 1 % Dumax=dumax; Umax=umax; Umin=umin; %ub=uat; for i=1:m-1; %ub=[ub;zeros(nu,1)] Umax=[Umax;umax]; Umin=[Umin;umin]; Dumax=[Dumax;dumax]; end end %-------------------------------------------------%##################################################################### ##### Atualizado % ct H=H; W=W; Smn=Smn; ct=-(e1_0'*W'*W*Smn); Dumax=Dumax; Umin=Umin; Umax=Umax; Ymin=Ymin; Ymax=Ymax; NN=NN; ub=u_0; for i=1:m-1; ub=[ub;u_0]; end %Including constraints on the inputs A1=[NN;-NN]; b1=[Umax-ub;-Umin+ub]; %Umax e Umin tm linhas = 3*m A=A1; b=b1; %Including constraints on the input changes A2=[diag(ones(1,nu*m));-diag(ones(1,nu*m))]; b2=[Dumax;Dumax]; A=[A;A2]; b=[b;b2]; %quadratic programming options = optimset('LargeScale','off','Display','off'); du = quadprog(H,ct,A,b,[],[],[],[],[],options); %Correction of the last control move us = u_0 + du(1:nu);

%output ys=us; %Correction of the last measurement d=ypp(1:ny)-ypm_0(1:ny); dex=[]; for i=1:N; dex=[dex;d]; end ypm_0=ypm_0+dex; %updated ypm = ypm_0 + Sm*du(1:nu); ypm = Ns*ypm; e1_0 = yspp(1:ny*p) - ypm(1:ny*p); u_0 = us; ypm_0 = ypm;

Resultado:
Foi realizado a primeira implementao do programa com os seguintes parmetros:

ny=1; nu=1; Ts=12/60; Horizonte do Modelo N=80; Horizonte de Predio p=10; Horizonte de Controle m=3; Mximo valor de sada do controle: umax = [1.5] ; Mnimo valor de sada do controle: umin = [0.5]; Variao mxima valor de sada do controle: dumax = [0.05]; Matriz de peso da entrada R=1; Matriz de peso da sada W=1;

Grfico Padro:

Ilustrao 13 - Sada do Sistema do pH com controle QDMC.

Ilustrao 14 - Sada do controlador QDMC

Variando R de 1 para 10:

Variando W de 1 para 10:

Variando N de 80 para 40:

Variando p de 10 para 40:

Variando m de 3 para 12:

Observando os grficos, possvel notar que a maior diferena, com relao ao padro, esta na modificao dos parmetros R e W. Isso se deve porque estas matrizes esto relacionada com a importncia de controle da entrada e da sada do sistema. Quando variamos R, a sada do controlador us no modifica bruscamente e a sada do sistema acaba se distanciando do valor ideal (set-point). Quando aumenta-se W, a sada do sistema tenta se aproxima ao mximo do valor ideal e assim sada do controlador us ser mais requisitada, variando muito mais.

Você também pode gostar