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
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;