Questo blocco funzione da eseguire in task Back utilizzabile con modello a cascata, gestisce il termoigrometro MB-THL della Setecna tramite connessione seriale RS485 con protocollo Modbus (19200, n, 8, 1). Permette di essere utilizzato in cascata con altri FB della libreria, collegando il Done di una FB con Enable di quella successiva è possibile creare catene di FB che condividono la stessa connessione Modbus.
In MMdb occorre passare l’indirizzo del FB di gestione protocollo Modbus, in Node definire l’indirizzo di nodo assegnato al dispositivo. Se dispositivo connesso si attiva DReady ed in uscita si avranno i dati acquisiti.
Upgrade list
- Se l’oggetto aggiornato non è nell’ultima versione del package, vedi capitolo “Aggiornamento librerie” in questo articolo.
- Gli oggetti obsoleti sono inseriti nella libreria eLLabObsoleteLib fare riferimento al relativo manuale ed al manuale programmazione in formato pdf.
MBTHLThermostat_v1
Utilizza il nuovo blocco funzione ModbusMaster_v1, tutti gli altri parametri rimangono inalterati.
MBTHLThermostat_v2
Utilizza il nuovo blocco funzione ModbusMaster_v2, tutti gli altri parametri rimangono inalterati.
MBTHLThermostat_v3
Utilizza il nuovo blocco funzione ModbusMaster_v3. Aggiunto ingresso SpyOn per lo spionaggio.
Descrizione
Enable (BOOL) Comando abilitazione gestione.
SpyOn (BOOL) Se attivo permette di spiare il funzionamento del FB (Vedi articolo).
MMdb (@ModbusMaster_v3) Indirizzo istanza ModbusMaster per gestione protocollo Modbus.
Node (USINT) Nodo Modbus assegnato al dispositivo.
Shadow (BOOL) Attivazione modalità Shadow sul termostato. Se attivo i valori di temperatura ed umidità visualizzati sono quelli settati dai parametri DTRoom e DHRoom.
DHUmidity (BOOL) Se attivo viene visualizzato oltre alla temperatura anche il valore di umidità. I tasti [UP]-[DW] permettono di scambiare il valore visualizzato.
SPEditing (BOOL) Se attivo è possibile impostare il set point di temperatura. Tenendo premuto per più di 2 secondi il tasto [UP] viene visualizzato il valore di set point, modificabile con i tasti [UP]-[DW]. La variazione è possibile solo nel range impostato da LLimit e ULimit, terminata la variazione dopo un tempo il valore viene accettato.
WMode (USINT) Non usato.
ABrightness (USINT) Valore luminosità display (Range 0÷11). 0:Display spento.
SBrightness (USINT) Valore luminosità display in stand-by (Range 0÷1). 0:Display spento.
DTRoom (REAL) Valore di temperatura visualizzato (°C) (Solo in modalità Shadow).
DHRoom (REAL) Valore di umidità visualizzato (%) (Solo in modalità Shadow).
LLimit (REAL) Limite basso set point impostabile (°C) (Solo se attivo SPEditing).
ULimit (REAL) Limite alto set point impostabile (°C) (Solo se attivo SPEditing).
TCalibration (REAL) Valore di offset temperatura per calibrazione (°C).
HCalibration (REAL) Valore di offset umidità per calibrazione (%).
Done (BOOL) Esecuzione terminata, rimane attivo fino alla disabilitazione di Enable.
DReady (BOOL) Attivo se dispositivo connesso.
Ok (BOOL) Attivo per un loop su acquisizione dati.
Fault (BOOL) Attivo per un loop se errore di esecuzione.
Errors (UDINT) Numero errori di esecuzione.
SwVersion (WORD) Versione software del termostato.
ATRoom (REAL) Valore di temperatura acquisito (°C).
AHRoom (REAL) Valore di umidità acquisito (%).
TSPoint (REAL) Valore di set point impostato (°C) (Solo se attivo SPEditing).

