INTEGRAL

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

XOUT = XOUT + (XIN * CYCLE)

Bloco

            INTEGRAL
         +-------------+
BOOL ----|RUN         Q|---- BOOL
         |             |
BOOL ----|R1       XOUT|---- REAL
         |             |
REAL ----|XIN          |
         |             |
REAL ----|X0           |
         |             |
TIME ----|CYCLE        |
         +-------------+

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

RUN

Entrada

BOOL

FALSE

1 = integrate, 0 = hold

R1

Entrada

BOOL

FALSE

Overriding reset

XIN

Entrada

REAL

0.0

Input variable

X0

Entrada

REAL

0.0

Initial value

CYCLE

Entrada

TIME

T#0ms

Sampling period

Q

Saída

BOOL

FALSE

NOT R1

XOUT

Saída

REAL

0.0

Integrated output

Se a entrada R1 é TRUE, o valor de XOUT será definido pelo valor de X0. Caso contrário:

  • Quando a entrada RUN é TRUE, o valor de XOUT será a integral da variável XIN ao longo do tempo CYCLE.

  • Quando a entrada RUN é FALSE, o valor de XOUT será mantido no último valor.

Exemplo

Declaração de Variáveis

Nome

Tipo

Valor Inicial

Descrição

inp_RUN

BOOL

TRUE

1 = integrate, 0 = hold

inp_R1

BOOL

FALSE

Overriding reset

inp_XIN

REAL

50.0

Input variable

inp_X0

REAL

1.0

Initial value

inp_CYCLE

TIME

T#200ms

Sampling period

out_Q

BOOL

NOT R1

out_XOUT

REAL

Integrated output

my_PI

INTEGRAL

Instancia do bloco de função INTEGRAL

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 INTEGRAL *)
my_TON(PT := inp_CYCLE);
my_TON.IN := TRUE;

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

  (* executa do bloco de função INTEGRAL a cada ciclo de amostragem *)
  my_PI(
        RUN   := inp_RUN,   (* 1 = integrate, 0 = hold *)
        R1    := inp_R1,    (* Overriding reset        *)
        XIN   := inp_XIN,   (* Input variable          *)
        X0    := inp_X0,    (* Initial value           *)
        CYCLE := inp_CYCLE  (* Sampling period         *)
      );

  (* obtem valor de atuação gerado pelo bloco de função INTEGRAL *)
  out_XOUT := my_PI.XOUT;
  out_Q    := my_PI.Q;

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

END_IF;
(* ... *)