Encontrou-se na Base de Conhecimento da Siemens (SIOS) um exemplo interessante de uso dos controladores de linha S7-1200 e S7-1500 como um cliente do protocolo MQTT
Siga o link para encontrar a própria biblioteca com o bloco funcional MQTT_Client (código aberto, por sinal) e uma nota explicativa por exemplo. A documentação em si é bastante abrangente, aqueles que sabem inglês podem seguir o link com segurança e não ler esta nota, dando a si próprios várias horas fascinantes de pesquisa em engenharia. E quanto ao resto, menos experiente e / ou mais preguiçoso, direi resumidamente o principal e demonstrarei meu exemplo de trabalho de cliente, retrabalhado criativamente para uma aplicação mais ou menos real.
Resumidamente sobre os termos.
MQTT - transporte de telemetria de enfileiramento de mensagens. Protocolo de telemetria para mensagens. Acho difĂcil traduzir o nome corretamente para o russo.
Mensagem - mensagem. Diretamente, os próprios dados transmitidos. A mensagem consiste em várias partes:
TĂłpico, assunto da mensagem. Uma sequĂŞncia de caracteres limitada a 200 caracteres no exemplo original. Para receber mensagens, os clientes devem primeiro se inscrever em um tĂłpico especĂfico, ou seja, tema
QoS, qualidade de serviço. Um sinal adicional indicando se é necessário aguardar a confirmação de recebimento de uma mensagem ou não
Texto da mensagem, texto da mensagem. String de texto de 500 caracteres
O protocolo Ă© construĂdo em um modelo de assinante / editor, cuja lĂłgica geral Ă© ligeiramente diferente do modelo cliente-servidor usual comum em protocolos industriais.
- , .. , . , . , . « Modbus». , .
-, MQTT, , (). . . , , , , . , .
, MQTT.
— publisher. , ( ) (topic).
— subscriber. , . .
. — .
MQTT , . , . .
, . . , , TCP/IP .
(. ) LMQTT_Client. , — Step 7. Options → Global Libraries → Open library. :
MQTT — S7-1200 S7-1500. , S7-1214. , S7-1500 , S7-1200 — ip-. LMQTT_Client Program Files . . MQTT_Client MQTTExchange:
, , . .
enable — MQTT, . .. TRUE
publishData — () . ( done error), , QoS
subscribeToTopic — , , (, ),
, : tcpConnParam mqttParam. OB100 . .
( « » ) . . ID , 64. Hardware ID .
— . TCP/IP, connection ID. 1 4096, , «», . - , «1»
— IP- , .
«» ip-. ip- . mosquitto Windows. .
. ( ). mosquitto.exe, 1883 ( MQTT) .
, . 192.168.0. 192.168.1., — , , . , , ip-, , , ip.
, , « » «» ip-.
router address,
— , . , 1884, 1883. :
— . . S7-1214.
. , «SIMATIC» ( ). . , .
. Last will. — «» ( !). , . « » , . «» , .
. . . — .
activateSecureConn — , , . OPC UA . Open User Communications (SecOUC). . .
, , , . , , . enable LMQTT_Client:
, enable tcpEstablished mqttEstablished «», , . , — «» enable - . . , , . :
— 5 , , . 5 , . . .
, - , . , , . , — , , . , . . subscribeToTopic, , «» .
( , ) #SubscriveToTopics « » 1. , , , , ( ).
— «global». . (, , )
. « » = 1, …
… «», (global) «»
… «» , done error. done «» №2. — .
№2. . , «». , .
100 , ( â„–3).
№3 №1, . №3 « » (#SubscriveToTopics) « ».
mosquitto_pub.exe -h myhost.mydomain.ru -t global -m «kill all humans»
,
myhost.mydomain.ru —
global — «global»,
kill all humans — global
subscriptionsMessage:
, global «kill all humans»
newMessageReceived . . , .
— . , . . , 10 , . 10 « » « » 1:
SCL, LAD. , — .
4 , , — . «» , personal0. . , REAL_TO_WSTRING . , , , — . — 500 , . , , . , . , , ( , ).
« » . , « » « ».
MQTT , personal0 ( ):
, . . personal0 exterminate, Q0.0 «».
:
mosquitto_pub.exe -h host.domain.ru -t personal0 -m «exterminate»
:
( newMessageReceived), . . , .
, . , , , . , , , , «» . , , . (, , , ) . , , — . GSM-, , , ip-. , , « ». , . ,
, , , , M2M (-). , .
, () . , , , WinCC Advanced.
Outras pesquisas mostraram um excelente uso do mqtt em conjunto com o ambiente Node-RED. Um programa foi "desenhado" no Node-RED que recebe esses dados do broker, analisa a string recebida e grava todas as informações (timestamp, valor) no banco de dados MariaDB. Ela, o programa no Node-RED possibilitou extrair informações para o perĂodo de tempo especificado, exibi-las em forma de tabela, gráfico e fazer o upload como um arquivo .csv.