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

GENNAIO-FEBBRAIO 2016

AUTOMAZIONE OGGI 387

117

Il modello di comunicazione è di tipo editore-abbo-

nato in cui viene introdotta la figura dell’intermedia-

rio, il broker, che si occupa di raccogliere i messaggi

inviati dai nodi sorgente e di ridistribuirli a tutti i

nodi abbonati a un determinato argomento o ‘topic’.

Dato che il broker si fa carico di tutte le complessità

connesse alla distribuzione, il pacchetto dati Mqtt ri-

sulta particolarmente semplice: un identificatore di

pacchetto, una stringa che descrive i topic secondo

una gerarchia ad albero, il livello di QoS, una flag da

settare per istruire il broker di salvare il messaggio, il

contenuto vero e proprio del messaggio e una flag

che indichi se il messaggio sia o meno un duplicato.

Le dimensioni del payload possono arrivare a 256

MByte; la produzione di un sensore sarà tipicamente

una successione di stringhe del tipo ‘campo:valore’.

Esistono diverse implementazioni open source di

broker per Mqtt e Mqtt-SN; all’interno dell’ecosi-

stema di Eclipse, Mosquitto si distingue per legge-

rezza ed efficienza. Scritto in C per renderne possibile

l’esecuzione su hardware limitato (sono ad esempio

disponibili versioni per Raspberry Pi, Beaglebone, Intel

Edison, Arduino Yun, Arduino con ‘shield’ Ethernet o

wi-fi ed Esp8266), Mosquitto si presenta come un ese-

guibile dell’ordine del centinaio di kB. Anche il progetto Paho della

fondazione Eclipse offre implementazioni open source dei client per

Mqtt e Mqtt-SN per applicazioni m2m e IoT.

La raccolta dei dati

Le applicazioni di controllo e supervisione hanno bisogno di soft-

ware che si occupi della raccolta e organizzazione dei dati che

sono stati inviati dai nodi sul canale di comunicazione. Nei sistemi

Scada, in particolare, l’archivio storico rappresenta il punto di par-

tenza per effettuare analisi, visualizzare trend e generare report.

Per quanto sia teoricamente possibile utilizzare un database rela-

zionale tramite SQL per gestire i dati provenienti da un sistema di

automazione, nel mondo in rapida evoluzione delle applicazioni

web si stanno affermando soluzioni cosiddette ‘no-SQL’, con ca-

ratteristiche di leggerezza e scalabilità che ben si sposano alle esi-

genze delle comunicazioni m2m in ambito IoT e industriale. E così,

anche se

Node.js

mette a disposizionemoduli driver per i principali

motori SQL, strumenti più indicati risultano essere i gestori di basi

dati orientate ai documenti come MongoDB e Influxdb.

MongoDB

è un database multipiattaforma open source (con li-

cenza Agpl e Apache) orientato ai documenti e progettato per es-

sere estremamente veloce, altamente scalabile e facile da usare.

Rende particolarmente efficiente gestire enormi moli di dati,

come quelle prodotte dai sensori del mondo IoT e sfruttate dalla

applicazioni Big Data. I dati sono trattati utilizzando una variante

binaria della rappresentazione Json (JavaScript Object Notation),

il formato Bson, che aggiunge efficienza all’integrazione con gli

altri elementi dello stack basati su Javascript.

InfluxDB

è invece un’applicazione database espressamente

pensata per gestire dati in forma di serie temporali, successioni

di ‘punti’ costituiti da marcatura temporale, descrizione del tipo

di misura e coppie chiave-valore. E se questo lo rende la solu-

zione ideale per l’implementazione di archivi storici nei sistemi

Scada, è anche vero che influxDB è comunque in grado di gestire

dati di altro tipo, come allarmi, eventi e log. Distribuito con una

permissiva licenza MIT, InfluxDB è scritto in Go (altro linguaggio

open source sviluppato nei laboratori Google) e si presenta sotto

forma di un singolo file binario senza dipendenze esterne che ne

semplifica l’installazione.

Visualizzazione e HMI

Dato che pannelli operatore e sistemi di monitoraggio e supervi-

sione sono tipicamente implementati su hardware che non soffre

delle limitazioni che caratterizzano sensori e attuatori, la scelta

del software, la rappresentazione dei dati raccolti, la visualizza-

zione dei trend, la generazione di report e l’interazione HMI pre-

sentano solo l’imbarazzo della scelta.

In uno stack imperniato attorno al linguaggio Javascript tutte

queste operazioni possono essere gestite direttamente dal client

sotto forma di un browser in grado di interpretare il linguaggio

Html5, eventualmente appoggiandosi a opportune librerie e fra-

mework per semplificare la gestione degli input, l’elaborazione

dei risultati e la rappresentazione degli elementi grafici.

jQuery ad esempio è una libreria JavaScript dalla dimensioni par-

ticolarmente contenute che offre funzioni per la manipolazione

degli eventi e l’animazione degli elementi grafici di una pagina

Web.

Angular.JS

offre invece un vero e proprio framework per

eseguire funzioni complesse sul lato client, mettendo a disposi-

zione strumenti per la creazione di vere e proprie applicazioni che

trascendono la natura dichiarativa del linguaggio Html.

Per quanto riguarda la generazione di elementi grafici, la comu-

nità open source mette a disposizione la libreria JavaScript

D3.js

che accetta dati in vari formati (tra cui json e csv) e produce grafici

e animazioni per mezzo di canvas Html5, fogli di stile e istruzioni

vettoriali SVG.

Integrando opportunamente queste librerie con il linguaggio

Html5 diventa possibile sviluppare client HMI flessibili e dal look

moderno, senza uscire dal dominio del software OSS.

Il mondo open source mette a disposizione anche i componenti

per gestire, organizzare e rappresentare i dati raccolti da un sistema

di automazione e controllo