DTC_HOW_MANY_BLKS

Retorna o número de blocos de dados (DIB’s) necessários para inserir o dado especificado em uma cache; suporta todos os tipos nativos e vetores de tipos nativos (exceto vetores de strings) e retorna zero se o dado for inválido. É uma função.

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

Função

        DTC_HOW_MANY_BLKS
        +-------------+
ANY ----|DATA         |---- INT
        +-------------+

Avalia o dado conectado em DATA e devolve quantos blocos de dados (DIB) ele ocupará na cache. Para mais informações sobre a cache de dados consulte Estrutura da cache (CACHE).

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

DATA

IN

ANY

—

—

Dado a ser avaliado. Suporta tipos nativos e vetores de tipos nativos (exceto vetores de strings).

Retorno / Saídas

Retorna um INT com o número de blocos de dados utilizados para salvar o dado na cache. Retorna zero se o tipo do dado for inválido.

Ver também

DTC_MAN, DTC_PUSH, DTC_REMOVE, DTC_GET_BLOCKS

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 *)
    BLKS    : INT;                            (* Nro de blocos de dados *)
    CACHE   : ARRAY [0..200] OF INT;          (* Cache do portal com capacidade de 20 mensagens. Tamanho mínimo. *)
END_VAR

(* Obtem o nro de blocos de dados utilizado pelo vetor MY_VEC *)
BLKS := HILS.DTC_HOW_MANY_BLKS(MY_VEC);
  // Retorna o valor 2, indicando que o vetor MY_VEC ocupa 2 blocos de dados

(* 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 *)
IF (BLKS = HILS.DTC_GET_BLOCKS(CACHE)) THEN
  // Validado que o dado na cache possui o mesmo tamanho obtido inicialmente

END_IF;