In questo tutorial vedremo come realizzare una piccola

Transcript

In questo tutorial vedremo come realizzare una piccola
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.
Testina
Bus
ID = 1
Circola
tore
T Mandata
Testina
Temp
Esterna
Valvola
ID =2
Deumidific
atore
Testina
Testina
ID = 3
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.
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.
Salviamo il progetto, colleghiamo la prima scheda slave programmandola 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.
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.
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" del 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 inziando 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:
o 03 - ReadHoldingRegister per leggere da un dispositivo
o 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:
Se 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.
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 devechiudere. Prepariamo quindi un
sottosistema chiamato "Controllo Valvola" come in figura.
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.
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:



Visiprog.bat -- usato per avviare l'applicazione lasciando visibile la console dei comandi
VisiProg.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
o lettura della temperatura di mandata e di ripresa
o impostazione del setpoint
o impostazione del funzionamento estivo/invernale
o accensione/spegnimento
Uscite
o Comando Ventilanti
o 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