DTC_REMOVE

Remove da cache de dados o número de blocos especificado (ou todos os blocos, se o valor for zero). É uma função.

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

Função

            DTC_REMOVE
         +--------------+
UINT ----|BLOCKS        |---- INT
         |              |
 INT ----|CACHE ------- |----
         +--------------+

Remove da fila de CACHE a quantidade de blocos de dados indicada em BLOCKS, a partir do início da fila. A função retorna o número de blocos de dados ainda disponíveis na cache após a remoção.

Atenção

Se BLOCKS for igual a zero, todos os blocos de dados são removidos da cache.

A cache de dados é mantida em memória como uma fila dos blocos de dados inseridos. Para mais informações consulte Estrutura da cache (CACHE).

Parâmetros

Nome

Direção

Tipo

Dimensão

Padrão

Faixa / Unidade

Descrição

BLOCKS

IN

UINT

—

0

0 = remove todos

Número de blocos de dados a serem removidos da cache.

CACHE

IN_OUT

INT

[*]

—

—

Cache de dados mantida em memória como uma fila dos blocos inseridos.

Retorno / Saídas

Retorna um INT com o número de blocos de dados ainda disponíveis na cache após a remoção.

Ver também

DTC_MAN, DTC_PUSH, DTC_GET_BLOCKS, DTC_GET_VALUE

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    MY_VEC : ARRAY [0..2] OF INT := [1,2,3]; (* dado a ser salvo na cache *)
    BLKS   : INT;                            (* Nro de blocos *)
    WCACHE : ARRAY [0..200] OF INT;          (* Cache de dados. Tamanho mínimo. *)
END_VAR

(* Limpa a cache *)
HILS.DTC_REMOVE(0, WCACHE);

(* Salva na cache um dado escalar *)
HILS.DTC_PUSH(
  100,    // identificador do dado
  TRUE,   // obtem o timestamp do relógio do equipamento
  0,      // nao utilizado
  MY_VEC, // dado a ser salvo
  WCACHE  // cache de dados
  );

  // O valor do dado MY_VEC será salvo na cache

(* Obtem o nro de blocos de dados ocupados pelo proximo dado a ser lido *)
BLKS := HILS.DTC_GET_BLOCKS(WCACHE);

  // Retorna o valor 2

(* Copia o valor do dado da cache *)
HILS.DTC_GET_VALUE(WCACHE, MY_VEC);

(* Remove o dado da cache *)
HILS.DTC_REMOVE(BLKS, WCACHE);