C’è un forte dibattito in merito alla fattibilità di utilizzare Android in installazioni industriali. Le grandi aziende che si contendono il mercato molto spesso costringono i propri clienti ad utilizzare software proprietario.
Il mondo sta cambiando ed Internet è uno dei fattori che permette agli utenti di beneficiare della disponibilità pressochè infinita di informazioni, specifiche tecniche ed anche di persone che gratuitamente condividono la propria esperienza.
La nostra visione è che a breve, sempre più applicazioni industriali beneficeranno dei suggerimenti e sforzi di communità on line e questo sarà la base per una nuova idea di automazione.
In questo post, vi mosterò come l’integrazione di Android in progetti industriali è possibile, e di facile realizzazione.
Obiettivo: Il goal principale è di creare un’interfaccia HMI grazie al quale si
- possa modificare le uscite digitali,
- si possano leggere valori da input analogici come per esempio sonde remote (per esempio PT100)
Prima di entrare nel dettaglio del progetto, vorrei presentarvi un breve video che riassume il mio progetto demo di automazione industriale. Sebbene sia un progetto base, mi risulta essere lo scheletro di moltissime applicazioni industriali di piccola e media taglia.
Caratteristiche hardware:
Il progetto consiste di:
- Un pannello multi-touch ed in particolare ho usato un Ltouch F che dispone anche di un’ottimo codice di protezione, IP54
- Un modulo di espansione I/O per ingressi/uscite digitali (bm_03)
- Un modulo di espansione I/O per ingressi/uscite analogiche (bm_05)
- Cavi e resistenze.
Come potete vedere dallo schema precedente, queste tre componenti sono connesse da un bus RS485, con una resistenza di terminazione da 120-Ohm. Ho specificamente scelto RS485 (ed il protocollo modbus) perchè è ampiamente usato in industria, per la particolare resistenza alle interferenze e per la capacità di connettere unità remote separate da lunghe distanze.
Caratteristiche Software:
L’interfaccia HMI che ho creato consiste di:
- un gruppo di bottoni che una volta premuti, modificano gli output digitali dei moduli I/O remoti,
- un insieme di label che contengono le temperature lette dalle sonde remote sempre collegate ai moduli I/O (i valori letti saranno interi e sarà quindi necessario convertirli in float o double)
Tutte le precendenti azioni vengono gestite attraverso il protocollo modbus RTU. Il pannello Ltouch sarà il master ed i moduli saranno gli slave. La comunicazione avviene grazie ad una libreria nativa Android che gestisce le chiamate modbus, compresa nel pannello Ltouch. La libreria nasconde i dettagli implentativi del protocollo e permette di inglobare facilmente le chimate modbus di alto livello in qualsiasi app Android.
Per esempio, il codice che ho utilizzato per modificare l’uscita digitale è il seguente:
ModbusLib.PresetMultipleRegisters(fid, node_to_write, starting_address, no_of_registers, holdingRegs);
In particolare, ho utilizzato la funzione modbus 16 PresetMultipleRegisters. I parametri sono i seguenti:
- fid che corrisponde alla porta seriale,
- node_to_write si riferisce al numero dello slave,
- starting_address è l’indirizzo del registro di partenza in cui si scrive,
- holdingRegs è un riferimento all’array che contiene i valori che saranno scritti.
La frequenza di aggiornamento dei valori che ho utilizzato è di 250ms ed ho trovato che la MCU ARM Cortex A8 ad 1 GHz è molto veloce e gestisce molto bene questo rate. Un altro fattore fondamentale è stato quello di aver impostato il ritardo di risposta modbus dei moduli I/O remoti a zero. Il baudrate è di 38400 bps.
Un progetto simile a quello che vi ho presentato è di facile costruzione, e come spiegato in precedenza, è comune a diversi progetti di automazione industriale o dei processi. Un’altra situazione che si presenta spesso è quella di avere un PLC che gestisce interamente la logica del progetto e che comunica attraverso i moduli di I/O remoti. I dati vengono successivamente presentati all’utente attraverso l’interfacciamento del PLC ad un panello touch.
I progetti che adottano questa architettura possono essere semplicemente gestiti con un pannello Ltouch perchè è compatibile con tutti i PLC che supportano il protocollo modbus su RS485. In progetti più complessi, si può utilizzare il pannello Ltouch ed un numero di slave teorico pari a 127.
L’automazione industriale è un’area vasta e molto complessa che non può essere descritta in dettaglio attraverso un singolo post. Anche se questo articolo è una goccia in questa area di lavoro, spero di aver dato qualche nuova idea per poter sfruttare nuove tecnologie e nuovi approcci nel campo dell’automazione industriale e dei processi.
Come al solito, commenti e suggerimenti sono sempre ben accetti! 🙂