Encontrado en la base de conocimientos de Siemens (SIOS) un ejemplo interesante del uso de controladores de lĂnea S7-1200 y S7-1500 como cliente del protocolo MQTT
Enlace a la fuente original .
Siga el enlace para encontrar la biblioteca en sĂ con el bloque funcional MQTT_Client (cĂłdigo abierto, por cierto) y una nota explicativa, por ejemplo. La documentaciĂłn en sĂ es bastante completa, aquellos que saben inglĂ©s pueden seguir el enlace con seguridad y no leer esta nota, lo que les permitirá dedicar varias horas fascinantes de investigaciĂłn en ingenierĂa. Y por lo demás, menos experimentado y / o más vago, te contarĂ© brevemente lo principal y demostrarĂ© mi ejemplo del trabajo de un cliente, reelaborado creativamente para una aplicaciĂłn más o menos real.
Brevemente sobre los términos.
MQTT: transporte de telemetrĂa de cola de mensajes. Protocolo de telemetrĂa para mensajerĂa. Me resulta difĂcil traducir el nombre correctamente al ruso.
Mensaje - mensaje. Directamente, los propios datos transmitidos. El mensaje consta de varias partes:
Tema, asunto del mensaje. Una cadena de caracteres limitada a 200 caracteres en el ejemplo original. Para recibir mensajes, los clientes primero deben suscribirse a un tema especĂfico, es decir, tema
QoS, calidad de servicio. Un cartel adicional que indica si esperar la confirmaciĂłn de la recepciĂłn de un mensaje o no.
Texto del mensaje, texto del mensaje. Cadena de texto de 500 caracteres
El protocolo se basa en un modelo de suscriptor / editor, cuya lĂłgica general es ligeramente diferente del modelo cliente-servidor habitual en los protocolos industriales.
- , .. , . , . , . « 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.
Investigaciones posteriores han demostrado un excelente uso de mqtt junto con el entorno Node-RED. Se "dibujĂł" un programa en Node-RED que recibe estos datos del corredor, analiza la cadena recibida y escribe toda la informaciĂłn (marca de tiempo, valor) en la base de datos MariaDB. Ella, el programa en Node-RED hizo posible extraer informaciĂłn para el perĂodo de tiempo especificado, mostrarla en forma de tabla, graficar y subirla como archivo .csv.