Sei sulla pagina 1di 45

Seminário de programação em

sistemas embarcados

Implementando controle PID digital


em sistemas embarcados

Felipe S. Neves
Agenda

• Compensadores, o compensador PID;


• Implementação PID em sistemas embarcados;
• Algoritmo PID digital clássico;
• Algoritmo PID digital (2p2z);
• Implementando filtros IIR eficientes;
• Estudo de caso;
• Perguntas.
Compensadores

• Considere o sistema de controle em malha fechada abaixo:

Figura 1: Sistema de malha fechada típico (OGATA,2002).


Compensadores

• O elemento amplificador aplica ao sinal de erro, além do ganho, e


outras propriedades sobre sua atuação sobre a planta;

• Entre essas, podem ser aplicados avanço, e/ou, atraso de fase;

• Então um compensador é um bloco que modifica a resposta de


uma dada planta a ser controlada;

• Exemplos: phase lead-lag, type – II, type-III.


O compensador PID

• O controlador do tipo PID, também é um tipo de compensador,


com a seguinte função de transferência:

• Possui até 3 ações, com diferentes propriedades, definíveis em


intensidade por 3 coeficientes(Kp, Ki, Kd);

• Escalável, o usuário decide quais ações quer usar, a que não


desejar no seu sistema basta apenas zerar o coeficiente.
O compensador PID
• Implementável geralmente com o uso de amplificadores
operacionais:

Figura 2 : PID analógico (OGATA, 2012).


O compensador PID
• Possuem vantagens a destacar, elevada largura de banda;

• Circuito de baixo custo;

• Porém, a estabilidade depende da tolerância dos componentes;

• Sensível a variação de temperatura sob os componentes;

• Pouco flexível, modificar para uma implementação paralela,


envolve um novo projeto de circuito.
Implementando PID em sistemas
embarcados
Implementando PID em sistemas embarcados

• A implementação do compensador é feita de forma numérica;

• O mesmo ocorre com os parâmetros relativos a compensação (ex: Kp,


Ki , Kd são constantes armazenadas em memória);

• Os sinais de set-point e feedback são discretizados através de um


conversor de dados (ex.: A/D);

• O processo inverso ocorre com sinal da variável manipulada, que é


trazida para o domínio analógico (ex D/A, PWM).
Implementando PID em sistemas embarcados


Análogo a um sistema de malha fechada de tempo contínuo,
obtemos seu equivalente discreto:

Figura 3: Sistema de malha fechada discreto (STARR, 2006).


Implementando PID em sistemas embarcados

• O grande desafio de um sistema de controle discreto, é sua largura


de banda finita (limitada a frequência de clock do processador);

• Assim, o sinais de feedback e(ou) set-point precisam ter sua banda


limitada (eliminar o efeito “aliasing” );

• Empregado na forma de circuitos discretos (filtros – ativos);


Implementando PID em sistemas embarcados

• Além disso, sistemas discretos estão sujeitos a erros de quantização:

Figura 4: Discretizador típico de um conversor A/D (CHOUINARD, 2013).


Implementando PID em sistemas embarcados

• Uma vez discretizada a informação, alguns tempos precisam ser


respeitados;

• Critério de Nyquist-Shannon: ;

• Execução da ação de compensação deve ser periódica (tempo real,


determinístico);

• Considerar atraso entre aquisição e disponibilização do sinal


manipulado na saída do sistema.
Implementando PID em sistemas embarcados

• De forma similar a aquisição, o sinal de atuação discreto deve ser


reconstruído antes de atuar sobre a planta:

Figura 5: Exemplo de conversão D/A (LYONS, 2008).


Implementando PID em sistemas embarcados

• Qualquer processador de uso geral então pode ser utilizado para


computar um PID;

• Basta apenas que este possua formas de discretizar e reconstruir


os sinais de feedback e atuação;

• Entre os dispositivos podem ser usados DSPs e FPGA porém...


Implementando PID em sistemas embarcados

• ...além de dispositivos sofisticados, microcontroladores de uso


geral podem executar um compensador;

• Conclusão, tendo hardware necessário, basta derivar um bom


algoritmo.
Algoritmo PID digital clássico
Algoritmo PID digital clássico

• Implementar compensadores digitais consistem em aproximar sua


função de transferencia para uma equivalente;

• Para essa tarefa empregam-se métodos numéricos (newton, regra


de simpson e trapeizodal, backward differences);

