WGATE_SEND_EX
Esta função opera em conjunto com o bloco de função WGATE_MAN para enviar dados para o Portal de Telemetria utilizando uma cache de mensagens. Suporta envio de variáveis nativas, escalares ou vetores.
Bloco
WGATE_SEND_EX
+--------------+
INT ----|ID |---- INT
| |
BOOL ----|GEN_TS |
| |
DT ----|TS |
| |
UINT ----|I_INX |
| |
UINT ----|QNT |
| |
ANY ----|DATA |
| |
INT ----|MSGS |
+--------------+
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
Descrição |
ID |
Entrada |
INT |
Identificador da mensagem no portal de telemetria |
|
GEN_TS |
Entrada |
BOOL |
Gera automaticamente o timestamp associado ao dado fornecido (ignora o valor do parâmetro TS) |
|
TS |
Entrada |
DT |
Timestamp a ser associado ao dado a ser salvo na cache |
|
I_INX |
Entrada |
UINT |
Indice inicial quando o dado for um vetor (nao utilizado quando o dado for escalar) |
|
QNT |
Entrada |
UINT |
Quantidade de dados a partir do indice inicial quando o dado for um vetor (nao utilizado quando o dado for escalar) |
|
DATA |
Entrada |
ANY |
Dado ou vetor de dados a ser enviado para o portal |
|
MSGS |
Entrada |
INT |
[*] |
Cache de mensagens utilizada pela instância do bloco WGATE_MAN |
Entradas
ID
Identificador do dado associado a mensagem no portal de telemetria.
GEN_TS
Se igual a TRUE, gera automaticamente o timestamp associado ao dado fornecido. Se igual a FALSE utiliza o parâmetro TS como timestamp do dado a ser enviado.
TS
Valor do timestamp do dado a ser enviado caso o parâmetro GEN_TS seja FALSE.
I_INX
Se o valor fornecido em DATA for um vetor este parâmetro especifica o indice do elemento inicial a ser enviado. Se o valor fornecido em DATA for escalar este parâmetro é ignorado.
QNT
Se o valor fornecido em DATA for um vetor este parâmetro especifica a quantidade de elementos a partir de I_INX a serem enviados. Se o valor fornecido em DATA for escalar este parâmetro é ignorado.
DATA
Dado a ser enviado para o portal de telemetria. Pode ser especificado qualquer dado nativo suportado pelo equipamento conectado, inclusive o tipo STRING. Esta função permite também os envio de vetores de dados nativos (com exceção de vetores de strings).
MSGS
Cache de mensagens. Este parâmetro representa o vetor de tipo INT utilizado no bloco de função WGATE_MAN:CACHE. Este vetor forma uma cache de mensagens utilizada para manter as informações de cada dado salvo no equipamento até que sejam coletadas pelo portal de telemetria.
Retorno
Tipo |
Descrição |
INT |
Codigo de retorno. Retorna 0 se a função foi executada com sucesso. |
Podem ser retornados os seguintes códigos de falha:
RC_GL_INV_PAR
Tipo de dado inválido (ex: estrutura)
Tipo de dado não suportado pelo ambiente (Ex: WSTRING)
Indice inicial do vetor invalido
Quantidade de elementos do vetor invalido
RC_RE_FIL_OVF
Nro de mensagens disponíveis na cache insuficiente.
Exemplo
Declaração de Variáveis
Nome |
Tipo |
Dimensão |
Valor Inicial |
Opções |
Descrição |
|---|---|---|---|---|---|
MY_EV |
BOOL |
FALSE |
Flag para inserção de dado na cache |
||
MY_DATA |
UDINT |
1234 |
valor a ser inserido na cache de mensagens |
||
MY_ID |
INT |
1000 |
identificador do dado no portal de telemetria |
||
RET |
INT |
código de retorno da função de envio de dados para o portal |
|||
WCACHE |
INT |
[0..200] |
rent |
Cache do portal com capacidade de 20 mensagens. Tamanho mínimo. |
|
WEB_GATE |
HILS.WGATE_MAN |
Gerenciador de mensagens do portal de telemetria. |
Código ST
(* --- Gerencia das mensagens reportadas para o portal de telemetria -----
*
* ATENCAO: Este bloco deve obrigatóriamente ser chamado no início do ciclo
* da aplicação corrente, antes de qualquer chamada do bloco
* WGATE_SEND.
*
*)
WEB_GATE( // WGATE_MAN
//EN := , // [BOOL] Habilitação de entrada
//CLR := , // [BOOL] Limpa o conteudo da cache de dados
COMM := HILS.SOCK1_PORT_ID, // [USINT] Identificador do canal de comunicação conectado ao portal de telemetria. Ex: SOCK1_PORT_ID
TMO := T#40s, // [TIME] Timeout para indicar desconexão com o portal de telemetria
CACHE := WCACHE // [INT] FIFO - área onde serão armazenados os registros
);
(* Quando MY_EV for true e a cache estiver com menos de 50% envia MY_DATA para o portal *)
if (MY_EV AND (WEB_GATE.PERC < 50)) THEN
RET := HILS.WGATE_SEND(ID := MY_ID, DATA := MY_DATA, MSGS := WCACHE);
IF RET = 0 THEN
MY_EV := FALSE;
END_IF;
END_IF;
(* ... *)