In der Siemens Knowledge Base (SIOS) finden Sie ein interessantes Beispiel fĂŒr die Verwendung von S7-1200- und S7-1500-Leitungssteuerungen als Client des MQTT-Protokolls
Folgen Sie dem Link, um die Bibliothek selbst mit dem Funktionsblock MQTT_Client (ĂŒbrigens Open Source) und einer ErlĂ€uterung zu finden. Die Dokumentation selbst ist ziemlich umfangreich. Wer Englisch kann, kann dem Link sicher folgen und diese Notiz nicht lesen, wodurch er sich mehrere faszinierende Stunden technischer Forschung verschafft. Und im Ăbrigen, weniger erfahren und / oder fauler, werde ich Ihnen kurz die Hauptsache erklĂ€ren und mein Beispiel fĂŒr die Arbeit eines Kunden demonstrieren, die kreativ fĂŒr eine mehr oder weniger reale Anwendung ĂŒberarbeitet wurde.
Kurz zu den Bedingungen.
MQTT - Telemetrietransport in der Warteschlange fĂŒr Nachrichten. Telemetrieprotokoll fĂŒr Messaging. Ich finde es schwierig, den Namen richtig ins Russische zu ĂŒbersetzen.
Nachricht - Nachricht. Direkt die ĂŒbertragenen Daten selbst. Die Nachricht besteht aus mehreren Teilen:
Thema, der Betreff der Nachricht. Eine Zeichenfolge, die im ursprĂŒnglichen Beispiel auf 200 Zeichen begrenzt ist. Um Nachrichten zu empfangen, mĂŒssen Clients zuerst ein bestimmtes Thema abonnieren, d. H. Thema
QoS, ServicequalitÀt. Ein zusÀtzliches Zeichen, das angibt, ob auf die BestÀtigung des Empfangs einer Nachricht gewartet werden soll oder nicht
Nachrichtentext, Nachrichtentext. Textzeichenfolge mit 500 Zeichen
Das Protokoll basiert auf einem Abonnenten- / Herausgebermodell, dessen allgemeine Logik sich geringfĂŒgig von dem in Industrieprotokollen ĂŒblichen Client-Server-Modell unterscheidet.
- , .. , . , . , . « 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.
Weitere Untersuchungen haben gezeigt, dass mqtt in Verbindung mit der Node-RED-Umgebung hervorragend verwendet wird. Auf Node-RED wurde ein Programm "gezeichnet", das diese Daten von einem Broker empfĂ€ngt, die empfangene Zeichenfolge analysiert und alle Informationen (Zeitstempel, Wert) in die MariaDB-Datenbank schreibt. Sie, das Programm auf Node-RED, ermöglichte es, Informationen fĂŒr einen bestimmten Zeitraum abzurufen, in Form einer Tabelle anzuzeigen, grafisch darzustellen und als CSV-Datei hochzuladen.