In questo articolo voglio condividere l'esperienza nell'uso dei sistemi open source Zabbix e Grafana per visualizzare il funzionamento delle linee di produzione. Le informazioni possono essere utili a chi cerca un modo rapido per la visualizzazione o l'analisi dei dati raccolti nei progetti di automazione industriale o IoT. L'articolo non è una guida dettagliata, ma piuttosto un concetto di sistema di monitoraggio basato su un software open source per l'industria.
Strumenti
Zabbix – lo utilizziamo da tempo per monitorare l'infrastruttura IT dell'impianto. Il sistema si è rivelato così comodo e versatile che abbiamo iniziato a registrare al suo interno i dati delle linee di produzione, sensori e controllori. Questo ci ha consentito di raccogliere tutte le metriche in un unico posto, creare grafici semplici sui consumi delle risorse e sulle prestazioni delle attrezzature, ma mancava molto l'analisi e grafici accattivanti.
Grafana – è uno strumento potentissimo per l'analisi e la visualizzazione dei dati. Un gran numero di plugin consente di estrarre dati da varie fonti (zabbix, clickhouse, influxDB), elaborarli al volo (calcolare valori medi, somme, differenze, ecc.) e disegnare diversi tipi di grafici (da linee semplici, indicatori di velocità, tabelle a schemi complessi).
Draw.io – un servizio che permette di disegnare da un semplice diagramma a blocchi a un piano degli ambienti in un editor online. Ci sono molti modelli pronti e oggetti disegnati. I dati possono essere esportati in tutti i principali formati grafici o in xml.
Mettiamo tutto insieme
Ci sono molti articoli su come installare e configurare Grafana e Zabbix, io cercherò di descrivere i punti principali della configurazione.
Su Zabbix server si crea un «nodo di rete» (host), al quale apparterranno «elementi di dati» (item) con le metriche dai nostri sensori. È consigliabile pianificare in anticipo i nomi dei nodi e degli elementi di dati, rendendoli il più strutturati possibile, poiché li utilizzeremo in Grafana attraverso espressioni regolari. Questo approccio è comodo perché con una sola query si possono ottenere dati da un gruppo di elementi.
Per configurare Grafana sarà necessario installare plugin aggiuntivi:
- Zabbix di Alexander Zobnin (alexanderzobnin-zabbix-app) – integrazione con zabbix
- natel-discrete-panel – plugin per la visualizzazione discreta su un grafico orizzontale
- pierosavi-imageit-panel – plugin per visualizzare i dati sopra la propria immagine
- agenty-flowcharting-panel – plugin per la visualizzazione dinamica di schemi da draw.io
L'integrazione stessa con Zabbix si configura in Grafana, nel menu ConfigurationData sourcesZabbix. Qui è necessario inserire l'indirizzo API del server Zabbix, per me è , e le credenziali di accesso. Se tutto è configurato correttamente, al salvataggio delle impostazioni verrà mostrato un messaggio con il numero di versione API: zabbix API version: 5.0.1
Creiamo un Dashboard
Qui inizia quella magica esperienza di Grafana e dei suoi plugin.
Plugin natel-discrete-panel
Abbiamo dati sullo stato dei motori sulle linee (in funzione = 1, non funziona = 0). Con il grafico discreto possiamo disegnare una scala che mostri: stato del motore, quanto tempo ha funzionato in minuti/orari o % e con quale frequenza è stato avviato.

Visualizzazione degli stati dei motori
A mio avviso, questo è uno dei migliori grafici per visualizzare le prestazioni delle attrezzature. Si vede subito quanto tempo rimane inattivo e in quali modalità funziona più frequentemente. I dati possono essere molti, con la possibilità di aggregarli per intervalli, trasformando i valori (se il valore è "1", mostrare come "ON")
Plugin pierosavi-imageit-panel
Imageit è utile quando hai già uno schema o una pianta dell'ambiente disegnata, su cui vuoi sovrapporre i dati dei sensori. Nelle impostazioni di visualizzazione, è necessario inserire l'URL dell'immagine e aggiungere gli elementi sensor necessari. Gli elementi compaiono sull'immagine e possono essere posizionati nel luogo desiderato con il mouse.

Schema del forno con metriche di temperatura e pressione
Plugin agenty-flowcharting-panel
Vorrei approfondire la creazione di visualizzazioni FlowCharting, poiché è uno strumento incredibilmente funzionale. Permette di creare una mappa mnemonica dinamica, i cui elementi reagiscono ai valori delle metriche (cambiando colore, posizione, nome, ecc.).
Acquisizione dati
La creazione di qualsiasi elemento di visualizzazione in Grafana inizia con la richiesta di dati dalla fonte, che nel nostro caso è Zabbix. Attraverso le richieste, occorre ottenere tutte le metriche che vogliamo utilizzare nello schema. Le chiavi delle metriche sono i nomi degli elementi di dati in Zabbix, e si può specificare sia una singola metrica che un insieme filtrando tramite espressioni regolari. Nel mio esempio, il campo Item contiene l'espressione: «\/(^linea 1)|(disponibilità)|(zucchino)\/» — ciò significa: selezionare tutte le metriche il cui nome inizia esattamente con «linea 1», contiene la parola «disponibilità» o contiene la parola «zucchino»

