FIFO

Implementa um buffer do tipo FIFO (fila) sobre um vetor fornecido pelo usuário, oferecendo operações de inserção (PUSH) e remoção (POP) de dados; comandos de escrita e leitura simultâneos não são permitidos. É um bloco de função (mantém estado entre scans; requer instância).

Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função

Bloco de função

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

O vetor ligado a FIFO é a área de armazenamento da fila e DATA é a variável escalar usada tanto para inserir (com WR) quanto para receber o valor removido (com RD). EMPTY e FULL sinalizam os estados-limite da fila e COUNT informa quantos registros estão presentes. RESULT reporta o estado da última operação.

Importante

Comandos de escrita (WR) e leitura (RD) simultâneos não são permitidos e geram erro.

Parâmetros

Nome

Direção

Tipo

Dimensão

Padrão

Faixa / Unidade

Descrição

RD

IN

BOOL

—

FALSE

—

Leitura da FIFO (POP): remove o registro mais antigo para DATA.

WR

IN

BOOL

—

FALSE

—

Escrita na FIFO (PUSH): insere o valor de DATA.

CLEAR

IN

BOOL

—

FALSE

—

Limpa a FIFO (esvazia a fila).

FIFO

IN_OUT

ANY

[*]

—

—

Vetor que serve de área de armazenamento da fila.

DATA

IN_OUT

ANY

—

—

—

Variável a ser inserida na, ou obtida da, FIFO.

EMPTY

OUT

BOOL

—

TRUE

—

FIFO vazia.

FULL

OUT

BOOL

—

FALSE

—

FIFO cheia.

COUNT

OUT

UINT

—

0

—

Número de registros presentes na FIFO.

RESULT

OUT

INT

—

0

RET_CODE

Código de retorno da última operação (ver Códigos de retorno).

Códigos de retorno

RESULT é do tipo RET_CODE. Use os identificadores com o namespace HILS (ex.: HILS.RE_RES_FUL). Códigos mais comuns deste bloco:

Código

Identificador

Significado

0

SUCCESS

Operação executada com sucesso.

6

GL_INV_CMD

Comando inválido (ex.: RD e WR ativados ao mesmo tempo).

26

RE_RES_FUL

Buffer cheio: escrita (WR) com a FIFO em FULL.

27

RE_RES_EMP

Buffer vazio: leitura (RD) com a FIFO em EMPTY.

Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.

Pré-condições

  • O vetor ligado a FIFO e a variável DATA devem ser do mesmo tipo de dado.

  • Não ativar RD e WR no mesmo scan.

Observações

  • EMPTY, FULL e COUNT refletem o estado da fila após a operação.

  • CLEAR descarta todo o conteúdo da fila, levando COUNT a 0 e EMPTY a TRUE.

Ver também

DTC_PUSH, DTC_REMOVE, DATA_CLEAR

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    my_FIFO : HILS.FIFO;             (* Instancia da FIFO *)
    my_BUF  : ARRAY [0..29] OF UINT; (* Buffer para os ultimos 30 dias de dados *)
    value   : UINT;                  (* Valor da FIFO *)
END_VAR

(* Exemplo de utilizacao 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 *)
    );
(* ... *)