Neste tutorial, vamos aprender a fazer o uso da biblioteca LibMQTT na série Nexto e demonstrar o funcionamento de um projeto de exemplo.
Componentes do Tutorial
Software: MasterTool 3.71
Software: Mosquitto e CMD (Prompt de Comando)
Seções do Tutorial
1. INTRODUÇÃO
2. DEMONSTRAÇÃO DO PROJETO
2.1 GVL_MQTT
2.2 Espelhamentos_Entradas_MQTT
2.3 Espelhamentos_Saidas_MQTT
2.4 MQTT
3. CRIANDO BROKER MQTT
4. DEMONSTRAÇÃO DO FUNCIONAMENTO
4.1 Alterando uma saída
4.2 Recebendo o valor da entrada
1. INTRODUÇÃO
Para o desenvolvimento deste tutorial foi utilizado o CLP XP 340 da série Nexto Xpress, o software MasterTool na versão 3.71 e o CMD do Windows (Para realizar testes com o broker Mosquitto). Utilizamos como Host nosso próprio computador, mas é possível utilizar diversas plataformas destinadas à execução de aplicativos e serviços, baseada nos conceitos da computação em nuvem, como o Alibaba, Azure, etc...
O protocolo MQTT está disponível para toda Série Nexto, a partir das versões de firmware listadas abaixo.
• Série XP3xx: 1.8.11.0;
• Série NX3003 – NX3005: 1.8.11.0;
• Série NX3010 – NX3030: 1.8.3.0.
Obs1.: Para execução deste tutorial, é necessário ter em mãos um CLP da série Nexto e que o mesmo esteja com seu firmware atualizado. A sua versão do MasterTool da mesma forma deverá estar atualizada, sendo igual a versão 3.20 ou superior.
Obs2.: É importante ressaltar que o protocolo MQTT não funciona no modo Simulação. Por isso a necessidade de estar com o CLP conectado para realizar a comunicação.
Obs3.: O presente tutorial foi validado até a versão 1.6.12 do broker mosquitto, que pode ser baixado aqui.
O projeto usado neste tutorial está disponível para download com o nome Project Archive MQTT. É recomendado que realize o download do mesmo e leia atentamente os comentários, pois neles estão descritos detalhadamente cada parâmetro usado no tutorial.
Também, disponível nos anexos deste tutorial, há um projeto com o nome Function Block MQTT. Neste projeto é realizado assinaturas e publicações de tópicos MQTT por meio de Function Block, facilitando a visualização do usuário.
Para entender mais sobre o que é MQTT, você pode conferir o artigo que escrevemos sobre o assunto e também assistir nossos Webinars:
https://www.altus.com.br/post/301/mqtt-aplicado-a-sistemas-iot
2. DEMONSTRAÇÃO DO PROJETO
O projeto está dividido em 3 POUs, e possui uma GVL com as declarações das variáveis utilizadas na comunicação.
Irei explicar os seus funcionamentos detalhadamente ao longo dos tópicos abaixo.
2.1 GVL_MQTT
Na GVL "GVL_MQTT", encontra-se as variáveis declaradas para a comunicação MQTT. Nelas, estamos definindo os tópicos para os publishers e os subscribers, onde irão ser publicadas e lidas os valores das entradas e saídas do CLP.
OBS: Para que a comunicação MQTT funcione e você tenha acesso às variáveis e estruturas, você deve importar a biblioteca indo em Library Manager -> Add Library e procurar por MQTT
Após adicionar a biblioteca, como utilizamos diversos tópicos para a comunicação, vamos alterar o número máximo de publishers e subscribers. Para isso, clique na biblioteca adicionada, e altere os valores no caminho indicado na imagem abaixo.
2.2 Espelhamentos_Entradas_MQTT
Nesta POU, estão declaradas os valores dos payloads dos publishers que serão publicados nos tópicos desejados. Para exemplificar o funcionamento, estamos criando um Payload para cada entrada do CLP, assim iremos publicar todos os seus dados, tendo cada um deles um tópico específico para o seu nome, assim como criado na GVL_MQTT.
Como escrito em forma de comentário no fim do código, você pode adicionar ali a sua lógica, adicionando mais publishers se desejado.
2.3 Espelhamentos_Saidas_MQTT
Ao contrário de como fizemos no espelhamento das entradas, no programa de espelhamento das saídas estamos declarando as variáveis de saídas digitais e analógicas para receber o seu valor por meio dos payloads dos subscribers.
Assim como na outra POU, você pode adicionar na parte de baixo novas variáveis a serem lidas.
2.4 MQTT
Nesta POU, configuramos toda a comunicação MQTT e parametrizamos o bloco MQTT_CLIENT.
Declaramos as seguintes variáveis:
No código, vamos adicionar os seguintes códigos
Como indicado nas strings das primeiras variáveis, você deve definir o endereço de host do seu broker, que nesse caso será o IP do computador, visto que iremos hostear um broker localmente, e o ClientId, que é um nome que o CLP irá assumir na rede MQTT.
No nosso caso, considerando o IP do computador que estamos utilizando, configuramos desta forma;
Após realizar essas alterações, você pode carregar o programa no seu CLP.
3. CRIANDO BROKER MQTT
Neste tutorial, iremos hostear um broker mqtt local.
Para testar o projeto podemos utilizar o broker mosquitto, usando o CMD do Windows. O mosquitto é um broker gratuito e pode ser facilmente instalado.
Abra a pasta do mosquito localizada no diretório (C:), e digite o comando CMD na barra de diretórios e pressione ENTER.
Abra três janelas prompt de comando:
Na primeira execute o mosquitto.
Para executar o mosquito:
C:\Program Files\mosquitto>mosquitto –v
Na segunda você deve receber as mensagens:
C:\Program Files\mosquitto>mosquitto_sub –h localhost –p 1883 –t "Altus2/Q0"
• Sub: Receber
• -h: Servidor local
• -p: porta 1883
• -t: Tópico de leitura
Na terceira você irá publicar as mensagens:
C:\Program Files\mosquitto>mosquitto_pub –h localhost –p 1883 –t "Altus2/Q0" –m "00010001"
• Pub: Publicar
• -h: Servidor local
• -p: porta 1883
• -t: Tópico de escrita
• -m: mensagem. (Deve ser digitada entre aspas duplas "00011100").
4. DEMONSTRAÇÃO DO FUNCIONAMENTO
4.1 Alterando uma saída
Para demonstrar o funcionamento alterando uma saída, enviei um comando publish ao meu broker no tópico do Q00.
Como podemos ver no espelhamento das saídas, o CLP recebeu o comando "TRUE" no tópico "XP340/Q00" e acionou a saída Q00.
4.2 Recebendo o valor da entrada
Para demonstrar o funcionamento, adicionei um subscriber no tópico "XP340/AI0", e já recebi o valor atual (0).
Após isso, alterei o valor de AI0 para receber na comunicação.
E o valor atualizado foi enviado.
Com isso, você está capacitado para configurar o seu CLP para comunicar com um broker MQTT e passar os dados das suas entradas e saídas para tópicos específicos, além de outros valores caso desejado
Comentários
0 comentário
Por favor, entre para comentar.