Home › Forum › Programmazione IEC 61131 (LogicLab) › Come inviare dati al portale Beebotte
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 4 anni, 7 mesi fa da Sergio Bertana.
-
AutorePost
-
Settembre 12, 2019 alle 4:27 pm #49612pierluigi parolaroPartecipante
Vorrei utilizzare il portale beebotte in un progetto, ho letto la knowledge sul sito ma non ho ben capito come poter pubblicare più valori contemporaneamente ad intervalli di un minuto per adesso sarebbero 8 valori REAL e 8 valori BOOL.
Settembre 13, 2019 alle 6:24 am #49632Sergio BertanaAmministratore del forumSe fai riferimento al manuale della FB MQTTBeebotte, vedrai che ho allocato un array di FB TPBeebotte, ed ad ogni attivazione del bit di Publish della FB viene inviato il dato indirizzato dal parametrio Resource alla piattaforma Beebotte.
Quindi nel tuo caso puoi definire un array di 16 FB TPBeebotte, ed abbinare ad ognuna la variabile REAL e BOOL che devoi inviare al servizio, alla attivazione del comando di Publish di ognuna la relativa variabile sarà inviata. Puoi anche attivare contemporaneamente tutti e 8 i bit di comando, l’invio verrà poi automaticamente gestito dalla FB.
Settembre 24, 2019 alle 12:25 pm #49972pierluigi parolaroPartecipanteCome faccio a definire un array di blocchi funzione? Ed a assegnare le relative variabili, mi potrebbe fare un esempio.
Settembre 24, 2019 alle 12:41 pm #49976Sergio BertanaAmministratore del forumL’esempio è nel programma che trovi sul manuale della FB MQTTBeebotte, in pratica ammettendo di dover pubblicare 8 variabili avremo.
// 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;
Naturalmente la definizione dell’array và definita nella zona delle dichiarazioni, l’inizializzazione si può fare al primo loop ed il resto nel main. Ma se segui quanto riportato nel manuale credo sia tutto chiaro.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.