HI_FS_PUBLISH
Publica dados armazenados no sistema de arquivo do equipamento para o portal de
telemetria da HI Tecnologia. O dado pode ser de qualquer tipo numérico ou de tempo
(DT, TIME, DATE, TOD) e requer um identificador para o portal. É um
bloco de função (requer instância) e opera em conjunto com TEL_FS_GATEWAY,
que faz a interface entre o sistema de arquivo e o portal.
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
HI_FS_PUBLISH
+----------------+
INT ----|EV_ID RESULT|---- INT
| |
----|DATA ---------- |----
| |
TEL_FS_GATEWAY ----|TEL_GAT --------|----
+----------------+
Publica um dado numérico ou de tempo do sistema de arquivo para o portal de telemetria,
usando a instância de TEL_FS_GATEWAY (recebida em TEL_GAT) como interface e devendo
esta ser executada antes da chamada deste bloco.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Descrição |
|---|---|---|---|---|
EV_ID |
IN |
INT |
0 |
Identificador do tipo de dado para o portal de telemetria. |
RESULT |
OUT |
INT |
0 |
Código de retorno do processamento ( |
DATA |
IN_OUT |
ANY |
— |
Dado a publicar (numérico ou de tempo). |
TEL_GAT |
IN_OUT |
HILS.TEL_FS_GATEWAY |
— |
Instância do bloco |
Códigos de retorno
RESULT é do tipo RET_CODE: 0 ( HILS.SUCCESS ) indica sucesso; qualquer
valor diferente de 0 indica falha (consulte o catálogo de códigos RET_CODE do ambiente).
Pré-condições
Requer equipamento com sistema de arquivo disponível.
A instância de
TEL_FS_GATEWAYpassada emTEL_GATdeve ser executada antes da chamada deHI_FS_PUBLISH(é recebida como parâmetro já inicializada).As variáveis do buffer do portal devem ser globais (lidas como Holding Register):
TEL_COUNT : INT(%MW400) — nº de mensagens a consumir pelo portal.TEL_FIFO : INT(%MW401,[0..239]) — FIFO com o buffer de mensagens.
Observações
Para enviar mensagens mantidas na memória do equipamento (em vez do sistema de arquivo), use
HI_PORTAL.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
EVENT : INT; (* Código do evento a publicar *)
VALUE : REAL; (* Valor do registro de dado *)
FILE_NAME : STRING := 'Dados.dat'; (* Nome do arquivo de dados *)
FILE_CMD : INT; (* Comando associado ao arquivo de dados *)
TEL_CACHE : ARRAY [0..499] OF UINT; (* CACHE com até 50 registros de entrada *)
TEL_ELEM : INT; (* Nº de mensagens disponíveis p/ coleta (Global) *)
TEL_DATA : HILS.TEL_V2_DATA_TYPE; (* Registros para inserção no buffer do portal *)
TEL_GATEWAY : HILS.TEL_FS_GATEWAY; (* Interface com o portal via sistema de arquivo *)
TEL_PUBLISH : HILS.HI_FS_PUBLISH; (* Bloco de registro de eventos *)
END_VAR
(* Interface com o portal de telemetria.
Se o nº de elementos da FIFO for negativo, o portal coletou essa quantidade;
nessa condição, removê-los do buffer.
IMPORTANTE: TEL_FS_GATEWAY deve ser chamado ANTES de HI_FS_PUBLISH. *)
TEL_GATEWAY(
INS := FALSE, (* Sem inserção de dados na FIFO *)
DEL := -TEL_ELEM, (* remove as mensagens já coletadas pelo portal *)
CMD := FILE_CMD, (* Comando associado ao arquivo de dados *)
DATA_FILE := FILE_NAME, (* Arquivo para armazenar dados *)
CACHE := TEL_CACHE, (* CACHE dos dados a publicar *)
FIFO := TEL_FIFO (* FIFO - área dos registros *)
);
TEL_ELEM := TEL_GATEWAY.ELEM;
(* Publica o dado sempre que o evento for diferente de zero *)
IF (EVENT <> 0) THEN
TEL_PUBLISH(
EV_ID := EVENT, (* Identificador do dado no portal *)
DATA := VALUE, (* Dado a publicar *)
TEL_GAT := TEL_GATEWAY (* Interface com o portal *)
);
EVENT := 0; (* aguarda novo evento *)
END_IF;