Rete di Dispositivi

In questo tutorial vedremo come realizzare una piccola rete formata da quattro regolatori mPID2THR che si coordinano tra loro per eseguire una regolazione.

Tutti i regolatori DDC (e le relative espansioni) sono in grado di scambiarsi informazioni tra di loro utilizzando il protocollo Modbus. Il Modbus è un protocollo di comunicazione seriale creato da Modicon nel 1979 per mettere in comunicazione i propri controllori logici programmabili (PLC). È diventato uno standard de facto nella comunicazione di tipo industriale, ed attualmente è uno dei protocolli di connessione più diffusi al mondo.

All’interno di una rete Modbus tutti i dispositivi sono identificati tramite un indirizzo univoco, assegnato dall’utente che installa la rete, e vengono chiamati slave. Per coordinare e trasmettere le informazioni sulla rete è necessario che sia presente un dispositivo chiamato master che è l’unico abilitato a richiedere e trasmettere i dati alle schede slave. Il sistema che vogliamo realizzare è il seguente: un regolatore mPID2THR fungerà da master e sarà collegato alla sonda di temperatura esterna, ad un circolatore di zona, ad una valvola miscelatrice  e ad un deumidificatore mentre altre tre schede mPID2THR fungeranno da slave regolando unicamente la propria testina di zona.

rete-dispositivi-1

Il master ha le seguenti funzioni:

  • Regolare la temperatura di mandata in funzione della temperatura esterna
  • Chiudere o aprire la propria testina in funzione della temperatura e del setpoint
  • Spegnere il circolatore e chiudere la valvola quando tutte le zone sono soddisfatte
  • Accendere il deumidificatore se almeno una zona supera il setpoint preimpostato di umidità
  • Spegnere tutto il sistema se il suo pomello ritaratore viene spostato sul minimo
  • Impostare il funzionamento estivo o invernale in funzione dell’ingresso digitale I1: nel caso l’ingresso sia chiuso il sistema funzionerà in modalità estiva viceversa se aperto.

Gli slave, come detto, si limitano ad agire sulla propria testina in funzione della temperatura.

E’ importante sottolineare che in una rete di questo tipo le informazioni per passare da una scheda slave ad un’altra devono essere necessariamente lette dal master dalla scheda di origine e riscritte, sempre dal master, sulla scheda di destinazione.

Iniziamo dalle schede slave: apriamo Visiprog e creiamo un nuovo progetto chiamato Slave, scegliendo come tipo di scheda la mPID2 THR. Aggiungiamo il sottosistema principale e creiamo la logica in figura.rete-dispositivi-2

 

Come si vede il sistema regola l’apertura della testina sfruttando due blocchi di isteresi: uno utilizzato in logica estiva ed uno in logica invernale in funzione della costante “Estate” comandata da remoto. Un ulteriore costante “On” consente di comandare da remoto l’accensione o lo spegnimento della logica “intercettando” il segnale in uscita dal blocco isteresi.

A questo punto impostiamo la scala del blocco ritaratore per adattarlo all’utilizzo in ambiente domestico (valore minimo 5 e massimo 35) e colleghiamo gli ingressi e le uscite della logica che abbiamo realizzato  con gli elementi di campo. Infine apriamo le proprietà del blocco dipswitch e impostiamo la voce Rs485 Bits a 8 in modo tale da poter utilizzare il dipswitch sulla scheda per impostare l’indirizzo della stessa.

A questo punto il sistema finale sarà uguale a quello in figura.

rete-dispositivi-3

 

Salviamo il progetto, colleghiamo la prima scheda slave terminaleprogrammandola utilizzando Visiprog. A questo punto la programmazione della scheda è quasi completata: ricolleghiamoci alla scheda e, cliccando sull’icona del terminale, apriamo la finestra di impostazioni.

 

Ora, attraverso il bottone “Imposta Porte“, apriamo le opzioni della porta di comunicazione.

impostaporte

