PYTHON MODBUS SERVER:
ESEMPIO CON ACCESSO DA PANNELLO HMI WEINTEK

Python modbus server

Bentornato (o benvenuto se per te è la prima volta), sul mio sito dedicato all’automazione industriale. Ci troviamo nella sezione dedicata ai Soft PLC, e oggi ti mostro come si può utilizzare il linguaggio Python, per costruire un server modbus, che permette ai vari clients di leggere e scrivere dati al suo interno.

Novità automazione e plc

In molti conoscono le potenzialità e la versatilità del linguaggio di programmazione per computer Python, in pochi sanno però che esso possiede delle librerie molto utili per chi opera nel settore dell’automazione industriale.

Nel video di oggi, vediamo come possiamo sfruttare il modulo server della libreria PyModbusTCP, per far diventare Python un server modbus.

Nell’esempio utilizziamo anche un pannello HMI Weintek per accedere al server modbus Python, e poter visualizzare e scrivere i dati.

A cosa serve avere un server modbus? Come abbiamo visto in un altro tutorial, possiamo con Python programmare un Soft PLC, in grado di gestire logiche di processo per automazione; bene, il server modbus permetterà al sistema di monitoraggio e controllo di scambiare i dati con questo plc software.

Nell’immagine quì sotto vediamo la creazione dell’istanza del server modbus, dove specifichiamo come indirizzo del server l’IP del computer locale (quello su cui il programma Python viene eseguito).

Come porta abbiamo scelto la 12345, questo valore può essere scelto a piacimento, e andrà poi specificato quando sui client si crea la connessione al server.

Inizializzazione del modulo server in Python

Nella prossima immagine vediamo la parte di caricamento degli ingressi digitali, la quale sfrutta la classe del modulo client della libreria PyModbusTCP; in particolare la classe read_discrete_inputs, dove specifichiamo l’indirizzo di partenza di lettura, e il numero di ingressi digitali da leggere.

Notiamo che i dati letti vengono caricati in una lista chiama id (ingressi digitali); la stessa lista viene poi utilizzata nella parte di gestione logica del PLC.

Chiamata della classe per leggere gli ingressi digitali digitali dal modulo modbus

Nella prossima figura troviamo la gestione logica di un’uscita digitale, questa viene attivata quando due ingressi del PLC sono attivi.

Per mettere a disposizione i dati sul server modbus è necessario caricarli nel data bank con le apposite istruzioni; nell’esempio sotto vediamo la data_bank.set_coils, che permette di caricare la lista delle uscite digitali.

I clients modbus vanno a leggere i dati nel data bank del server Python, facendo riferimento all’indirizzo corrispondente (nell’esempio 10).

Come vediamo in basso nell’immagine, le stesse bobine vengono lette dalla banca dati per essere visualizzate; in questo modo ci assicuriamo della riuscita del caricamento dei dati nella banca dati stessa.

Gestione logica plc in Python
Oltre a gestire ingressi e uscite digitali, in questo server modbus abbiamo scritto dei valori nelle uscite analogiche; in particolare abbiamo moltiplicato il valore dell’ingresso analogico 2 (indice 1) per 1.1, 1.2 e così via, scrivendo il risultato nelle 4 uscite analogiche.
Anche questi dati vengono caricati nella banca dati del server, e messi quindi a disposizione dei client modbus.
Scrittura dei valori delle uscite analogiche nel data bank del server modbus
Nell’ultima immagine di oggi troviamo la schermata di monitoraggio delle apparecchiature modbus, creata su un pannello HMI Weintek.
Con questo sinottico monitoriamo gli ingressi e le uscite in campo, sia digitali che analogici.
Schermata del pannello hmi Weintek con il monitoraggio dei dati del server modbus python

Copyright(C) automazione-plc.it
P. IVA: 11676200964
Sito di informazione e didattica sull'automazione industriale, il mondo dei PLC e dei sistemi di supervisione.
Programmazione PLC.
Programmazione SCADA e HMI.
Apparecchiature e hardware industriale.
Strumentazione da campo.
Policy sulla Privacy e utilizzo dei Cookies