MQTT_PUB_ID
Esta função opera em conjunto com o bloco MQTT_MAP_PUBL para publicar um tópico utilizando o ID do mesmo, especificado em um arquivo com o nome mqtt_map_pub.csv. Para mais informações sobre este processo consulte o help do bloco MQTT_MAP_PUBL.
Cada tópico irá referenciar uma variável exportada.
Para publicar um tópico, o usuário deverá utilizar a função MQTT_PUB_ID que insere na cache do bloco (parâmetro TOPIC_CACHE) o índice do tópico a ser publicado. Este índice é definido pela ordem dos tópicos definidos no arquivo, iniciando com zero para o primeiro tópico da lista.
Este bloco é parte da biblioteca de comunicação do protocolo MQTT V1.3.1.
Bloco
MQTT_PUB_ID
+-------------+
UINT ----|ID |
| |---- INT
ANY ----|CACHE |
+-------------+
Esta função opera em conjunto com o bloco MQTT_MAP_PUBL e MQTT_CONTROLLER.
O tópico a ser publicado é especificado pelo parâmetro ID. O parâmetro CACHE deve obrigatoriamente ser a mesma variável fornecida como parâmetro TOPIC_CACHE do bloco de função MQTT_MAP_PUBL.
Parâmetros
Nome |
Parâmetro |
Tipo Dado |
V. Ini. |
Descrição |
ID |
Entrada |
UINT |
0 |
Identificador do tópico a ser publicado |
CACHE |
Entrada/Saída |
ANY |
Cache para gerencia da fila de tópicos a serem publicados |
Exemplo
Declaração de Variáveis
Nome |
Classe |
Tipo |
Dimensão |
Valor Inicial |
Descrição |
|---|---|---|---|---|---|
START |
Local |
BOOL |
FALSE |
Habilita teste |
|
BROKER_IP |
Local |
STRING |
‘192.168.0.58’ |
IP de acesso ao broker |
|
BROKER_PORT |
Local |
UDINT |
1883 |
Porta de escuta do broker |
|
FLAGS |
Local |
USINT |
0 |
Flags de conexao |
|
WILL |
Local |
STRING |
‘WTOPIC|W_NEON’ |
Parametros de conexao |
|
USER |
Local |
STRING |
‘JOAO|123’ |
Usuário e senha |
|
REC_TOPIC |
Local |
STRING |
Topico recebido do broker |
||
REC_MSG |
Local |
STRING |
Mensagem associada do topico recebido do broker |
||
COM_PORT |
Local |
USINT |
Socket ethernet utilizado para acesso ao broker |
||
PUB_ID |
Local |
UINT |
ID do tópico a ser publicado |
||
MQTT_CT |
Local |
HILS.MQTT_CONTROLLER |
Bloco de controle do MQTT |
||
MQTT_BDG_P |
Local |
MQTT_MAP_PUBL |
Bloco de publicação do MQTT por ID’s |
||
TOPIC_CACHE |
Local |
UINT |
[0..99] |
Cache para manter os tópicos a serem publicados |
Código ST
// Este código, após a ativação da variável START, abre conexão com o broker MQTT
// rondando no IP e porta especificados e assina todos os tópicos definidos no arquivo mqtt_map_sub.csv
// presente no diretório do projeto.
// Após este processo, trata as publicações do broker a atualiza os tópicos reecebidos na variáveis associadas.
// Ativa controlador MQTT
COM_PORT := HILS.SOCK1_PORT_ID;
FLAGS := HILS.CLIENT_ID + HILS.CLEAN_SECTION;
MQTT_CT( // MQTT_CONTROLLER
//EN := , // [BOOL] Habilitação de entrada
START := START, // [BOOL] Inicia o processo de gerencia de uma conexão MQTT com um broker (ativa na transição de subida)
COMM_SRC := COM_PORT, // [USINT] Canal de comunicação a ser utilizado
BROKER_IP := BROKER_IP, // [STRING] IP de conexão com o broker 192.168.0.80
BROKER_PORT := BROKER_PORT, // [UINT] Porta de conexao com o broker
KEEP_ALIVE := 300, // [UINT] Keep alive time em segundos (default = 5 min)
MQTT_FLAGS := FLAGS, // [USINT] Flags de conexão com o broker (default = clean section)
WILL_P := WILL, // [STRING] Topico e mensagem de WILL (separados por |)
USER_P := USER, // [STRING] Nome e senha do usuário (separados por |)
BROKER_TOPIC := REC_TOPIC, // [STRING] Nome do topico recebido
BROKER_MSG := REC_MSG // [STRING] Mensagem associada ao tópico recebido
);
// Ativa Bridge MQTT-MODBUS para envio de publicações para o broker
// Os tópicos a serem publicados estao especificados no arquivo mqtt_map_pub.csv
// presente no diretório do projeto corrente.
MQTT_BDG_P( // MQTT_MAP_PUBLISHER
//EN := , // [BOOL] Habilitação de entrada
START := START, // [BOOL] Inicia o processo de registro de tópicos e tratamento de publish do broker
COMM_SRC := COM_PORT, // [USINT] Canal de comunicação a ser utilizado
TOPIC_CACHE := TOPIC_CACHE // [INT] Fila de tópicos a serem publicados
);
// Exemplo de publicaçao de um tópico pela aplicação. Especifique o id do tópico em PUB_ID.
IF PUB_ID THEN
IF (MQTT_PUB_ID(PUB_ID, TOPIC_CACHE) = 0) THEN
// Topico encaminhado com sucesso para publicação
PUB_ID := 0;
END_IF;
END_IF;
Ver também
Bloco de função MQTT_CONTROLLER para controlar o acesso ao broker MQTT e receber publicações do mesmo.
Bloco de função MQTT_MAP_PUBL para encaminhar as publicações de tópicos no protocolo MQTT a partir de em uma lista em um arquivo .csv.
Bloco de função MQTT_MAP_SUBS para assinar tópicos no protocolo MQTT a partir de em uma lista em um arquivo .csv..