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 |
WR |
IN |
BOOL |
— |
FALSE |
— |
Escrita na FIFO (PUSH): insere o valor de |
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.: |
26 |
RE_RES_FUL |
Buffer cheio: escrita ( |
27 |
RE_RES_EMP |
Buffer vazio: leitura ( |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O vetor ligado a
FIFOe a variávelDATAdevem ser do mesmo tipo de dado.Não ativar
RDeWRno mesmo scan.
Observações
EMPTY,FULLeCOUNTrefletem o estado da fila após a operação.CLEARdescarta todo o conteúdo da fila, levandoCOUNTa 0 eEMPTYa TRUE.
Ver também
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 *)
);
(* ... *)