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

Clique aqui para baixar a tabela de variáveis

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