TERMOREGOLAZIONE - SETPOINT CON ISTERESI - TERMOREGOLAZIONE - Domotica KNX MyHOME Modbus e soluzioni IOT


TERMOREGOLAZIONE - SETPOINT CON ISTERESI

Questo tutorial illustra come creare un setpoint in IKON SERVER con isteresi, permettendo di effettuare il tipico confronto base tra un valore (es: temperatura) ed un setpoint impostabile dall'utente. Questo esempio permette di impostare due differenti valori di isteresi rispettivamente "sopra" e "sotto" il setpoint.

 

CREAZIONE DELLO SCRIPT

Il primo passo consiste nel creare uno SCRIPT, procedendo come segue:

A questo punto, cancellare il contenuto dello SCRIPT ed inserire il codice seguente:

 

/*
Questo script esegue un confronto tra un valore in ingresso ("valore")
 ed un setpoint ("setpoint") utilizzando due oggetti in ingresso come isteresi.

Se non sono forniti oggetti di isteresi in ingresso, viene considerata una isteresi di 0.5.
*/

include_library("surrounding");

//Raccolta valore temperatura
$temperatura = $me->getParentByIdentifier("temperatura");
if($temperatura != null){
   $temperatura_value = floatval($temperatura->value);
} else {
   debug("Temperatura non collegata in ingresso; impossibile eseguire lo script");
   output("");
}

//Raccolta valore setpoint
$setpoint = $me->getParentByIdentifier("setpoint");
if($setpoint != null){
   $setpoint_value = floatval($setpoint->value);
} else {
   debug("Setpont non collegato in ingresso; impossibile eseguire lo script");
   output("");
}

$isteresi_up = $me->getParentByIdentifier("isteresi_up");
if($isteresi_up != null){
   $isteresi_up_value = floatval($isteresi_up->value);
} else {
   $isteresi_up_value = 0.5;
}
$isteresi_down = $me->getParentByIdentifier("isteresi_down");
if($isteresi_down != null){
   $isteresi_down_value = floatval($isteresi_down->value);
} else {
   $isteresi_down_value = 0.5;
}

$valvola = $me->getChildByIdentifier("valvola");
if($valvola != null){
   $valvola_value = intval($valvola->value);
} else {
   debug("Valvola non collegata in uscita; impossibile eseguire lo script");
   output("");
}

if( $temperatura_value > ($setpoint_value + $isteresi_up_value )){
   if($valvola_value==1){
      debug("Superato setpoint + $isteresi_up_value, chiusura valvola");
      $valvola->set(0);
   } else {
      debug("Superato setpoint + $isteresi_up_value, valvola già chiusa");
   }
} elseif ( $temperatura_value < ($setpoint_value - $isteresi_down_value )){
   if($valvola_value==0){
      debug("Superato setpoint - $isteresi_down_value, apertura valvola");
      $valvola->set(1);
   } else {
      debug("Superato setpoint - $isteresi_down_value, valvola già aperta");
   }
} else {
   debug("Valore nel range di isteresi, valvola non comandata");
}

output("");

Personalizzare eventualmente il valore dell'isteresi in caso di assenza dei corrispondenti oggetti di ingresso (nell'esempio impostata a 0.5 gradi) e salvare mediante l'apposito pulsante SALVA.

 

CREAZIONE DELLO SCRIPT RUNNER

Per ogni soglia stagionale che si desidera creare è necessario configurare un nuovo SCRIPT RUNNER nel seguente modo:

A questo punto inserire nella sezione "DATI GENERALI" un nome identificativo per il nuovo oggetto, e selezionare lo SCRIPT creato in precedenza nell'omonimo menu a tendina; lasciare inalterate le altre opzioni della sezione "ASPETTO".

Nella sezione "INGRESSI" trascinare i seguenti oggetti (che devono essere già presenti nel progetto, eventualmente sotto forma di VARIABILI se non disponibili direttamente nel progetto KNX):

Per ognuno specificare "$VAL" come VALORE.

Nella sezione USCITE trascinare viceversa l'oggetto da comandare, specificando anche in questo caso "$VAL" come VALORE e "valvola" come IDENTIFICATIVO. Al termine, premere il pulsante AGGIORNA.

 

A questo punto, è possibile simulare il funzionamento della condizione nella parte DEBUG: cambiare i valori di temperatura, setpoint e isteresi e verificare che la valvola venga impostata correttamente; lo SCRIPT mostra nella finestra DEBUG una serie di informazioni che illustrano la logica eseguita.

 

Se il funzionamento è corretto, non sono necessarie ulteriori operazioni; configurare altri RUNNER se la medesima funzione deve essere duplicata su più temperature e relativi setpoint, associando gli oggetti relativi e configurandoli nello stesso modo.