Home Soluzioni Comunicazione Modbus tra host e Smart Display con controllo di switch e indicatori

Comunicazione Modbus tra host e Smart Display con controllo di switch e indicatori

October 26,2023

Introduzione

Comunicazione Modbus tra host e Smart Display

Per facilitare l'utilizzo dei WINSTAR Smart Display e consentire agli sviluppatori di comprenderne più rapidamente il funzionamento, continuiamo a proporre progetti demo pratici dedicati a diversi scenari applicativi. In questo articolo presentiamo un ulteriore esempio basato su Modbus, pensato per illustrare in modo chiaro i principi di base sia a chi si avvicina per la prima volta a questa tecnologia sia agli sviluppatori con maggiore esperienza.

Modbus è un protocollo ampiamente utilizzato nell'automazione industriale per la comunicazione e il controllo di dispositivi e sensori. In questa applicazione, una scheda Arduino svolge la funzione di controller host per l'integrazione del sistema. Tramite Modbus, Arduino può interagire con diversi sensori e Toggle Button per controllare lo Smart Display, il Gauge, l'Indicator e i LED. La demo utilizza Arduino Mega 2560 con uno Shield RS485 per comunicare con lo Smart Display tramite Modbus.

Il programma mostra come leggere i valori dei sensori, cambiare le pagine visualizzate e controllare i LED in funzione dei valori rilevati, utilizzando i registri Modbus.

Schema a blocchi del sistema
Schema a blocchi del sistema

 

Per realizzare questa applicazione sono necessari i seguenti componenti:

  1. Smart Display da 7 pollici con Modbus
  2. Arduino Mega 2560
  3. Shield RS485 Modbus per Arduino Mega 2560
  4. Arduino IDE v2.0.4
  5. Dongle Modbus RS485
  6. Pulsante fisico
  7. Sensore a resistore variabile (Rotary Angle)
  8. LED
  9. GUI Builder v0.4.2 o versione successiva
 

La demo è suddivisa in tre fasi:

  1. Progettazione del progetto demo in GUI Builder.
  2. Build e caricamento del progetto.
  3. Programmazione dell'host Arduino.
 

Progettazione del progetto demo in GUI Builder

Per prima cosa, aprire una versione aggiornata di GUI Builder e creare un nuovo progetto. Inserire il nome del progetto e verificare la cartella di progetto, selezionata automaticamente per impostazione predefinita. Selezionare quindi il tipo di dispositivo; per questa applicazione viene utilizzato un dispositivo da 7 pollici. Impostare il protocollo di comunicazione e mantenere l'orientamento del display nella modalità Landscape predefinita. In UI Template selezionare Blank e infine fare clic sul pulsante Create per creare il nuovo progetto, come mostrato nella figura seguente.

Progettazione del progetto demo in GUI Builder - 1

 

Dopo la creazione del progetto viene visualizzata la seguente schermata.

Progettazione del progetto demo in GUI Builder - 2

 

Per realizzare lo scenario previsto dalla demo è necessario aggiungere una seconda pagina. Fare clic sul pulsante Page, quindi sul pulsante + per aggiungere la nuova pagina.

Progettazione del progetto demo in GUI Builder - 3

 

Nel pannello Resource è possibile selezionare uno sfondo personalizzato e impostare lo stile dello sfondo.

Progettazione del progetto demo in GUI Builder - 4

 

Lo stile dello sfondo può essere selezionato anche nella sezione Page.

Progettazione del progetto demo in GUI Builder - 5

 

Tornare quindi alla sezione Controls della prima pagina. In base allo scenario della demo, selezionare il Toggle Button e trascinarlo nell'area di layout della pagina. Procedere allo stesso modo per i widget Gauge e Indicator.

Progettazione del progetto demo in GUI Builder - 6

 

Build e caricamento del progetto

Dopo aver completato i passaggi precedenti, creando due pagine separate e posizionando i widget Toggle Button, Gauge e Indicator sulla prima pagina, è possibile procedere con la build del progetto. Accedere alla sezione Page Info, fare clic sul pulsante Device e selezionare Device Properties. Verificare l'impostazione Protocol, quindi selezionare la porta COM e impostare il baud rate. Fare clic sul pulsante "Connect to device" per stabilire la connessione con il dispositivo. Infine, come mostrato nella figura seguente, fare clic sul pulsante Upload per caricare il progetto e attendere il completamento dell'operazione.

Build e caricamento del progetto - 1

 

Al termine del caricamento del progetto, fare clic sul pulsante OK come mostrato nella figura seguente.

Build e caricamento del progetto - 2

 

Una volta completato il caricamento, viene visualizzata la schermata di avvio mostrata nella figura seguente.

Build e caricamento del progetto - 3

 

Dopo la schermata di avvio, il display passa alla prima pagina. A questo punto, la build e il caricamento del progetto tramite GUI Builder sono completati.

Build e caricamento del progetto - 4

 