• Equações diferenciais, são mapeadas no que se chamam equações


de diferença.
Algoritmo PID digital clássico

• Implementar compensadores digitais consistem em aproximar sua


função de transferencia para uma equivalente;

• Para essa tarefa empregam-se métodos numéricos (newton, regra


de simpson e trapeizodal, backward differences);

• Equações diferenciais, são mapeadas no que se chamam equações


de diferença.
Algoritmo PID digital clássico

• Recapitulando a função de transferência de um controle PID


genérico:

• Podemos reescrever esta no domínio do tempo, em função do


sinal de erro:
Algoritmo PID digital clássico

• A equação do compensador PID no domínio do tempo possui uma


integração e uma derivada;

• Numericamente uma integral é pode ser realizada executando a


seguinte operação:

• E a operação de derivada:
Algoritmo PID digital clássico

• Podemos quantificar “dt” como sendo o intervalo entre amostras,


assim obtendo a operação de integração e derivada discretas:

• “n” representa a posição de uma dada amostra corrente.


Algoritmo PID digital clássico

• Assim, obtemos a seguinte equação discretizada de um compensador


tipo PID:

• Podemos notar que o termo “ts” foi abstraído da equação, para


“dentro” dos coeficientes Ki e Kd;

• O termo integral se traduz em acumular as amostras e, o termo


derivativo em subtrair a corrente da anterior;

• Veremos que essa recursão natural do PID discreto será útil mais
adiante.
Algoritmo PID digital clássico

• Esse algoritmo destaca – se pela sua simplicidade;

• Ocupa pouca memória de programa e dados;

• Velocidade de execução rápida, apenas algumas instruções


aritméticas.
Algoritmo PID digital clássico

• Por outro lado, possui algumas desvantagens;

• A aproximação usada para a integral demora para convergir nos


primeiros resultados;

• Wind-Up , estouro do integrador caso seu ganho seja muito


grande.
Algoritmo PID 2p2z
Algoritmo PID 2p2z

• Adicionaremos mais um domínio de trabalho.

Figura 6: Diferentes domínios de sistemas (MOULTON, 2003).


Algoritmo PID 2p2z

• Precisaremos utilizar alguns elementos da transformada Z;

• Além de compensadores PID o método pode ser usado para


mapear qualquer função de transferência em S;

• Vamos considerar o sistema PID anterior:


Algoritmo PID 2p2z

• Similar ao algoritmo clássico, vamos substituir os termos em “s”;

• Por valores similares em “z” efetuando essa transformada;

• E obteremos uma função de transferência discreta:


Algoritmo PID 2p2z

• Podemos simplificar a equação anterior fazendo:


Algoritmo PID 2p2z

• E manipulando mais um pouco a equação chegamos a função de


transferência final abaixo:
Algoritmo PID 2p2z

• Colocando a equação em função do valor de saída obtemos:

• Tomando a transformada “Z” inversa temos finalmente:


Implementando filtros IIR eficientes
Implementando filtros IIR eficientes

• A função de transferência digital do PID é um caso especial de


filtro IIR:

• Bem similares, não?


Implementando filtros IIR eficientes

• Filtros digitais necessitam de memórias para armazenar estados


anteriores;

• Existem duas grandes formas para efetuar essa tarefa, atualização


do histórico das amostras passadas;

• Uso de uma memória com endereçamento circular.


Implementando filtros IIR eficientes

• Memória com endereçamento circular, muito implementada em


DSPs:

Figura 7: Memória circular elementar.


Implementando filtros IIR eficientes

• O grande desafio é o overhead para incremento/decremento


circular;

• Exige uma operação de módulo além do incremento (ou seja uma


divisão);

• DSPs, ou processadores dedicados possuem gereciamento desse


tipo de endereçamento por hardware.
Implementando filtros IIR eficientes

• Porém, nosso filtro IIR é de segunda ordem, e possui quantidade


de estados fixa;

• O Endereçamento circular também é possível da seguinte forma:

• Desde que:
Implementando filtros IIR eficientes

• As vantagens são principalmente o pequeno overhead, e a não


necessidade de atualizar histórico do filtro;

• Entre as desvantagens, o desperdício de um bloco de memória


(pouco significativa pois a estrutura de dados do PID é pequena);

• Apenas alguns tamanhos de buffer circular são permitidos.


Estudo de caso
Perguntas?
Muito Obrigado!

Potrebbero piacerti anche