FIFO

Este bloco implementa um buffer do tipo FIFO. É fornecido um vetor de um estrutura (ou tipo nativo qualquer). Implementa uma FIFO no vetor fornecido, disponibilizando recursos para inserir e remover dados.

Bloco

               FIFO
         +--------------+
BOOL ----|RD       EMPTY|---- BOOL
         |              |
BOOL ----|WR        FULL|---- BOOL
         |              |
BOOL ----|CLEAR   RESULT|---- INT
         |              |
         |         COUNT|---- UINT
         |              |
 ANY ----|FIFO -------- |---- ANY
         |              |
 ANY ----|DATA -------- |---- ANY
         +--------------+

..Important:

Comandos de escrita e leitura simultâneos não são permitidos gerando erro.

Parâmetros

Nome

Parâmetro

Tipo Dado

V. Ini.

Descrição

RD

Entrada

BOOL

FALSE

Leitura da FIFO (POP)

WR

Entrada

BOOL

FALSE

Escrita da FIFO (PUSH)

CLEAR

Entrada

BOOL

FALSE

Limpa FIFO

EMPTY

Saída

BOOL

TRUE

FIFO vazia

FULL

Saída

BOOL

FALSE

FIFO cheia

RESULT

Saída

INT

0

Resultado da operação

COUNT

Saída

UINT

0

Número de registros presentes na FIFO

FIFO

Entrada/Saída

ANY

Estrutura de dados da FIFO (vetor de DATA)

DATA

Entrada/Saída

ANY

Variável a ser inserida ou obtida da FIFO

RESULT

Tipo Dado

Descrição

INT

Código de retorno na execução da função, do tipo RET_CODE, onde:

  • Se for igual a 0: Função executada com sucesso - código HILS.SUCCESS

  • Se for diferente de 0: Falha na execução da função indica o respectivo código de erro. [2]

Exemplo

Declaração de Variáveis

Nome

Tipo

Dimensão

Descrição

my_FIFO

HILS.FIFO

Instancia da FIFO

my_BUF

UINT

[0..29]

Buffer para os ultimos 30 dias de dados

value

UINT

Valor da FIFO

Clique aqui para baixar a tabela de variáveis

Código ST

(* Exemplo de utilização de FIFO *)
(* ... *)
(* Insere valor na FIFO *)
value := 100;
my_FIFO(
    RD    := FALSE,
    WR    := TRUE,
    CLEAR := FALSE,
    FIFO  := my_BUF, (* buffer de valores *)
    DATA  := value   (* valor a ser inserido na FIFO *)
    );
(* ... *)
(* Obtem o valor mais antigo da FIFO *)
my_FIFO(
    RD    := TRUE,
    WR    := FALSE,
    CLEAR := FALSE,
    FIFO  := my_BUF, (* buffer de valores *)
    DATA  := value   (* obtem o valor mais antigo da FIFO *)
    );
(* ... *)