Passa al contenuto principale

MBTHLThermostat, Setecna MB-THL Thermostat

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

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​

Immagine FB MBTHLThermostat

ParametroTipoDescrizione
EnableBOOLComando abilitazione gestione.
SpyOnBOOLSe attivo permette di spiare il funzionamento del FB (Vedi articolo).
MMdb@ModbusMaster_v3Indirizzo istanza ModbusMaster per gestione protocollo Modbus.
NodeUSINTNodo Modbus assegnato al dispositivo.
ShadowBOOLAttivazione modalità Shadow sul termostato. Se attivo i valori di temperatura ed umidità visualizzati sono quelli settati dai parametri DTRoom e DHRoom.
DHUmidityBOOLSe attivo viene visualizzato oltre alla temperatura anche il valore di umidità. I tasti [UP]-[DW] permettono di scambiare il valore visualizzato.
SPEditingBOOLSe 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.
WModeUSINTNon usato.
ABrightnessUSINTValore luminosità display (Range 0÷11). 0:Display spento.
SBrightnessUSINTValore luminosità display in stand-by (Range 0÷1). 0:Display spento.
DTRoomREALValore di temperatura visualizzato (°C) (Solo in modalità Shadow).
DHRoomREALValore di umidità visualizzato (%) (Solo in modalità Shadow).
LLimitREALLimite basso set point impostabile (°C) (Solo se attivo SPEditing).
ULimitREALLimite alto set point impostabile (°C) (Solo se attivo SPEditing).
TCalibrationREALValore di offset temperatura per calibrazione (°C).
HCalibrationREALValore di offset umidità per calibrazione (%).
DoneBOOLEsecuzione terminata, rimane attivo fino alla disabilitazione di Enable.
DReadyBOOLAttivo se dispositivo connesso.
OkBOOLAttivo per un loop su acquisizione dati.
FaultBOOLAttivo per un loop se errore di esecuzione.
ErrorsUDINTNumero errori di esecuzione.
SwVersionWORDVersione software del termostato.
ATRoomREALValore di temperatura acquisito (°C).
AHRoomREALValore di umidità acquisito (%).
TSPointREALValore 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

TriggerDescrizione
16#10000000Lg: 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]