Caminho:  Equipamentos (Dispositivos) > PLC200 > Programa > Control >

PID2

Controlador Proporcional-Integral-Derivativo com Sintonia Automática (Auto Tuning)

Previous pageReturn to chapter overviewNext page

Bloco que executa a sintonia automática de um controlador PID discreto. A partir das variáveis de entrada, ele calcula um controlador PID ou PI através do método dos relés. Este bloco também implementa o controlador obtido ou outro que o usuário desejar.

 

Representação Ladder

 

PID2_block

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_INPUT

EN

BOOL

Habilitação do bloco

SetPoint

REAL

Referência automática (pré-controle)

ManualSetPoint

REAL

Referência forçada (pós-controle)

SelectSetPoint

BOOL

Seleciona qual referência utilizar

Feedback

REAL

Variável de realimentação da malha

MinimumOutput

REAL

Valor mínimo da saída do controlador

MaximumOutput

REAL

Valor máximo da saída do controlador

Kp

REAL

Ganho proporcional

Ki

REAL

Ganho integral

Kd

REAL

Ganho derivativo

TauSetPoint#

REAL

Constante de tempo do filtro de entrada de referência automática

Type#

BYTE

Tipo de controlador

Action#

BYTE

Ação de controle

Ts#

UINT

Período de amostragem [ms]

Tune

BYTE

Dá início ao processo de sintonia conforme Tabela 2

Delta

REAL

Parâmetro do método dos relés que representa a variação da variável manipulada com relação ao valor que atingiu a referência.

Hysteresis

REAL

Determina a histerese no chaveamento do Relé

TuneTimeOut

DWORD

Tempo máximo de espera até que a sintonia seja concluída [ms]

VAR_OUTPUT

ENO

BOOL

Habilitação de saída

Output

REAL

Saída do controlador

TuneStatus

BYTE

Status da sintonia automática conforme Tabela 3

KpOut

REAL

Ganho proporcional obtido na sintonia

KiOut

REAL

Ganho integral obtido na sintonia

KdOut

REAL

Ganho derivativo obtido na sintonia

VAR

PID2_INST_0

PID2

Instância de acesso à estrutura do bloco

Tabela1

 

Funcionamento

 

O funcionamento do bloco PID2 é dividido em duas partes: a de Controle e a de Sintonia Automática.

A variável Tune é que define qual modo de operação. Sempre que Tune = 0, o sistema opera em modo de controle, com os valores dos ganhos definidos pelo usuário, da mesma forma que o bloco PID.

A parte de controle, é exatamente igual ao bloco PID, veja no Help do PID.

 

Quando Tune recebe algum valor diferente de 0, o processo de sintonia automática é iniciado. Algumas regras precisam ser obedecidas para que a sintonia possa ocorrer. Elas serão apresentadas na sequência.

 

A Sintonia Automática

Para a Sintonia Automática é utilizado o Método dos Relés que se baseia na obtenção do ganho crítico e período crítico , que podem ser utilizados para obtenção dos ganhos do controlador PID através de diversas regras de sintonia: Ziegler-Nichols, Ciancone-Marlin, Tyreus-Luyben, ITAE Mínimo, entre outras.

Durante o processo de sintonia, o controle é desligado e um "relé" passa a determinar a saída do controlador (Output), conforme figura a seguir.

PID2_topology_academic

 

Ao iniciar, o relé (Output) passa para o valor e após um período a saída (Feedback) começa a aumentar. No momento em que a saída se torna superior ao valor do setpoint + histerese, o relé comuta para e assim sucessivamente, conforme a figura abaixo.

PID2_topology_paralell

 

Sendo o valor da variável manipulada (Output) estabilizada no ponto de operação, temos que:

No caso da Figura acima,

Da curva de resta obtida são retirados os parâmetros necessários para obtenção do controlador.

 

Critérios para que a sintonia seja efetuada

Para que a sintonia automática possa ser realizada adequadamente, dois critérios precisam, obrigatoriamente, ser obedecidos:

1) colocar o sistema no ponto de operação que se deseja calibrar (a diferença deve ser menor do que 20%);

2) a variável , que é a variável manipulada, não pode estar apresentando oscilação maior do que 20%;

OBS: pode-se usar o modo Manual do bloco para atingir o ponto de operação sem grandes oscilações (através da variável ).

Passo a passo para executar a sintonia

1) deve iniciar com o valor zero;

2) Definir um valor para . Recomenda-se um valor inicial de 10% do valor da variável manipulada () que atingiu o setpoint do sistema;

Ex: Supondo que para estabilizar no ponto de operação = 12.3. Neste caso, utilizar

3) Definir um valor inicial para . Esse valor deve ser ligeiramente maior do que o ruído presente no sistema. Pode-se utilizar um valor inicial de 2% do valor do Setpoint caso não se tenha conhecimento do ruído;