Programmazione dell'host Arduino

Tutti gli indirizzi di registro necessari per questo esempio sono definiti nel programma Arduino IDE, come mostrato nella figura seguente. Il programma inizia definendo i pin del pulsante fisico, del sensore a resistore variabile e dei LED. Successivamente inizializza la comunicazione Modbus utilizzando la libreria ModbusMaster. Vengono quindi impostati gli indirizzi dei registri Modbus utilizzati per controllare la pagina visualizzata, l'Indicator, il Gauge e il Toggle Button.

Programmazione dell'host Arduino - 1

 

Per comprendere più nel dettaglio questo processo di comunicazione, consultare il log di comunicazione nella sezione Test Device o Simulator di GUI Builder, dove è possibile verificare come avviene la comunicazione Modbus RS485 tra il dispositivo host e lo Smart Display.

Nell'immagine seguente sono mostrati i dati del messaggio di log relativi al Toggle Button. Questi dati indicano come accedere ai dati del Toggle Button sullo Smart Display. Il secondo byte del Data Byte contiene il valore esadecimale 00 06, che rappresenta l'indirizzo del Toggle Button. Convertito in formato decimale, il valore corrisponde a 6. Questo indirizzo può essere utilizzato per scrivere o inserire dati nel Toggle Button. In questa applicazione, tuttavia, il Toggle Button viene utilizzato per leggere o acquisire dati dallo Smart Display. Per leggere i dati del Toggle Button viene utilizzato l'indirizzo di registro "7".

Programmazione dell'host Arduino - 2

 

Perché viene utilizzato l'indirizzo di registro "7" per ricevere i dati dal Toggle Button? Per maggiori dettagli sul processo di comunicazione, si consiglia di consultare il datasheet del Modbus Smart Display. Nell'immagine seguente è riportata una sezione del datasheet che mostra l'indirizzo utilizzato dal primo oggetto (widget), il Toggle Button.

Programmazione dell'host Arduino - 3

 

Nell'immagine seguente sono mostrati i dati del messaggio di log relativi al Gauge. Questi dati indicano come accedere all'indirizzo del Gauge. Il secondo byte del Data Byte contiene il valore esadecimale 00 6A, che rappresenta l'indirizzo del Gauge. Convertito in formato decimale, il valore corrisponde a 106. Questo indirizzo può essere utilizzato per scrivere o inserire dati nel widget Gauge.

Programmazione dell'host Arduino - 4

 

Nell'immagine seguente sono mostrati i dati del messaggio di log relativi all'Indicator. Questi dati indicano come accedere all'indirizzo dell'Indicator. Il secondo byte del Data Byte contiene il valore esadecimale 00 CE, che rappresenta l'indirizzo dell'Indicator. Convertito in formato decimale, il valore corrisponde a 206. Questo indirizzo può essere utilizzato per scrivere o inserire dati nel widget Indicator.

Programmazione dell'host Arduino - 5

 

La costante ADC_REF è impostata a 5 V e rappresenta la tensione di riferimento dell'ADC (convertitore analogico-digitale); viene utilizzata per regolare la sensibilità del pulsante fisico. La costante GROVE_VCC è impostata a 5 e rappresenta la tensione VCC dell'interfaccia Grove utilizzata nel circuito. La costante FULL_ANGLE è impostata a 300 e rappresenta il valore dell'angolo di rotazione completo utilizzato nel circuito. Come indicato nel commento del codice, questo valore è espresso in gradi.

Programmazione dell'host Arduino - 6

 

In questa sezione vengono definite le variabili necessarie, dichiarati i relativi tipi di dati e inizializzati i valori a zero.

Programmazione dell'host Arduino - 7

 

Vengono definite le modalità dei pin e le impostazioni per i componenti esterni, come il pulsante fisico e il LED. Viene inoltre impostato il baud rate per la comunicazione seriale, come mostrato nella figura seguente.

Programmazione dell'host Arduino - 8

 

La figura seguente mostra la definizione di "ChangePageFunction". Per la scrittura dei dati viene utilizzata la funzione "writeSingleRegister".

Programmazione dell'host Arduino - 9

 

La figura seguente mostra il funzionamento quando l'host Arduino rileva una variazione del valore del sensore a resistore variabile (Rotary Angle). Il valore viene inviato allo Smart Display tramite Modbus per aggiornare il valore del Gauge. Quando il valore del Gauge è inferiore a 120, il LED collegato al pin 13 rimane spento e l'Indicator è verde. Quando il valore del Gauge è uguale o superiore a 120, il LED si accende e l'Indicator diventa rosso.

Programmazione dell'host Arduino - 10

 

La figura seguente mostra il funzionamento quando l'host Arduino rileva una variazione dello stato del pulsante fisico. Il valore viene inviato allo Smart Display tramite Modbus per cambiare la pagina visualizzata.

Programmazione dell'host Arduino - 11

 

