[Tutoriel de démarrage rapide] Créer un deuxième processus via l'interface de programmation de la passerelle de périphérie de la série EG

Présentation des exigences

Ce chapitre porte principalement sur la mise en œuvre d'un processus : l'EG8200 collecte des données provenant du Siemens S7-200 Smart, les convertit au format JSON et les transmet à la plateforme d'application via MQTT ; parallèlement, il peut recevoir des commandes de contrôle émises par la plateforme d'application afin de permettre la commutation à distance. Pour mettre en œuvre ce processus, il convient de préparer à l'avance les éléments suivants :

 

  1. La table des ports et des adresses IP de l'automate à interroger, par exemple :

PLC

S7-200 Smart

IP

192.168.0.24/102

Tableau des points (DB1)

adresse

type de données

Attributs

nom

V0.0

Booléen

en lecture seule

État de démarrage et d'arrêt du moteur n° 1

V0.1

Booléen

en lecture seule

État de démarrage et d'arrêt du moteur n° 2

V0.2

Booléen

en lecture seule

État de démarrage et d'arrêt du moteur n° 3

V0.3

Booléen

en lecture seule

État de démarrage et d'arrêt du moteur n° 4

V0.4

Booléen

Lire et écrire

Commande de démarrage et d'arrêt du moteur n° 1

V0.5

Booléen

Lire et écrire

Commande de démarrage et d'arrêt du moteur n° 2

V0.6

Booléen

Lire et écrire

Commande de démarrage et d'arrêt du moteur n° 3

V0.7

Booléen

Lire et écrire

Commande de démarrage et d'arrêt du moteur n° 4

VD100

Non signé 16

en lecture seule

Tension (V)

VD200

Non signé 16

en lecture seule

Courant (A)

  1. Paramètres liés à la communication MQTT et exigences relatives au format de données JSON, tels que :
url:1883.dtuip.com:1883
clientID:820000003058164F
identifiant : 19381903226
mot de passe : ZHZK19381903226
Abonnement : 820000003058164F / Publication : 820000003058164F
Format JSON : { "sensorDatas" : [ { "flag" : "em1Status", "switcher" : 1 }, { "flag" : "em2Status", "switcher" : 1 }, { " flag " : " em3Status ", " switcher " : 1 }, { " flag " : " em4Status ", " switcher " : 1 }, { " flag " : " em1Control ", " switcher " : 0 }, { "flag":"em2Control", "switcher":0 }, { "flag":"em3Control", "switcher":0 }, { "flag":"em4Control" , "switcher":0 }, { "flag":"voltage", "value":220,0 }, { "flag":"current", "value":10,2 } ]}

Analyse de la demande

Lors de la création d'un processus, la logique de base est la suivante : pour adapter le processus en fonction de l'évolution des données. Après analyse, on peut en conclure que cette demande se divise principalement en deux parties : la liaison montante et la liaison descendante. Parmi celles-ci, les principales tâches liées à la transmission montante des données comprennent :

    1. Les données de l'automate sont lues via le protocole S7, puis les données obtenues sont stockées en mémoire ( Nœud S7)
    2. Mettre les données au format JSON ( Nœud de fonction)
    3. Établir une connexion MQTT et publier sur le sujet spécifié ( Nœud de publication MQTT)