Ora nel riquadro RS1 impostiamo come protocollo MB Slave per impostare il protocollo Modbus Slave sulla scheda e lasciamo inalterati gli altri parametri, infine cliccate sul pulsante Change.

porte

Una volta cliccato sul pulsante Change Visiprog si disconnetterà dalla scheda  da questo momento non sarà più possibile connettersi alla scheda utilizzando Visiprog ma sarà necessario resettare la scheda per  riattivare il protocollo standard.

Passiamo ora a programmare il master. Come detto le comunicazioni tra le schede avvengono attraverso il protocollo Modbus e per fare questo è necessario conoscere:

  • L’identificativo dello slave su cui si vuole agire
  • L’indirizzo della variabile che si vuole modificare, chiamata anche registro della variabile o solo registro

Poichè i regolatori DDC sono liberamente programmabili non dispongono di una mappa registri preimpostata ma questi sono generati dinamicamente man mano che si costruisce la logica del programma; ciascun blocco logico, infatti, racchiude al suo interno uno o più indirizzi che consentono di leggere o variare le impostazioni del blocco da remoto. La mappa di ciascun blocco è differente e si può far riferimento al manuale di Visiprog per i dettagli. L’indirizzo base di un blocco logico è visualizzabile nella finestra delle proprietà del blocco stesso; ad esempio se clicchiamo sul blocco “TempHumi” dproprritaratoreel programma delle schede slave e apriamo la finestra delle proprietà vedremo che questa presenta un solo campo chiamato Address che corrisponde
proprio all’indirizzo base del blocco.

Per tutti i blocchi questo indirizzo è riservato e non interrogabile via Modbus ma è importante perchè tutti i registri del blocco vengono impostati a partire da questo indirizzo ed inzi
ando dalle uscite
; in questo caso, ad esempio, il registro 651 corrisponde all’uscita T (temperatura) del blocco mentre il registro 652 corrisponde all’uscita H (umidità). Attraverso questo meccanismo è possibile, dunque, leggere o scrivere i parametri dei singoli blocchi.

Per fare questo è possibile utilizzare due blocchi dedicati alle comunicazioni:

  • ModbusIN/ModbusOUT – Sono blocchi che consentono al master della rete di leggere (ModbusIN) o di scrivere (ModbusOUT) un singolo registro.
  • ModbusStation – E’ un blo9cco più complesso che consente in maniera compatta (e risparmiando preziosi blocchi di programma) di leggere o scrivere più indirizzi da uno stesso slave. Le ModbusStation richiedono, inoltre, di specificare il tipo di comando Modbus da utilizzare e quanti registri consecutivi leggere consentendo di interfacciare le schede Newtohm con dispositivi diversi dai regolatori DDC. Nel caso di interfacciamento con regolatori o espansioni Newtohm impostare sempre il numero di registri a 1 ed i tipi di funzioni come segue:
    • 03 – ReadHoldingRegister per leggere da un dispositivo
    • 06 – PresetHoldingRegister per scrivere su un dispositivo

E’ importante sottolineare come per le schede slave, una volta impostata la porta di comunicazione come Modbus Slave, non sia necessario apportare nessuna modifica particolare al programma poichè tutta la programmazione della parte di comunicazioni viene eseguita sul master.

Iniziamo quindi a programmare il master per consentirgli di eseguire la sua logica base.

Una volta creato il programma impostiamo i limiti del blocco ritaratore come segue:

  • Min: 4.5
  • Max: 35

In questo modo quando l’utente selezionerà il valore minimo attraverso il pomello possiamo imporre lo spegnimento del sistema utilizzando la logica seguente:

rete-dispositivi-4Se il setpoint impostato è minore maggiore o uguale a 5.0 il sistema sarà in ON altrimenti in OFF.

Per il controllo della testina inseriamo un nuovo sottosistema che chiameremo “Comando Testina” all’interno del quale ricostruiremo la stessa logica che abbiamo utilizzato negli slave.

In questo caso l’unica differenza è legata al fatto che i comandi On ed Estate non sono remoti ma locali.

