You are on page 1of 7

Exercício analítico sobre PID digital

4 PID digital (exercícios analíticos)

4.1
Pretende-se controlar em tempo real um dado sistema. Para isso, o sistema foi identificado,
aplicando em malha aberta um degrau unitário na entrada. A sua resposta foi amostrada
obtendo-se a seguinte tabela.

Tempo resposta ao
(segundos) degrau unitário
0.0000 0
0.2500 0
Nota: Embora normalmente não
0.5000 0
apareça no enunciado de um teste os
0.7500 0.7869
valores considerados foram:
1.0000 1.2642
1.2500 1.5537
k=2
1.5000 1.7293
Tp = 0.5
1.7500 1.8358
L = 0.5
2.0000 1.9004
2.2500 1.9396
E a FT 1ª ordem é na forma
2.5000 1.9634
ke − Ls
G ( s) =
2.7500 1.9778 1 + sTp
3.0000 1.9865
3.2500 1.9918

A saída após 3.25 segundos a saída manteve-se constante com o valor 2.

a) Determinar o valor do intervalo de amostragem Ts e os parâmetros do controlador PID


discreto (kp, ki e kd), dado pela seguintes equação diferença:

mk = kp ek + ki Sk + kd (ek - ek-1)

onde: Sk = Sk-1 + ek

Guias práticos STR 4-1


Exercício analítico sobre PID digital

sendo mk ao sinal de controlo no instante k e ek o erro no instante k.


Utilize para os cálculos a seguinte regra:

1.2 0.6Ts .5
kp = ,ki = 2 ,kd =
R ( L + Ts ) R ( L + Ts / 2) RTs

Ts = 0.3 L

Onde L é o tempo morto (dead time) e R o declive da curva de saída.

b) Escreva um programa que implemente o controlador PID na forma dada na alínea


anterior. Assuma que dispõe das seguintes funções ou procedimentos:

GetTime retorna o valor do relógio de tempo real em décimos de segundo


Out (m) aplica o valor num dado instante k do sinal m a uma DAC
In (e) lê o valor de e de uma ADC num dado instante k

Nota: caso não tenha conseguido resolver o anterior, assume valores razoáveis para Ts, Kp,
Ki e Kd.

c) Escreva outro programa, utilizando agora um algoritmo de velocidade para o PID. Assuma
que o controlo é iniciado quando o sistema está em repouso.

Guias práticos STR 4-2


Exercício analítico sobre PID digital

Resolução

a)
Assumindo que podemos identificar um sistema de 1ª ordem com atraso de acordo com:

y(∞)

gain = K =

t
TT = L + Tp

e como a resposta é:
Tp

Slope R
Tt
y(∞)

Por observação do gráfico o atraso L = 0.5 seg.

Guias práticos STR 4-3


Exercício analítico sobre PID digital

O ganho k é dado por:

H y(∞) 2
k= = = =2
∆ ∆ 1

Pois o degrau de entrada é unitário e a resposta final é 2.

O declive da recta, R, pode ser calculado pela equação da recta que passa por dois pontos.
Pode-se considerar os dois primeiros pontos (t,y) da resposta não nula, como mostra a figura
acima, i.e (0.5,0) e (0.75, 0.7869):

y 0 - y1 0 − 0.7869 − 0.7869
R= = = = 3.1476
t 0 - t1 0.5 − 0.75 − 0 .5

Agora para calcular o Tt, isto é o Tempo quando a recta de declive R intersecta a resposta
final, resolve-se a equação acima de modo a determinar o tempo para y = 2, i.e o segundo
ponto será (Tt, 2):

y 0 - y(∞) 0−2
R= ⇔ 3.1476 =
t 0 - Tt 0.5 − Tt

E resolvendo em ordem a Tt tem-se:

2 - 3.1476 * 0.5
Tt = ⇔ Tt = 1.1354
- 3.1476

Agora pode-se determinar a constante de tempo com:

