Vai al contenuto

Come inviare dati al portale Beebotte

Home Forum Programmazione IEC 61131 (LogicLab) Come inviare dati al portale Beebotte

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #49612
    pierluigi parolaro
    Partecipante

    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.

    #49632
    Sergio Bertana
    Amministratore del forum

    Se 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.

    #49972
    pierluigi parolaro
    Partecipante

    Come faccio a definire un array di blocchi funzione? Ed a assegnare le relative variabili, mi potrebbe fare un esempio.

    #49976
    Sergio Bertana
    Amministratore del forum

    L’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.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.