Davide Gullo, Consulente web

04.02.2012
12:20 (+00:00)
05a settimana
34o giorno

  "E il mare il web concederà ad ogni uomo nuove speranze, come il sonno i sogni..." Cristoforo Colombo

Modbus e PHP

martedì, 03 novembre 2009

Sono alle prese da diversi giorni con un problema da risolvere per un nuovo progetto che porterò avanti nei prossimi mesi. Dopo aver sbattuto un po’ la testa sul Modbus, il protocollo di comunicazione dei PLC, sono alla ricerca di una soluzione che mi permetta di effettuare chiamate ad uno slave da ambiente PHP. Il risultato della chiamata Modbus quindi deve essere disponibile direttamente nel codice PHP.

Le diverse soluzioni che sto analizzando sono:

  1. Scrivere un’estensione per PHP che, grazie ad una libreria Libmodbus, possa effettuare chiamate direttamente dal codice PHP
  2. Utilizzare un Gateway Modbus TCP/IP- RTU. In pratica dal codice PHP potrei effettuare una chiamata al gateway tramite socket. Il gateway a sua volta gestirebbe la chiamata al device via Modbus e restituirebbe i dati alla mia procedura PHP.
  3. Utilizzare un software open source tipo SCADA. Ad esempio Likindoy o OpenSCADA.

La soluzione migliore, in termini di sviluppo, come sempre deve essere la più semplice da implementare e manutenere. Al momento sono orientato sulla 1, la 2 ho problemi a compilarla e la 3 l’ho parcheggiata in attesa di testarla.
Vi farò sapere…

Aggiornamento del 03/01/2011

Avendo ricevuto richieste di maggiori dettagli sull’estensione ho deciso di rilasciarla sotto licenza GPL v2, si sa mai che qualche altro sviluppatore si unisca al progetto per migliorarla.

Al momento l’estensione PHP implementa solo una parte delle funzioni Modbus esistenti:

  • Read holding registers (func. 03)
  • Read input registers (func. 04)
  • Write (func. 16, sviluppo terminato ma non testato)

Il tutto è implementato secondo il formato RTU.

Link al progetto: Estensione PHP per Modbus

12 commenti

Ciao,
sto anche io valutando l’utilizzo di modbus per creare un demone master-slave.Sei più andato avanti nelle tue sperimentazioni?

Maurizio

Ciao Maurizio,
siamo andati avanti. Alla fine ci siamo orientati sullo sviluppo di un’estensione PHP specifica per il Modbus.

ciao Davide.. puoi darmi qualche dettaglio in più sull’estensione PHP per modbus che avete sviluppato?

grazie.. ciao

ciao Luca, leggi sopra!
Ho rilasciato l’estensione sotto licenza GPL v2.
Se vuoi contribuire…. a buon rendere! ;-)

Ciao, anche io sono interessato e se necessario posso contribuire.
Hai documentazione o indicazioni per passare dal codice sorgente all’estensione php ?

Grazie

ciao Fishwolf, cosa intendi con “passare dal codice sorgente all’estensione PHP”?

Ciao, grazie della pronta risposta.

Dalla mia esperienza le estensione php sono .so, dei compilati C.
Ho scaricato il progetto e il .so non è presente, ne ho trovato un makefile per compilarlo sulla piattaforma in uso.
Ho letto rapidamente l’articolo di HTML.it che fa’ riferimento a Zend, ma non ho capito come ottenere l’estensione da installare

Hai delle indicazioni da darmi ?
Grazie

sto usando ubuntu server 10.06 TLS

Ok, tutto chiaro.
Per prima cosa devi procurarti i sorgenti PHP poi, sulla macchina dove girerà la libreria, devi compilare l’estensione Standalone (o direttamente dentro il PHP).
Visto che parli di .so il punto che ti interessa lo trovi in questa pagina: Standalone extensions (vedi 14.3.5.1).
Dai uno sguardo anche al manuale ufficiale di PHP riguardo le estensioni.

Se può essere di interesse, ho sviluppato un hardware modbus compliant a basso prezzo. Funziona con una libreria che ho scritto in php per l’implementazione in CLI o via Apache.

I miei più sentiti complimenti.

Scrivi un commento
Istruzioni e suggerimenti

A capo e la separazione tra i paragrafi sono automatici.
L'indirizzo e-mail non verrà mai mostrato.
Il codice HTML permesso è:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">
I campi con * sono obbligatori.





TrackBack

TrackBack URI per questo articolo

 

Pinguino imperatore

Aptenodytes forsteri,
descritto da G. R. Gray nel 1844, Mari Antartici.

Tux è la mascotte ufficiale del kernel Linux. Creato da Larry Ewing nel 1996, è un pinguino paffuto dall'aria contenta. L'idea che la mascotte di Linux dovesse essere un pinguino venne da Linus Torvalds, il creatore del kernel Linux.
[FSF Associate Member]
Free Software Foundation
Associate Member
Join!
Davide Gullo
   Crea il tuo badge