rete-dispositivi-5

Passiamo al comando della valvola: il sistema dovrà regolare la temperatura di mandata dell’acqua seguendo una curva climatica in regime invernale e a punto fisso in regime estivo; in caso di spegnimento del sistema o di chiusura di tutte le testine anche la valvola si deve chiudere. Prepariamo quindi un sottosistema chiamato “Controllo Valvola” come in figura.

rete-dispositivi-6

Il sistema sfrutta il blocco curva climatica per calcolare il setpoint di mandata per il regime estivo mentre ha un blocco costante per impostare il setpoint di mandata estivo. Per la chiusura forzata della valvola viene effettuato l’AND logico tra due segnali: “ON” e “Richiesta termica” in questo modo se anche uno solo dei due è a zero l’uscita del blocco va a zero anch’essa e, attraverso la moltiplicazione, impone a zero il comando della valvola. Il blocco PID Limit si occupa di regolare l’apertura della valvola in funzione della temperatura di mandata e del setpoint.

Per la logica di deumidificazione vogliamo che il deumidificatore si accenda se almeno una zona supera il setpoint impostato e solamente in regime estivo per cui creiamo un sottosistema chiamato “Controllo Deumidificatore”. Al suo interno creeremo un blocco ModBusStation incaricato di leggere l’umidità dai singoli slave.

bdfbgjiodg

Tutti i regolatori DDC sono dotati di almeno una porta di tipo RS485 che consente sia di programmarli che di supervisionarli da remoto utilizzando Visiprog o il protocollo ModBus; questa porta può essere anche configurata tramite Visiprog per fare in modo che un dispositivo funga da master della rete ovvero che sia in grado di leggere delle informazioni da altri regolatori in rete ed eventualmente scriva .

 

VisiProg consente di programmare in modo del tutto intuitivo tutta la serie di centraline DDC e di condividere i programmi da una centralina all’altra in maniera del tutto trasparente. E’ fornito in due versioni per piattaforme a 32bit e 64bit.

VisiProg non necessita di installazione ma solo dell’ambiente di sviluppo Java che è di solito presente in tutti i PC recenti ma che, in ogni modo può essere scaricato dal seguente link: http.//www.java.com/it.

Una volta scaricato l’archivio .zip dal nostro sito è sufficiente posizionarlo nella cartella voluta e cliccare sul file con il tasto destro selezionando “Estrai tutto…” per fare in modo che Windows estragga i file dall’archivio.

NON E’ POSSIBILE LANCIARE VISIPROG SENZA AVERLO PRIMA ESTRATTO DALL’ARCHIVIO FORNITO

