FB HTTPGetPage ed il servizio REST
Home › Forum › Programmazione IEC 61131 (LogicLab) › FB HTTPGetPage ed il servizio REST
- Questo topic ha 9 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 6 anni, 11 mesi fa da
Sergio Bertana.
-
AutorePost
-
Novembre 24, 2015 alle 9:43 am #35883
Andrea
PartecipanteHo 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.
Novembre 24, 2015 alle 9:45 am #39208Sergio Bertana
Amministratore del forumNel 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.
Novembre 24, 2015 alle 10:30 am #39209Sergio Bertana
Amministratore del forumApprofitto 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.
Novembre 24, 2015 alle 12:32 pm #39213Andrea
PartecipanteIl 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.
Novembre 24, 2015 alle 2:57 pm #39214Sergio Bertana
Amministratore del forumIn 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).
Febbraio 24, 2017 alle 8:23 am #39852Sergio
PartecipanteBuongiorno, 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.
Febbraio 25, 2017 alle 7:56 am #39853Sergio Bertana
Amministratore del forumLa 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).
Febbraio 27, 2017 alle 7:24 pm #39860Sergio
PartecipanteGrazie 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.
Marzo 2, 2017 alle 4:08 pm #39861Sergio Bertana
Amministratore del forumAttivando 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 *)
Maggio 10, 2018 alle 4:12 pm #44046Sergio Bertana
Amministratore del forumIl FB HTTPGetPage è stato sostituito dal nuovo FB HTTPClient (Topic).
-
AutorePost
- Devi essere connesso per rispondere a questo topic.