DTC_GET_VALUE
Retorna o valor do dado associado ao primeiro dado inserido na cache de dados especificada, copiando-o para uma variável (ou vetor) da aplicação. É uma função.
Biblioteca: HI_STD · Namespace: HILS · Tipo: função
Função
DTC_GET_VALUE
+-------------+
INT ----|CACHE |
| |
ANY ----|DATA ------- |----
+-------------+
A função lê o primeiro dado inserido na cache (comportamento de fila / FIFO) e
copia seu valor para o parâmetro DATA. O tipo e a dimensão de DATA devem
ser compatíveis com o dado armazenado. A leitura não remove o dado da cache;
para removê-lo utilize DTC_REMOVE. Para mais informações
sobre a cache de dados consulte Estrutura da cache (CACHE).
Parâmetros
Nome |
Direção |
Tipo |
Dimensão |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|---|
CACHE |
IN |
INT |
[*] |
0 |
— |
Cache de dados mantida em memória como uma fila dos blocos de dados inseridos (ver Estrutura da cache (CACHE)). |
DATA |
IN_OUT |
ANY |
— |
— |
— |
Variável (ou vetor) da aplicação que recebe o valor do primeiro dado inserido na cache. |
Códigos de retorno
A função retorna um código INT. Códigos mais comuns:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Valor lido com sucesso. |
5 |
GL_INV_PAR |
Parâmetro inválido: tipo de dado inválido (ex.: estrutura) ou não suportado pelo ambiente (ex.: WSTRING); índice inicial ou quantidade de elementos do vetor inválidos. |
28 |
RE_FIL_OVF |
Número de mensagens disponíveis na cache insuficiente para a leitura solicitada. |
Lista completa: RET_CODE - Códigos de retorno do firmware G5.
Retorno / Saídas
INT — código de retorno da operação (
0= sucesso; ver Códigos de retorno).DATArecebe o valor do primeiro dado inserido na cache quando a leitura é bem-sucedida.
Pré-condições
A cache deve conter ao menos um dado (bloco) disponível para leitura.
O tipo/dimensão de
DATAdeve ser compatível com o dado armazenado.
Observações
A leitura não remove o dado da cache; combine com DTC_REMOVE para descartá-lo após o uso.
Utilize DTC_GET_BLOCKS para saber quantos blocos o próximo dado ocupa.
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 *)
WCACHE : 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 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);