DERIVATIVE

O bloco de função DERIVATIVE calcula a derivada XOUT de uma variável XIN ao longo do tempo CYCLE.

XOUT = (3 * (XIN - XIN[3]) + XIN[1] – XIN[2]) / (10 * CYCLE)

onde XIN[1], XIN[2] e XIN[3] são os valores anteriores de XIN ao longo do tempo CYCLE.

Bloco

           DERIVATIVE
         +-------------+
BOOL ----|RUN      XOUT|---- REAL
         |             |
REAL ----|XIN          |
         |             |
TIME ----|CYCLE        |
         +-------------+

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

RUN

Entrada

BOOL

FALSE

FALSE: reset, TRUE: processa sinal de entrada

XIN

Entrada

REAL

0.0

Entrada a ser diferenciada

CYCLE

Entrada

TIME

T#0ms

Tempo de amostragem

XOUT

Saída

REAL

0.0

Saída diferenciada

Quando a entrada RUN é TRUE, calcula o valor da derivada XOUT da variável XIN ao longo do tempo CYCLE.

Exemplo

Declaração de Variáveis

Nome

Tipo

Valor Inicial

Descrição

inp_RUN

BOOL

FALSE

FALSE: reset, TRUE: processa sinal de entrada

inp_XIN

REAL

55.0

Entrada a ser diferenciada

inp_CYCLE

TIME

T#200ms

Tempo de amostragem

out_XOUT

REAL

Saída diferenciada

my_PD

DERIVATIVE

Instancia do bloco de função DERIVATIVE

Clique aqui para baixar a tabela de variáveis

Código ST

(* ... *)

(* Timer TON para gerar ciclo de execução do bloco de função DERIVATIVE *)
my_TON(PT := inp_CYCLE);
my_TON.IN := TRUE;

(* se atingiu tempo de amostragem, executa bloco de função DERIVATIVE *)
IF (my_TON.Q = TRUE) THEN

  (* executa do bloco de função DERIVATIVE a cada ciclo de amostragem *)
  my_PD(
        RUN   := inp_RUN,   (* FALSE: reset, TRUE: processa sinal de entrada *)
        XIN   := inp_XIN,   (* Entrada a ser diferenciada   *)
        CYCLE := inp_CYCLE  (* Tempo de amostragem          *)
      );

  (* obtem valor de atuação gerado pelo bloco de função DERIVATIVE *)
  out_XOUT := my_PD.XOUT;

  (* reseta timer para gerar novo ciclo de ativação do bloco de função DERIVATIVE *)
  my_TON.IN := FALSE;

END_IF;
(* ... *)