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

  • DATA recebe 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 DATA deve 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

DTC_MAN, DTC_PUSH, DTC_REMOVE, DTC_GET_BLOCKS, DTC_GET_INFO

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