Accueil > Forum > Programmation IEC 61131 (LogicLab) > Comment envoyer des données au portail Beebotte
- Ce sujet a 3 réponses, 2 participants et a été mis à jour pour la dernière fois 4 années, 7 mois da Sergio Bertana.
-
auteurPost
-
Septembre 12, 2019 à 4: pm 27 #49612Pierluigi ParolaroPartecipante
Je voudrais utiliser le portail beebotte dans un projet, j'ai lu les connaissances sur le site mais je ne comprenais pas comment publier plusieurs valeurs simultanément à des intervalles d'une minute, pour l'instant les valeurs 8 seraient REAL et les valeurs 8 BOOL.
Septembre 13, 2019 à 6: 24 am #49632Sergio BertanaAdministrateur du forumSi vous vous référez au manuel du FB MQTTBeebotte, vous verrez que j'ai alloué un tableau de FB TPBeebotteet à chaque activation du bit de Publish du FB, les données adressées par le paramètre sont envoyées Resource à la plate-forme Beebotte.
Donc, dans votre cas, vous pouvez définir un tableau de FB 16 TPBeebotte, et d’associer à chacune les variables REAL et BOOL que vous devez envoyer au service, lors de l’activation de la commande Publish de chacun, la variable relative sera envoyée. Vous pouvez également activer les 8 bits de commande simultanément, l'envoi sera alors automatiquement géré par le FB.
Septembre 24, 2019 à 12: pm 25 #49972Pierluigi ParolaroPartecipanteComment définir un tableau de blocs de fonction? Et pour assigner les variables liées, je pourrais donner un exemple.
Septembre 24, 2019 à 12: pm 41 #49976Sergio BertanaAdministrateur du forumL'exemple est dans le programme que vous trouvez dans le manuel du FB MQTTBeebotte, en pratique admettant devoir publier 8 variables que nous aurons.
// Dichiarazione array di 8 pubblicazioni. TPublish : ARRAY[ 0..7 ] OF TPBeebotte; (* Topic publish *) // Definizione per ogni pubblicazione della variabile da pubblicare. // Viene definito il canale e la risorsa "Channel/Resource" // Il tipo e l'indirizzo della variabile il cui valore và pubblicato. TPublish[0](Resource:=ADR('Channel/Resource1'), DType:=REAL_TYPE, DBuffer:=ADR(Var1), DBLength:=0); TPublish[1](Resource:=ADR('Channel/Resource2'), DType:=BOOL_TYPE, DBuffer:=ADR(Var2), DBLength:=0); ... TPublish[7](Resource:=ADR('Channel/Resource7'), DType:=UINT_TYPE, DBuffer:=ADR(Var7), DBLength:=0); // Eseguo pubblicazione ogni 5 secondi. IF ((SysGetSysTime(TRUE)-TimeBf) > 5000000) THEN TimeBf:=SysGetSysTime(TRUE)-TimeBf); //Time buffer (uS) FOR i:=0 TO 7 DO TPublish[i].Publish:=TRUE; END_FOR; END_IF;
Bien entendu, la définition du tableau doit être définie dans la zone de déclaration, l'initialisation peut se faire dans la première boucle et le reste dans la main. Mais si vous suivez ce qui est écrit dans le manuel, je pense que tout est clair.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.