Esempio di configurazione della richiesta di dati sui motori della prima linea e sulla disponibilità delle materie prime
Trasformazione dei dati
I dati sorgente potrebbero non essere sempre nella forma in cui abbiamo bisogno di visualizzarli. Ad esempio, abbiamo dati al minuto sul peso del prodotto in contenitore (kg) e abbiamo bisogno di visualizzare la velocità di riempimento in t/h. Lo faccio nel seguente modo: prendo i dati sul peso e li trasformo con la funzione delta di Grafana, che calcola la differenza tra i valori della metrica, così il peso attuale diventa kg/min. Poi moltiplico per 0,06 per convertire il risultato in tonnellate/ora. Poiché la metrica del peso viene utilizzata in diverse richieste, assegno un nuovo alias (setAlias) e lo utilizzerò nella regola di visualizzazione.

Esempio di utilizzo del parametro delta e del moltiplicatore e di rinominazione della metrica nella richiesta
Ecco un altro esempio di trasformazione dei dati: dovevo contare il numero di mescolamenti (inizio del ciclo = avvio del motore). La metrica viene calcolata in base allo stato del motore "linea 1 — pompa di drenaggio consiglio 1 (stato)". Trasformazione: cambiamo i dati della metrica sorgente con la funzione delta (differenza dei valori), in questo modo la metrica avrà il valore «+1» per l'avvio del motore, «-1» per la fermata e «0» quando il motore non cambia stato. Dopodiché, elimino tutti i valori inferiori a 1 e li sommo. Il risultato è il numero di avviamenti del motore.
![]()
Esempio di trasformazione dei dati dallo stato attuale al numero di avviamenti
Ora parliamo della visualizzazione vera e propria
Nelle impostazioni di visualizzazione c'è un pulsante «Edit Draw», che apre un editor in cui è possibile disegnare lo schema. Ogni oggetto nello schema ha i propri parametri. Ad esempio, se si specificano le impostazioni del carattere nell'editor, verranno applicate alla visualizzazione dei dati in Grafana.

Ecco come appare l'editor in Draw.io
Dopo aver salvato lo schema, apparirà nella grafana e sarà possibile creare regole per modificare gli elementi.
Nei parametri () indichiamo:
- Options — si specifica il nome della regola (Rule name), il nome o il soprannome della metrica i cui dati verranno utilizzati (Apply to metrics). Il tipo di aggregazione dei dati (Aggregation) influisce sul risultato finale della metrica; ad esempio, Last — indica che verrà scelto l'ultimo valore, avg — è la media per il periodo selezionato nell'angolo in alto a destra.
- Thresholds — parametro dei valori soglia, descrive la logica di applicazione del colore, cioè il colore scelto verrà applicato agli elementi nello schema in base ai dati della metrica. Nel mio esempio, per il valore della metrica "0" — stato "Ok" il colore sarà verde, per il valore ">1" lo stato sarà Critico e il colore sarà rosso.
- "Color/Tooltip Mappings" e "Label/Text Mappings" — scelta dell'elemento dello schema e dello scenario del suo comportamento. Nel primo scenario, l'oggetto sarà colorato, nel secondo — su di esso sarà presente del testo con i dati della metrica. Per selezionare un oggetto nello schema è necessario premere il simbolo della catena e cliccare con il mouse sullo schema.

In questo esempio, coloro la pompa e la sua freccia di rosso se è in funzione e di verde se non lo è.
Grazie al plugin flowcharting sono riuscito a disegnare lo schema dell'intera linea, in cui:
- cambia il colore degli aggregati in base al loro stato
- c'è un allarme per l'assenza di prodotto nei serbatoi
- si mostra l'impostazione delle frequenze dei motori
- velocità di riempimento/svuotamento del primo serbatoio
- si conta il numero di cicli di funzionamento della linea (impasti)

Visualizzazione del funzionamento della linea di produzione
Risultato
La parte più complessa per me è stata ottenere i dati dai controllori. Grazie alla versatilità di Zabbix nella raccolta dei dati e alla flessibilità di Grafana grazie ai plugin, sono stati necessari solo un paio di giorni per creare uno schermo di monitoraggio complesso della linea di produzione. La visualizzazione ha consentito la visualizzazione di grafici e statistiche di stato, oltre a un facile accesso via web per tutti gli interessati — tutto ciò ha permesso di individuare rapidamente i colli di bottiglia e l'uso inefficiente degli aggregati.
Conclusione
Mi è piaciuto molto il collegamento Zabbix+Grafana e consiglio di prestare attenzione a questo strumento, se hai bisogno di elaborare rapidamente dati da controller o sensori senza programmazione o l'implementazione di complessi prodotti commerciali. Certamente, non sostituirà i sistemi SCADA professionali, ma sarà sufficiente come strumento di monitoraggio centralizzato dell'intera produzione.
Fonte: habr.com