Les principales tâches liées à la transmission descendante des données sont les suivantes :

    1. Abonnez-vous aux sujets MQTT et recevez les données envoyées par la plateforme ( Nœud d'abonnement MQTT)
    2. Analyser les données JSON reçues et les stocker en mémoire ( Nœud de fonction)
    3. Écrivez dans l'automate programmable selon le format requis par S7 ( Nœud S7)

analyse de la demande

Mise en œuvre des exigences

1. Collecter les données du PLC

    1. Faites glisser un Nœud de lecture S7 et un Nœud de débogage issu de la bibliothèque de nœuds. Nœud de débogage sert à visualiser les données lues dans l'automate afin de faciliter la localisation des problèmes.

Collecter les données du PLC

    1. Double-cliquez Nœud de lecture S7et renseignez les paramètres de configuration correspondants conformément au récapitulatif des exigences, comme illustré dans la figure suivante :
IP : PLC 
Port IP : 102 (port par défaut pour la communication via le protocole S7 : 102) 
Mode : TASP (le S7-200 Smart sélectionne le mode TASP ; les autres modèles sélectionnent le mode Rack/Slot) 
TSAP local : 1002 (valeur fixe) 
TSAP à distance : 0301 (valeur fixe) 
Intervalle de collecte : 1 000 ms (valeur par défaut : 1 000 ms, personnalisable) 
Délai d'expiration : 2 000 ms (valeur par défaut : 2 000 ms, personnalisable) 

Configuration des points de données (vous trouverez la relation correspondante dans le document d'aide) 
V0.0-->DB1,X0.0V0.1 -->DB1, X0,1 V0,2 --> DB1, X0,2 V0,3 --> DB1, X0,3 V0,4 --> DB1, X0,4 V0,5 --> DB1, X0,5 V0,6 -->DB1, X0,6V0,7-->DB1, 

Si les paramètres sont corrects, un message de journal s'affichera dans la fenêtre de débogage, indiquant le contenu des données lues.

Lire le contenu des données

    1. Il arrive parfois que le nombre de points de données de l'automate soit important, et il est fastidieux de les saisir manuellement un par un. Les nœuds prennent en charge l'importation et l'exportation de points de données :

Importation et exportation de nœuds

2. Mise en forme des données

Conformément aux instructions de l'étape 2, vous pouvez voir les données du PLC lues dans la fenêtre de débogage comme suit :

Mise en forme des données

En effet, la plateforme d'application stipule que les données doivent être transmises au format JSON. Ensuite, utilisez Nœud de fonctionCode JavaScript permettant de mettre en forme les données. Voici ce code :

  let jsonArray = []jsonArray.push({ "flag": "em1Status", "switcher": msg.payload.em1Status == true ? 1 : 0 })jsonArray.push({ "flag": "em2Status", " switcher": msg.payload.em2Status == true ? 1 : 0 })jsonArray.push({ "flag": "em3Status", "switcher": msg.payload.em3Status == true ? 1 : 0 })jsonArray. push({ "flag" : "em4Status", "switcher" : msg.payload.em4Status == true ? 1 : 0 })jsonArray.push({ "flag": "em1Control", "switcher": msg.payload. em1Control == true ? 1 : 0 })jsonArray.push({ "flag": "em2Control", "switcher": msg.payload.em2Control == true ? 1 : 0 })jsonArray.push({ "flag": "em3Control", "switcher": msg.payload.em3Control == true ? 1 : 0 })jsonArray.push({ "flag": "em4Control", "switcher": msg.payload.em4Control == true ? 1 : 0 })jsonArray.push({ "flag" : "voltage", "value" : msg.payload.voltage / 100 })/*deux décimales*/jsonArray.push({ "flag" : "current", " value": msg.payload.current / 100 })/*deux décimales*/let data = {}data.sensorDatas = jsonArraymsg.payload = JSON.stringify(data)return msg 

Copiez le code ci-dessus et collez-le dans le nœud de fonction. Vous pourrez constater le résultat après le déploiement :

Mise en forme des données

On constate que les données lues depuis l'automate ont été converties au format JSON final conformément aux exigences, et que les données ont fait l'objet d'un certain traitement (deux décimales). Ce n'est là que la partie émergée de l'iceberg en matière de nœuds de fonction. Comme cette plateforme prend en charge la programmation JavaScript, il est possible d'y implémenter pratiquement toutes les fonctions imaginables.

Lire le contenu des données

3. Transmettre les données via MQTT

Faites glisser un Nœud de publication MQTT , configurez-le en suivant les instructions à l'écran, saisissez les informations relatives à la connexion MQTT ainsi que le sujet de publication MQTT (voir l'aperçu des exigences pour plus de détails), et vous pourrez alors mettre en place le reporting des données. On constate qu'une fois les données transmises avec succès, la plateforme d'application s'affiche en vert pour indiquer que l'appareil est en ligne et que les données sont normales :

Transmettre les données via MQTT

À ce stade, la transmission des données est terminée et peut être effectuée en quelques étapes simples : collecter les données de l'automate programmable (PLC) et les transmettre dans un format JSON personnalisé.

4. Recevoir des données via MQTT

Faites glisser un Nœud d'abonnement MQTT. Remarque : Nœud de publication MQTT et Nœud d'abonnement MQTTpeuvent partager une connexion MQTT. Si vous utilisez la même connexion mais un sujet différent, faites glisser le nœud et sélectionnez la connexion configurée. Si vous choisissez d'ajouter un nouveau nœud de courtier MQTT, cela implique la création d'une nouvelle connexion MQTT.

Recevoir des données via MQTT

Sélectionnez un nœud de débogage et cliquez sur le bouton de commande de la plateforme. Vous pouvez voir les instructions émises dans la fenêtre de débogage :

Nœud de débogage

5. Analyse des données

Selon le guide d'aide de la Nœud d'écriture S7. Il faut savoir que pour écrire des données dans l'automate, les données à transmettre comportent deux paramètres, comme suit :

l'analyse des données

Par conséquent, lors de l'analyse des données, les données envoyées par la plateforme applicative doivent être converties en un message contenant deux variables charge utile et variable transmis à Nœud d'écriture S7. Le code du nœud de fonction est le suivant :

  let cmdDate = msg.payload; msg.variable = cmdDate.sensorDatas[0].flag; msg.payload = cmdDate.sensorDatas[0].switcher == 1 ? true : false; return msg 

Copiez le code ci-dessus, collez-le dans le nœud de fonction, puis configurez le nœud de débogage pour qu'il affiche le message d'origine. Vous verrez s'afficher le contenu suivant :

Nœud de données d'écriture S7

Vous pouvez constater que les données ont été converties au format requis par le nœud d'écriture de données S7.

DTU/Edge Gateway/Plate-forme IoT/Module de passerelle

6. Écrivez à PLC

Faites glisser unNœud d'écriture S7, se connecter Nœud de calcul de fonction, actionnez le commutateur sur la plateforme d'application et observez le résultat de la démonstration :

Écrire à PLC

Résumer

Ce chapitre présente un processus relativement complexe, dont l'objectif est de décrire les fonctionnalités de la passerelle. Par conséquent, il ne vise pas à optimiser la sécurité, la stabilité, la flexibilité, etc. du programme. En comprenant ce processus, je pense que vous maîtrisez déjà la programmation visuelle de la passerelle. Ensuite, découvrez en détail comment utiliser les fonctions de chaque nœud. En les maîtrisant, vous disposerez d'un plus grand choix et de davantage de possibilités pour créer des processus plus complexes !

Code source

Tous les processus prennent en charge l'importation et l'exportation au format JSON, ce qui facilite le partage des processus terminés avec d'autres personnes. Le fichier JSON d'exemple de ce chapitre se présente comme suit. Une fois copié, sélectionnez « Importer » puis « Coller » dans le coin supérieur droit de la barre de menu. La procédure est identique pour l'exportation.

  [{"id":"c8d138cd30e452fc","type":"s7 in","z":"2ff624305b8cb30b","endpoint":"374f5d9e3d2741c0","mode":"all","variable":"", "diff":false,"name":"Lecture des données de l'automate","x":180,"y":180,"wires":[["03f0b9014af25c1d"]]},{"id" : "4abb25e7e75b3447", "type" : "mqtt out", "z" : "2ff624305b8cb30b", "name" : "Libérer les données", "topic":"820000003058164F","qos":"0","retain":"false", "respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker" : "8d85be060cbc6545", "x" : 520, "y" : 180, "wires" : []}, {"id" : "63f2816a781192d5", "type":"mqtt in","z":"2ff624305b8cb30b","name":"Données d'abonnement","topic ":"820000003058164F/ ","qos":"0","datatype":"auto-detect","broker":"8d85be060cbc6545","nl":false,"rap":true,"rh":0 ,"inputs":0,"x":180,"y":260,"wires":[["1b6776e208355720"]]},{"id" : "03f0b9014af25c1d", "type" : "function", " z" : "2ff624305b8cb30b", "name" : "Mise en forme des données", "func " : " let jsonArray = []nnjsonArray.push({ " flag " : " ""em1Status" "
About Me
e87d0ef219292bb40d6f120e7d321bcb?s=150&d=mp&r=g
More Posts