DTC_GET_BLOCKS

Retorna o número de blocos de dados (DIB’s) utilizados pelo próximo dado a ser removido da cache. Considera que existe pelo menos um bloco de dados na cache — a aplicação deve garantir que não seja chamada com uma cache vazia. É uma função.

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

Função

        DTC_GET_BLOCKS
        +-------------+
INT ----|CACHE        |
        +-------------+

A CACHE é a fila de blocos de dados mantida em memória. A função inspeciona o próximo dado a ser removido e informa quantos blocos de dados ele ocupa. Para mais informações sobre a estrutura da cache consulte Estrutura da cache (CACHE).

Importante

Esta função considera que existe pelo menos um bloco de dados na cache, portanto a aplicação deve garantir que a mesma não seja chamada com uma cache vazia.

Parâmetros

Nome

Direção

Tipo

Dimensão

Padrão

Faixa / Unidade

Descrição

CACHE

IN

INT

[*]

0

—

Cache fonte das mensagens, mantida em memória como uma fila dos blocos de dados.

Retorno / Saídas

Retorna INT: número de blocos de dados utilizado pela informação a ser removida. Retorna -1 se o tamanho da cache não comporta o número de blocos do dado.

Pré-condições

  • A cache deve conter pelo menos um bloco de dados — não chamar com cache vazia.

Ver também

DTC_MAN, DTC_PUSH, DTC_REMOVE, DTC_GET_VALUE

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    MY_DATA : UDINT := 1234;                  (* valor a ser inserido na cache de mensagens *)
    MY_VEC  : ARRAY [0..2] OF INT := [1,2,3]; (* identificador do dado no portal de telemetria *)
    RET     : INT;                            (* código de retorno da função de envio de dados para o portal *)
    CACHE   : ARRAY [0..200] OF INT;          (* Cache do portal com capacidade de 20 mensagens. Tamanho mínimo. *)
END_VAR

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

(* Salva na cache os valores de um dado vetorial *)
HILS.DTC_PUSH(
   101,     (* identificador do dado *)
   TRUE,    (* obtem o timestamp do relógio do equipamento *)
   0,       (* nao utilizado *)
   MY_VEC,  (* dado a ser salvo *)
   CACHE    (* cache de dados *)
   );

(* Os valores 1, 2 e 3 do dado MY_VEC serao salvos na cache *)

(* Obtem o nro de blocos de dados ocupados pelo vetor *)
RET := HILS.DTC_GET_BLOCKS(CACHE);

(* Retorna o valor 2, indicando que o vetor MY_VEC ocupa 2 blocos de dados *)