Tp = Tt – L = 1.1354-0.5 = 0.6354

Substituindo obtém-se a FT seguinte:

k e −L S 2 e −0.5 S
G(S) = =
Tp S + 1 0.634 S + 1

Guias práticos STR 4-4


Exercício analítico sobre PID digital

E para determinar a sintonia do PID usando as regras dadas no enunciado:

Ts = 0.3 L = 0.3 * 0.5 = 0.15

⎧ 1.2 ⎧ 1.2
⎪k p = kp = = 0.5864
⎪ R (L + Ts ) ⎪ 3.1476 * (0.5 + 0.15)

⎪ 0.6 Ts ⎪ 0.6 * 0.15
⎨k i = ⇔ ⎨k i = = 0.0864
R (L + Ts / 2 ) 3.1476 * (0.5 + 0.15 / 2)
2 2
⎪ ⎪
⎪ 0.5 ⎪ 0.5
⎪k d = RT ⎪⎩k d = 3.1476 * 0.15 = 1.0590
⎩ s

b)
O algoritmo de controlo do PID discreto, usando as expressões acima indicadas para o
cálculo do sinal de controlo, e as funções para a entrada de dados com a Plant e para
sincronizar com o tempo de amostragem de 0.15 segundos, em, por exemplo PASCAL:

PROGRAM PID_discreto_base;

VAR
Ts, time, NextSample, S, m, e, eold, kp, ki, kd : REAL;

BEGIN
kp := 0.586;
ki := 0.086;
kd := 1.059;
In (eold); (* Melhor inicializar eold com o valor corrente do que com 0 *)
S : = 0;
Ts = 0.15;
time := GetTime*0.1; (*Converte para segundos*)
WHILE TRUE DO
BEGIN
(* Aguarda próximo instante de amostragem *)
NextSample := time + Ts;
WHILE time < NextSample DO time := GetTime*0.1;

Guias práticos STR 4-5


Exercício analítico sobre PID digital

(* Aquisição do, sinal de entrada do controlador via ADC*)


In (e);

(* Tarefa de Controlo *)
S := S + e;
m := kp * e + ki * S + kd * (e - eold);
eold := e;
(* Envia sinal de controlo para Plant via DAC*)
Out (m);
END;
END.

c)
O algoritmo de velocidade é dado por:

∆mk = mk - mk-1

Aplicando na equação do PID discreto usada na alínea anterior:

m k = k p e k + k i S k + k d (e k − e k -1 )

m k -1 = k p e k -1 + k i S k -1 + k d (e k -1 − e k -2 )

têm-se:
∆m k = k p (e k - e k -1 ) + k i (S k - S k -1 ) + k d (e k - 2e k -1 + e k -2 )

e como:
ek = Sk - Sk-1

chega-se a:

∆m k = e k (k p + k i + k d ) - e k -1 (k p + 2k d ) + e k -2 k d

De modo que o programa anterior deve ser alterado segundo:

Guias práticos STR 4-6


Exercício analítico sobre PID digital

PROGRAM PID_discreto_algo_velocidade;

VAR
Ts, time, NextSample, dm, e, e1, e2, kp, ki, kd, K : REAL;

BEGIN
kp := 0.586;
ki := 0.086;
kd := 1.059;
e1 := 0; (* Visto que o controlo é iniciado com o sistema em repouso *)
e2 := 0;
Ts = 0.15;
time := GetTime*0.1; (*Converte para segundos*)
While TRUE
(* Aguarda próximo instante de amostragem *)
NextSample := time + Ts;
WHILE time < NextSample DO time := GetTime*0.1;

(* Aquisição do, sinal de entrada do controlador via ADC*)


In (e);

(* Tarefa de Controlo *)
dm = e*(kp + ki + kd) - e1 * (kp + 2 *kd) + e2 * (kd);
e2 = e1;
e1 = e;

(* Envia sinal de controlo para Plant via DAC*)


Out (dm);
END;
END.

Guias práticos STR 4-7