Ex: para um = 60.0, utilizar

4) Definir um valor em milissegundos () para . Esse valor depende do sistema que está sendo aplicado o bloco. Sistemas mais lentos necessitarão de um tempo maior. Ele deve ser suficiente para que pelo menos 10 ciclos do relé sejam completos, embora com 5 ciclos o sistema geralmente já estabiliza;

5) Colocar o sistema no ponto de operação. Caso um pré-controle já tenha sido feito, ele pode ser aplicado. Outra opção é utilizar o modo manual e variar a entrada até que o sistema estabilize no ponto de operação, ou seja, o mais próximo possível de ;

6) Habilitar a sintonia escolhendo o tipo de controle (PI ou PID e a regra usada) através da variável , conforme Tabela 2;

7) A saída irá informar qual o status do processo de sintonia automática, conforme Tabela 9. Ao final do processo, a saída receberá o valor 8 caso a calibração seja efetuada com sucesso e as saídas , e serão atualizadas com os valores obtidos no processo de sintonia.

Tune

Controlador

0

Desabilitado

1

Controlador PID Automático

2

Controlador PI Automático

3

Controlador PID Tyreus-Luyben

4

Controlador PI Tyreus-Luyben

5

Controlador PID ITAE

6

Controlador PI ITAE

7

Controlador PID Ciancone-Marlin

8

Controlador PI Ciancone-Marlin

9

Controlador PID Ziegler-Nichols

10

Controlador PI Ziegler-Nichols

Tabela 2

 

Tune Status

Significado

0

Desabilitado

1

Relé em nível alto

2

Relé em nível baixo

4

Sistema estabilizado

5

Estável e Relé em nível alto

6

Estável e Relé em nível baixo

8

Sintonia concluída

16

Reservado

32

Timeout

64

Método inexistente

128

Busy: outro bloco em sintonia

Tabela 3

Os métodos de Tyreus-Luyben são recomendados para sistemas com a constante de tempo dominante com relação ao atraso de transporte. Os métodos de Ciancone-Marlin são recomendados para sistemas com grande atraso de transporte. O método ITAE mínimo é para situações intermediarias.

Recomenda-se para sintonias iniciais ou para usuários sem muita familiaridade com o método dos relés, a utilização da forma automática 1 ou 2 para , deixando que o sistema opte pela forma mais adequada.

Após a sintonia, o método pode ser trocado fazendo com que um novo controlador seja calculado sem realizar novamente o processo de sintonia, uma vez que os dados necessários são armazenados internamente. Isto permite que outros métodos sejam facilmente experimentados.

Para que uma nova sintonia seja feita, precisa receber o valor zero primeiramente.

 

 

Fluxograma do Bloco

N/D

 

 

 

Exemplo em Ladder

 

PID2_example01

 

PID2_example02

 

PID2_example03

 

Exemplo em ST

 

 O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem ST.

 

 

VAR

   SETPOINT : REAL := 30.0;

   MANUAL_MV : REAL := 30.0;

   SELECT_SP : BOOL := FALSE;

   FEEDBACK : REAL;

   KP2 : REAL := 6.2039423;

   KI2 : REAL := 1.3162537;

   KD2 : REAL := 1.8414314;

   TUNEENABLE2 : BYTE;

   DELTA : REAL;

   HISTERESE : REAL;

   MANIPULATED_VARIABLE : REAL;

   TUNESTATUS : BYTE;

   PID2_INST_1 : FB_PID2;

   TAU : REAL := 5.0;  

   LOWPASS_INST_3 : FB_LOWPASS;

END_VAR

 

PID2_INST_1.EN := DI1;

PID2_INST_1(

   SetPoint:=SETPOINT,

   ManualSetPoint:=MANUAL_MV,

   SelectSetPoint:=FALSE,

   Feedback:=FEEDBACK,

   MinimumOutput:=-1000,

   MaximumOutput:=1000,

   Kp:=KP2,

   Ki:=KI2,

   Kd:=KD2,

   TauSetPoint:=0.0,

   Type:=1,

   Action:=0,

   Ts:=500,

   Tune:=TUNEENABLE2,

   Delta:=DELTA,

   Hysteresis:=HISTERESE,

   TuneTimeOut:=1800000);

MANIPULATED_VARIABLE := PID2_INST_1.Output;

TUNESTATUS := PID2_INST_1.TuneStatus;

KP2 := PID2_INST_1.KpOut;

KI2 := PID2_INST_1.KiOut;

KD2 := PID2_INST_1.KdOut;

 

LOWPASS_INST_3(

   EN:=TRUE,

   Input:=MANIPULATED_VARIABLE,

   Tau:=TAU,

   Ts:=10);

FEEDBACK := LOWPASS_INST_3.Output;