A questo punto nella cartella del programma avremo diversi file tra cui:

  • bat — usato per avviare l’applicazione lasciando visibile la console dei comandi
  • jar — usato per lanciare l’applicazione senza console dei comandi. Alcuni software di terze parti (ad esempio le suite per i telefoni Nokia) associano all’estensione .jar i propri file. Nel caso in cui non sia possibile avviare VisiProg utilizzando questo file usare il file VisiProg.bat
  • Il manuale di Visiprog in formato .pdf (leggibile utilizzando Adobe Acrobat Reader scaricabile dal seguente link: http://get.adobe.com/it/reader/)

Con doppio click su Visiprog.bat lanciamo l’applicazione e, dopo la finestra che ci annuncia la versione del programma, verrà visualizzata la finestra principale.

Attraverso il menu file è possibile creare un nuovo progetto attraverso la seguente finestra:

In questa finestra possiamo specificare il nome del progetto, la sua posizione e, infine, il tipo di scheda per cui creiamo il programma (nel nostro caso scegliamo mPID3DIN). A questo punto Visiprog creerà un nuovo layout comprendente tutti gli I/O della scheda.

L’interazione con Visiprog avviene nel seguente modo:

  • Tasto destro del mouse attiva un menu contestuale dipendente dall’oggetto su cui si clicca
  • Tasto sinistro del mouse per selezionare e spostare gli oggetti
  • Tasto Control (Ctrl) + tasto sinistro del mouse consente di collegare i blocchi funzionali del programma
  • Tasto centrale del mouse (di solito raggiungibile spingendo la rotella) per spostare la vista in orizzontale e/o verticale
  • Tasto Control (Ctrl) + rotella per eseguire lo zoom sul disegno

In VisiProg tutte le funzioni e gli elementi di ingresso/uscita sono espressi come blocchi funzionali. Ogni blocco funzionale è dotato di diversi ingressi ed uscite che consentono , una volta collegati, di implementare la logica voluta. All’interno del blocco sono indicati il tipo di blocco ed eventualmente i sotto argomenti opzionali del blocco stesso mentre la scritta “Comment” indica un campo che è liberamente modificabile dall’utente al fine di commentare correttamente il programma. Infine gli ingressi e le uscite possono visualizzare il valore che assumono durante il funzionamento del sistema una volta che si scarica il programma nella centralina e lo si avvia mentre in fase di creazione indicano (-100.0)

A questo punto l’ambiente è configurato per cui non ci resta che iniziare ad implementare le logiche di programma.

 

 

Nella schermata di I/O non è possibile inserire le logiche del programma per cui clicchiamo con il tasto destro sullo sfondo del progetto e scegliamo “Aggiungi…” e poi “Aggiungi Subsystem” per inserire il primo sottosistema che ci consentirà di inserire la logica vera e propria.

Nel livello principale è possibile inserire solo un sottosistema.

In questo tutorial supponiamo di avere un’Unita Trattamento Aria con singola batteria per il controllo di temperatura di un unico ambiente.

Apriamo il sottosistema con doppio click e inseriamo attraverso il tasto destro i seguenti blocchi:

  • Ingressi
    • lettura della temperatura di mandata e di ripresa
    • impostazione del setpoint
    • impostazione del funzionamento estivo/invernale
    • accensione/spegnimento
  • Uscite
    • Comando Ventilanti
    • Comando valvola analogica

Questi blocchi consentiranno di fornire i dati alla logica e di attuare le uscite per la regolazione della temperatura.

Attraverso un doppio click sulla dicitura “comment” sotto i blocchi è possibile inserire un commento che aiuti nella stesura del programma.

La logica che vogliamo implementare è la seguente: l’UTA deve accendersi manualmente su comando dell’utente e mantenere il setpoint impostato sia in funzionamento estivo che invernale. Il setpoint è impostabile da un minimo di 5°C ad un massimo di 30°C. La temperatura di mandata deve essere compresa tra 15°C e 35°C

Per fare questo inseriamo nel sottosistema principale un blocco PID limite e colleghiamo:

  • la temperatura di ripresa all’ingresso CTRL di controllo
  • la temperatura di mandata all’ingresso LM di limite
  • il setpoint all’ingresso di Setpoint
  • il comando estate inverno all’ingresso SUMMER

Quando l’utente spegne la macchina vogliamo anche chiudere la valvola della batteria per cui l’uscita del PID la mandiamo in ingresso ad un blocco di moltiplicazione insieme al comando di accensione: siccome il comando può valere 1 (macchina accesa) o 0 (macchina spenta) il comando che va verso a batteria viene azzerato nel momento in cui la macchina si spegne.

Ora programmiamo la visualizzazione con doppio click sul blocco “Display” della finestra principale.

Il blocco ha già alcuni ingressi ed uscite configurati che rispecchiano le icone che sono sempre presenti sul display ed è possibile aggiungere ulteriori voci. Nel nostro caso inseriamo una nuova riga nella tabella con i valori riportati in figura per indicare che vogliamo una variabile modificabile dall’utente che si chiami Setpoint e che sia impostabile da un valore minimo di 5.0 ad uno massimo di 30.0 con passi di 0.5.

Infine non resta che collegare gli elementi di campo per attuare la nostra logica.

L’ultimo passo è quello di collegare.