L'immagine seguente mostra come l'host Arduino riceve dallo Smart Display, tramite Modbus, la variazione del valore del Toggle Button e utilizza tale valore per accendere il LED collegato al pin 12.

Programmazione dell'host Arduino - 12

 

Questa è una sezione particolarmente importante. Per la comunicazione con lo Smart Display viene utilizzata la funzione "writeSingleRegister" per scrivere o inserire i dati, mentre la funzione "readHoldingRegisters" viene utilizzata per leggere o ricevere i dati dallo Smart Display. È inoltre importante prestare attenzione alla gestione del delay durante la comunicazione con widget attivi come il Gauge. Nel protocollo Modbus, dopo l'invio dei dati è necessario ricevere la relativa conferma prima di procedere con una nuova trasmissione. Per questo motivo, nella trasmissione e ricezione dei dati tramite Modbus è necessario prevedere un delay adeguato.

Programmazione dell'host Arduino - 13

 

Dopo aver verificato e caricato correttamente il programma tramite Arduino IDE, è possibile eseguire gli scenari previsti dalla demo. Quando il Toggle Button è nello stato OFF, anche il LED esterno collegato al pin 12 rimane spento. Quando il Toggle Button viene portato nello stato ON, il LED esterno si accende immediatamente, come mostrato nella figura seguente.

Programmazione dell'host Arduino - 14

 

Nello scenario della demo, il Gauge è controllato dal sensore a resistore variabile. Quando il valore del Gauge è compreso tra 0 e 120, l'Indicator viene visualizzato in verde e il LED collegato al pin 13 rimane spento. Quando il valore del Gauge supera 120, l'Indicator diventa rosso e il LED collegato al pin 13 si accende, come mostrato nella figura seguente.

Programmazione dell'host Arduino - 15

 

In questo scenario è possibile passare da una pagina all'altra utilizzando il pulsante fisico. Premendo il pulsante, il display passa alla seconda pagina; premendolo nuovamente, torna alla prima pagina, come mostrato nella figura seguente.

Programmazione dell'host Arduino - 16

 

A questo punto, il progetto demo sullo Smart Display da 7 pollici è completato. La demo utilizza diversi sensori e LED per cambiare le pagine visualizzate tramite un pulsante fisico e controllare il Gauge, gli Indicator e i LED esterni. Per scaricare il programma e consultare ulteriori informazioni sul progetto, fare riferimento al programma demo su GitHub.

Nota: per maggiori informazioni sul Modbus RS485 Shield utilizzato in questo progetto demo, consultare la documentazione del Modbus RS485 Shield. La configurazione hardware effettiva è mostrata nella figura seguente.

Programmazione dell'host Arduino - 17

 

Conclusione

Nel complesso, il programma rappresenta un esempio pratico di utilizzo di una scheda Arduino e del protocollo Modbus per il controllo di sensori e Indicator. Mostra come leggere i valori dei sensori tramite i registri Modbus, cambiare le pagine visualizzate e controllare i LED in base ai valori rilevati. Questo esempio può essere un utile riferimento sia per chi si avvicina per la prima volta al protocollo Modbus sia per gli sviluppatori più esperti che desiderano approfondirne l'impiego nel controllo degli Smart Display.

Qualche domanda sulle soluzioni di visualizzazione per la propria azienda? Contatti!

Iscrizione

Ricevere e-mail sugli aggiornamenti delle notizie da Winstar

Contatti

Prezzo/Scheda tecnica/Richiesta generale

Supporto tecnico

Si prega di contattarci per qualsiasi informazione tecnica

go top
Contatti
close

Valorizziamo la tua privacy

Facendo clic su "Consenti tutti i cookie", accetti la memorizzazione dei cookie sul tuo dispositivo per migliorare la navigazione del sito, analizzare l'utilizzo del sito e assistere nei nostri sforzi di marketing e prestazioni. Puoi trovare ulteriori informazioni su questo argomento nella nostra politica. Informativa sulla privacy

Valorizziamo la tua privacy

Winstar e alcune terze parti utilizzano i cookie su www.winstar.com.tw. I dettagli relativi ai tipi di cookie, al loro scopo e alle terze parti coinvolte sono descritti di seguito e nella nostra Informativa sui cookie. Fare clic su "Consenti tutti" per acconsentire all'uso dei cookie e ottenere la migliore esperienza possibile sui nostri siti web. Puoi anche impostare le tue preferenze o rifiutare i cookie (ad eccezione dei cookie strettamente necessari).

Gestisci le preferenze di consenso

Sempre attivo
Cookie essenziali

Questi cookie sono essenziali per permetterti di navigare nel sito web e utilizzare le sue funzionalità, come impostare le tue preferenze sulla privacy, effettuare il login o compilare moduli.

Cookie di analisi

Questi sono noti anche come "cookie statistici"; raccolgono informazioni su come utilizzi un sito web, come quali pagine hai visitato e quali link hai cliccato. Vedi dettagli.