Internet das coisas industrial no PLC Simatic S7-1x00 no exemplo do protocolo MQTT

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





Link para a fonte original .





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:





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.








All Articles