Impostazione nodo Modbus
Alla accensione il termostato visualizza per alcuni secondi il nodo Modbus attualmente impostato (Sul display compare ad esempio ID 004). Per impostare un nuovo nodo Modbus occorre agire sui tasti secondo la sequenza (La comunicazione Modbus non deve essere attiva):
- 3 volte sul tasto [UP]
- 2 volte sul tasto [DW]
- 1 volta sul tasto [UP]
- 1 volta sul tasto [DW]
- 1 volta sul tasto [UP]
Se la sequenza è corretta compare il nodo Modbus attualmente impostato (Sul display compare ad esempio ID 004). Se non compare per resettare la sequenza occorre agire 4 volte sul tasto [DW].
Per impostare il nuovo valore agire sui tasti [UP]-[DW]. Terminata l’impostazione dopo alcuni secondi il valore viene accettato.
Trigger di spy
Se SpyOn attivo è possibile utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.
Livelli di trigger
Trigger | Descrizione |
---|---|
16#10000000 | Lg: Log esecuzione. |
Esempi
Come utilizzare gli esempi.
Sono gestiti più termometri MB-THL connessi in Modbus. I vari FB sono eseguiti in cascata, in questo modo terminata l’esecuzione del primo, viene eseguito il successivo e così di seguito fino all’ultimo che disabilita il primo facendo ripartire la sequenza.
LogicLab (Ptp141, ST_MBTHLThermostat)
PROGRAM ST_MBTHLThermostat
VAR
i : UDINT; (* Auxiliary variable *)
Sp : SysSerialPort; (* Serial port management *)
MMdb : ModbusMaster_v3; (* Modbus master *)
THL : ARRAY[0..2] OF MBTHLThermostat_v3; (* Thermostat management *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_MBTHLThermostat"
// *****************************************************************************
// This program manages 3 MB-THL thermostats.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// Program initializations.
IF (SysFirstLoop) THEN
// Serial port settings.
Sp.COM:=ADR('COM2'); //COM port definition
Sp.Baudrate:=19200; //Baudrate
Sp.Parity:='N'; //Parity
Sp.DataBits:=8; //Data bits
Sp.StopBits:=1; //Stop bits
Sp.DTRManagement:=DTR_AUTO_WO_TIMES; //DTR management
Sp.DTRComplement:=FALSE; //DTR complement
Sp.EchoFlush:=FALSE; //Received echo flush
Sp.DTROnTime:=0; //DTR On time delay (mS)
Sp.DTROffTime:=0; //DTR Off time delay (mS)
Sp.FlushTm:=0; //Flush time (mS)
Sp.RxSize:=0; //Rx buffer size
Sp.TxSize:=0; //Tx buffer size
// Modbus master settings.
MMdb.Type:=MODBUS_PROTOCOL#MDB_RTU; //Modbus protocol type
MMdb.Timeout:=T#1s; //Timeout time
MMdb.Delay:=T#100ms; //Delay time
// THL parameters settings.
THL[0].Node:=1; //Modbus node
THL[0].MMdb:=ADR(MMdb); //ModbusMaster pointer
THL[0].ABrightness:=11; //Active mode brightness
THL[0].SBrightness:=1; //Standby mode brightness
THL[1].Node:=1; //Modbus node
THL[1].MMdb:=ADR(MMdb); //ModbusMaster pointer
THL[1].ABrightness:=11; //Active mode brightness
THL[1].SBrightness:=1; //Standby mode brightness
THL[2].Node:=1; //Modbus node
THL[2].MMdb:=ADR(MMdb); //ModbusMaster pointer
THL[2].ABrightness:=11; //Active mode brightness
THL[2].SBrightness:=1; //Standby mode brightness
END_IF;
// -------------------------------------------------------------------------
// THERMOSTATS MANAGEMENT
// -------------------------------------------------------------------------
// Manage the Modbus communication.
Sp(Open:=TRUE); //Serial port management
MMdb.File:=Sp.File; //File pointer
MMdb(); //Modbus master
// Manage the thermostats.
THL[0].Enable:=NOT(THL[2].Done); //FB enable
THL[1].Enable:=THL[0].Done; //FB enable
THL[2].Enable:=THL[1].Done; //FB enable
FOR i:=0 TO 2 DO THL[i](); END_FOR;
// [End of file]