Table of Contents Table of Contents
Previous Page  116 / 142 Next Page
Information
Show Menu
Previous Page 116 / 142 Next Page
Page Background

GENNAIOFEBBRAIO 2016

AUTOMAZIONE OGGI 387

116

AO

TUTORIAL

viene messo a disposizione un ragionevolmente completo stack

software (ambiente di esecuzione in tempo reale, webserver, stack

di comunicazione, gestione di database, visualizzazione) per l’im-

plementazione di soluzioni di automazione e controllo che sconfi-

nano nello Scada.

È noto come una buona fetta della rete Internet si appoggi, oltre

che allo stack di comunicazione TCP/IP, a quello che è conosciuto

come stack Lamp: Linux, Apache, MySQL e Php. Si tratta di soft-

ware estremamente potenti e flessibili, che però mal si sposano

con le ridotte risorse hardware e le caratteristiche di snellezza ed

efficienza tipiche di una rete di automazione. Le esigenze di svi-

luppo rapido delle applicazioni web del nuovo millennio hanno

portato più di uno sviluppatore open source a proporre nuove so-

luzioni che, specialmente alla luce dell’evoluzione IoT dei sistemi

di controllo e supervisione, si sono rivelate in grado di soddisfare

anche i bisogni degli utilizzatori industriali.

Qui di seguito illustriamo

brevemente una possibile,

ma non unica, combina-

zione di tecnologie OSS per

il mondo dell’automazione:

node.js

per il webserver,

Mqtt e Mosquitto per le

comunicazioni, influxDB o

MongoDB per la gestione

dei dati e Html5 con rela-

tive estensioni per la visua-

lizzazione e la realizzazione

di interfacce HMI.

Il web server

leggero

La chiave per realizzare un

webserver leggero risiede,

paradossalmente, nel lin-

guaggio per lato client

JavaScript. Nonostante le

umili origini di linguaggio

client-side in stile Visual

Basic, JavaScript è un lin-

guaggio flessibile e po-

tente le cui potenzialità sul

lato server sono state evidenziate per la prima volta nel 2009 con

il rilascio di

Node.js

(in breve, Node).

Node rappresenta un’alternativa ultraleggera sotto forma di

scripting al potente webserver Apache. Basato sull’efficiente mo-

tore JavaScript V8 sviluppato da Google e pubblicato come open

source nel 2008, Node è scritto interamente in C++ e può essere

eseguito come un processo (peraltro arrestabile e ripristinabile in

maniera automatica in caso di errore) sumacchine dalle risorse par-

ticolarmente limitate. A contribuire all’efficienza di V8 è anche la

compilazione Just-In-Time del codice Javascript che viene trasfor-

mato, in maniera trasparente all’utente, in codice macchina man

man che viene eseguito. A farne un ideale candidato per la realizza-

zione di sistemi a bassa latenza è però la caratteristica delle funzioni

di I/O di non bloccare l’esecuzione fino al loro completamento.

Viene invece impiegato un meccanismo di callback che notifica al

chiamante l’avvenuto completamento del task, così diventa possi-

bile accodare più compiti in parallelo senza doversi preoccupare

di gestirne esplicitamente il threading. Di fatto Node è un sistema

a singolo thread, circostanza che semplifica enormemente lo svi-

luppo delle applicazioni di retema non costituisce una limitazione;

è infatti possibile lanciare istanze multiple di Node delegando al

sistema operativo la gestione del multi-threading.

Node è inoltre dotato di una libreria predefinita di moduli per la

gestione del file system, dei protocolli di comunicazione (Http,

TCP, UDP, DNS, TSL/SLL), dell’interfacciamento con WebSocket e

Mqtt, degli stream e dei buffer dati, e ha anche un set di funzioni

per crittografia.

Il transito lungo il canale

I dati relativi al funzionamento di sensori e attuatori sono veicolati

da e verso i sistemi di supervisione e controllo attraverso un ca-

nale di comunicazione. Per ricevere e trasmettere dati sul canale,

le applicazioni client e server

hanno bisogno di accordarsi

su un protocollo di comunica-

zione.

Una prima proposta open

source è rappresentata da

WebSocket, un protocollo e

famiglia di API (Application

Programming Interface) che

rende possibile instaurare tra

generici dispositivi client e

server una connessione TCP

stabile per comunicazioni bi-

direzionali full-duplex. Inizial-

mente sviluppata per essere

usata nei browser web, la

tecnologia WebSocket è sup-

portata da qualsiasi client ba-

sato su browser, in particolare

Html5, mentre è disponibile

all’interno di

node.js

grazie al

modulo

Socket.IO.

Per le applicazioni in ambito

IoT, domotico, automotive,

Scada e di automazione indu-

striale, risulta più interessante

il protocollo Mqtt (MQ Telemetry Transport). Messo a punto da

IBM alla fine degli anni ‘90 per trasferire i dati dei sensori degli

oleodotti attraverso reti a elevata latenza e banda ridotta, è un

protocollo che si appoggia a TCP/IP che è stato reso pubblico nel

2010 e successivamente standardizzato da Oasis per le applica-

zioni IoT. Nel 2008 è stata introdotta la variante Mqtt-SN che si

applica alle reti prive di connessione basate sul protocollo UDP.

Rispetto a OPC (Open Platform Communications, precedente-

mente noto come OLE for Process Control), Mqtt è completa-

mente gratuito ed esente da royalty. Inoltre è estremamente

leggero in termini di risorse hardware e overhead dati, così da

risultare una scelta appropriata per le reti con numerosi nodi di ri-

dotta complessità computazionale quali sono sensori e attuatori.

Invece di utilizzare un dispendioso meccanismo di polling per

l’interrogazione dei nodi, il protocollo Mqtt prevede che i dati

vengano inviati non appena disponibili a tutti i nodi interessati.

Webserver e gestione delle comunicazioni con protocolloMqtt

richiedono poche risorse con i software open source

node.js

e

Mosquitto