Il relè passo-passo è un sistema bistabile ovvero con due posizioni (aperto e chiuso) stabili, ad ogni impulso di comando sull’ingresso Cmd il FB commuta l’uscita Out in una delle posizioni e vi rimane stabilmente fino al successivo impulso sull’ingresso. Il relè passo-passo è utilizzato al posto del deviatore o dell’invertitore elettrico negli impianti di illuminazione domestica permettendo di azionare un dispositivo da più punti di comando. Due ingressi ausiliari forzano lo stato dell’uscita, attivando l’ingresso On l’uscita si attiva, attivando l’ingresso Off l’uscita si disattiva.
Vista la semplicità di questo blocco funzione, al fondo dell’articolo ne riporto il codice sorgente, come esempio di come realizzare un proprio FB. Sarà possibile modificarlo nel caso si desideri aggiungere ulteriori funzionalità.
Per chi utilizza i nostri sistemi nella automazione domotica, troverà molto utile questo FB, collegando all’ingresso Cmd il pulsante di comando ed alla uscita Out la lampada potrà gestire l’accensione/spegnimento della illuminazione di una stanza. Alla gestione locale dell’illuminazione agendo sui comandi On e Off è possibile avere una gestione remota da pagina web utilizzando l’FB HTTPServer, da server cloud via REST utilizzando il FB RESTClient o via MQTT utilizzando il FB MQTTClient.
Descrizione
Cmd (BOOL) Comando relè passo-passo, ad ogni fronte di attivazione dell’ingresso l’uscita Out cambia il suo stato.
On (BOOL) Comando attivazione ucita, attivando l’ingresso l’uscita si attiva.
Off (BOOL) Comando disattivazione ucita, attivando l’ingresso l’uscita si disattiva.
Out (BOOL) Uscita relè passo-passo.

Esempi
Come utilizzare gli esempi.
Attivando da debug la variabile In, Out cambia di stato. Per comandare la variazione di stato di Out occorre disattivare e poi riattivare la variabile In.
LogicLab (Ptp114, ST_StepRelay)
PROGRAM ST_StepRelay
VAR
In : BOOL; (* Input command *)
Out : BYTE; (* Output status *)
SRelay : StepRelay; (* Step relay *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_StepRelay"
// *****************************************************************************
// This program shows the use of StepRelay function block.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// STEP RELAY
// -------------------------------------------------------------------------
SRelay(Cmd:=In); //Step relay
Out:=SRelay.Out; //Output status
// [End of file]
Codice sorgente FB StepRelay
LogicLab (Sorgente FB StepRelay)
FUNCTION_BLOCK StepRelay
VAR
Pls : BOOL; (* Pulse *)
END_VAR
VAR_INPUT
Cmd : BOOL; (* Command *)
On : BOOL; (* Force On *)
Off : BOOL; (* Force Off *)
END_VAR
VAR_OUTPUT
Out : BOOL; (* Output *)
END_VAR
// *****************************************************************************
// FUNCTION BLOCK "StepRelay"
// *****************************************************************************
// Questo blocco funzione gestisce un relè passo-passo per la gestione domotica.
//
// Definizione ingressi
// Cmd: Comando passo-passo uscita
// On: Comando forzatura On uscita
// Off: Comando forzatura Off uscita
//
// Definizione uscite
// Out: Uscita comando
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// GESTIONE RELE'
// -------------------------------------------------------------------------
// Gestione relè passo-passo.
IF (Cmd <> Pls) THEN
Pls:=Cmd; //Pulse
IF (Cmd) THEN Out:=NOT(Out); END_IF;
END_IF;
// Gestione ingressi forzatura stato.
IF (On) THEN Out:=TRUE; END_IF;
IF (Off) THEN Out:=FALSE; END_IF;
// [End of file]