FB HTTPGetPage ed il servizio REST

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Programmazione IEC 61131 (LogicLab) FB HTTPGetPage ed il servizio REST

Questo argomento contiene 9 risposte, ha 3 partecipanti, ed è stato aggiornato da  Sergio Bertana 6 mesi, 2 settimane fa.

Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
  • Autore
    Articoli
  • #35883

    Andrea
    Partecipante

    Ho scaricato ed installato il nuovo firmware SFW184B000 con la nuova funzione di gestione HTTP, volevo chiedere se era possibile avere degli esempi di utilizzo della FB HTTPGetPage in ST ed in FBD.

    #39208

    Sergio Bertana
    Amministratore del forum

    Nel nuovo firmware è stata completamente ridisegnata la gestione del networking con l’aggiunta delle FB per gestire connessioni sia client che server in UDP e TCP. E’ stato introdotto anche il supporto DNS per la risoluzione degli URLs. Questo ha permesso di realizzare tutta una serie di nuovi FB dedicati al networking, consiglio di consultare la nuova versione del manuale.

    Il FB HTTPGetPage permette di agire come un comune browser acquisendo pagine web da server HTTP, nel manuale c’è già un esempio in linguaggio ladder che si connette ad uno script PHP postato su un server pubblico. Nell’esempio attivando un ingresso digitale viene eseguita la richiesta di una pagina sul sito Altervista, sono passati in GET 2 parametri Dividend e Divisor.

    La pagina richiesta è uno script PHP che esegue la divisione tra i valori passati. E’ possibile testare il funzionamento dello script direttamente da qui http://www.slimline.altervista.org/Mdp095a000/Ptp119b000/Division.php?Dividend=500&Divisor=10.

    Se lo script è attivo viene ritornata una pagina con: The result is: 50. E’ ovvio che si può testare lo script modificando i valori nell’indirizzo del browser ottenendo risultati diversi. Lo scopo del FB è proprio questo appoggiarsi da programma SlimLine su di un servizio web nel cloud per fare eseguire operazioni.

    #39209

    Sergio Bertana
    Amministratore del forum

    Approfitto del topic per aggiungere che il FB HTTPGetPage è il motore di una nuova libreria che abbiamo sviluppato per alcuni clienti per gestire l’Internet Of Things utilizzando il servizio REST. Stiamo attualmente lavorando su questa libreria che speriamo di poter offrire al più presto, intanto viene rilasciata in modalità beta ai clienti che ne fanno richiesta.

    Ecco uno screenshot della pagina storico del sito REST realizzato per un cliente che gestisce frigoriferi industriali, dove si vede un report con la visualizzazione della temperatura cella frigorifera relazionata a quella dell’evaporatore.

    #39213

    Andrea
    Partecipante

    Il programma di esempio proposto in Ptp119b000 e in linguaggio LD che mi è un pò ostico, se riprodotto in ST ed FBD capirei meglio come integrarlo nel mio sistema, grazie mille.

    #39214

    Sergio Bertana
    Amministratore del forum

    In linguaggio FBD è praticamente uguale al linguaggio LD, quindi ho preferito realizzare un esempio in linguaggio ST dove ho anche predisposto la possibilità di passare in GET alla richiesta valori variabili e di acquisire dalla stringa ritornata il valore del risultato ed appoggiarlo su di una variabile REAL (Ecco la stampa del programma).

    Allego per il download la versione attuale del programma di esempio Ptp119b100 con il nuovo  program (Download programma).

    #39852

    Sergio
    Partecipante

    Buongiorno, credo di aver individuato un bug della FB HTTPGetPage di eLLabNetworkLib_A200.plclib. Nel caso in cui la stringa Request è vuota viene fatta una richiesta HTTP scorretta, esattamente la prima riga (es HTTP /path/a/b/c HTTP/1.1) viene ripetuta tale e quale anche sulla seconda riga.

    Mettendo anche un solo carattere (HTTPClient.Request:=ADR(‘x’);) il problema non si verifica.

    #39853

    Sergio Bertana
    Amministratore del forum

    La libreria è in evoluzione (Stiamo lavorando sulla eLLabNetworkLib_A400) con improvements e bug solutions, in questa versione nel FB HTTPGetPage viene controllato il valore del pointer Request e se è NULL viene fatta la richiesta corretta.

    Siccome la libreria non è ancora ufficialmente rilasciata ti allego per download il programma HTTPGetPage che si collega al server su Altervista dove un programma in php esegue una divisione. Nel programma c’è la nuova versione del FB HTTPGetPage, lo puoi esportare ed utilizzarlo nel tuo progetto (Download programma).

    #39860

    Sergio
    Partecipante

    Grazie per l’aiuto, confermo che la nuova versione non ha il bug segnalato.

    Per usarla in maniera affidabile (con un programma di test che richiede in continuazione nuove operazioni tramite http) ho dovuto però trovare per tentativi la sequenza e le condizioni giuste su Enable e Done, perchè altrimenti dopo poche richieste la FB si inceppava.

    #39861

    Sergio Bertana
    Amministratore del forum

    Attivando Enable parte la richiesta pagina al termine si attiva Done. Sulla attivazione del Done si può resettare Enable. Se si vuole eseguire richieste continue dopo un loop di programma si può riattivare Enable. Ecco come eseguire richieste consecutive, Nota occorre mantenere la sequenzialità del programma così come riportato.

      HTTPPr(); (* FB execution *)

      IF NOT(HTTPPr.Done) AND (HTTPPr.Enable) THEN
        i:=SysVarsnprintf(ADR(Request), SIZEOF(Request), ‘Dividend=%.3f’, REAL_TYPE, ADR(Dividend));    
        i:=SysLWVarsnprintf(ADR(Request), SIZEOF(Request), ‘$26Divisor=%.3f’, REAL_TYPE, ADR(Divisor));    
      END_IF;

      HTTPPr.Enable:=NOT(HTTPPr.Done); (* HTTP get page enable *)

    #44046

    Sergio Bertana
    Amministratore del forum

    Il FB HTTPGetPage è stato sostituito dal nuovo FB HTTPClient (Topic).

Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)

Devi essere loggato per rispondere a questa discussione.