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
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 *)