On trouve dans la base de connaissances Siemens (SIOS) un exemple intéressant d'utilisation des contrôleurs de ligne S7-1200 et S7-1500 en tant que client du protocole MQTT
Lien vers la source .
Suivez le lien pour trouver la librairie elle-même avec le bloc fonctionnel MQTT_Client (open source, d'ailleurs) et une note explicative par exemple. La documentation elle-même est assez complète, ceux qui connaissent l'anglais peuvent suivre le lien en toute sécurité et ne pas lire cet article, se donnant ainsi plusieurs heures passionnantes de recherche en ingénierie. Et pour le reste, moins expérimenté et / ou plus paresseux, je vais vous dire brièvement l'essentiel et vous montrer mon exemple de travail d'un client, retravaillé de manière créative pour une application plus ou moins réelle.
En bref sur les termes.
MQTT - transport de télémétrie de mise en file d'attente de messages. Protocole de télémétrie pour la messagerie. J'ai du mal à traduire correctement le nom en russe.
Message - message. Directement, les données transmises elles-mêmes. Le message se compose de plusieurs parties:
Sujet, le sujet du message. Une chaîne de caractères limitée à 200 caractères dans l'exemple d'origine. Pour recevoir des messages, les clients doivent d'abord s'abonner à un sujet spécifique, c'est-à-dire sujet
QoS, qualité de service. Un signe supplémentaire indiquant s'il faut attendre ou non la confirmation de réception d'un message
Texte du message, texte du message. Chaîne de texte de 500 caractères
Le protocole est construit sur un modèle abonné / éditeur dont la logique générale est légèrement différente du modèle client-serveur habituel commun dans les protocoles industriels.
- , .. , . , . , . « 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.
D'autres recherches ont montré une excellente utilisation de mqtt en conjonction avec l'environnement Node-RED. Un programme a été "dessiné" sur Node-RED qui reçoit ces données d'un courtier, analyse la chaîne reçue et écrit toutes les informations (horodatage, valeur) dans la base de données MariaDB. Elle, le programme sur Node-RED a permis d'extraire des informations pour une période de temps spécifiée, de les montrer sous la forme d'un tableau, d'un graphique et de les télécharger sous forme de fichier .csv.