Il blocco funzione esegue gestione delle uscite digitali sul modulo indicato in Address in base al comando di Mode definito. Per gestire le uscite digitali presenti sul modulo CPU occorre definire Address:=255 e Mode:=DO_MODE#DO_8_LL.
Con la variabile Mask è possibile mascherare le uscite da gestire, il FB trasferirà sulla scheda in uscita solo i bits di Value in cui il relativo bit di Mask è settato. Per esempio con Value:=16#FFFFFFFF e Mask:=16#00000003 verranno attivate solo le uscite 0 e 1 del modulo. Questo permette:
- CODESYS: Di utilizzare il FB sulla stessa scheda in diversi POUs anche in tasks diverse.
- LogicLab: Di utilizzare il FB per gestire le schede di uscita che sono automaticamente gestite in immagine di processo.
Address (USINT) Occorre specificare l’indirizzo di modulo in cui gestire le uscite digitali (Range da 0 a 15). Il valore 0 indica il primo modulo di estensione, 1 il secondo e così di seguito. L’indirizzo 255 indica il modulo CPU.
Mode (DO_MODE) Occorre specificare il modo di gestione uscite digitali (Definizione).
Value (UDINT) Impostare il valore da trasferire sulle uscite digitali.
Mask (UDINT) Maschera uscite da gestire. Vengono gestiti solo i bit di Value corrispondenti al relativo bit di Mask settato.
Done (BOOL) Dato settato. Viene attivato per un loop al termine del settaggio delle uscite digitali.
Fault (BOOL) Errore. Viene attivato in caso di errore nella sequenza di settagg

Esempi
Come utilizzare gli esempi.
Viene trasferito nelle 8 uscite digitali basse (Da Out 0 a Out 7) del modulo di espansione con indirizzo 0 il valore in OutValue.
LogicLab (Ptp116, ST_SysSetPhrDO)
PROGRAM ST_SysSetPhrDO
VAR
OutValue : DWORD; (* Digital output value *)
DOut : SysSetPhrDO; (* Digital output management *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_SysSetPhrDO"
// *****************************************************************************
// This program manages digital outputs.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// DIGITAL OUTPUT MANAGEMENT
// -------------------------------------------------------------------------
// Manage digital outputs Out 0 to Out 7 on module with address 0.
DOut.Address:=0; //Module address
DOut.Mode:=DO_MODE#DO_8_LL; //Management mode
DOut.Value:=OutValue; //Digital ouput value
DOut.Mask:=16#000000FF; //Output mask
DOut(); //Digital output management
// [End of file]
CODESYS (Ptp161)
PROGRAM ST_SysSetPhrDO
VAR
OutValue : UDINT; //Digital output value
DOut : SysSetPhrDO; //Digital output management
END_VAR
// *****************************************************************************
// PROGRAM "ST_SysSetPhrDO"
// *****************************************************************************
// This program manages digital outputs.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// DIGITAL OUTPUT MANAGEMENT
// -------------------------------------------------------------------------
// Manage digital outputs Out 0 to Out 7 on module with address 0.
DOut.Address:=0; //Module address
DOut.Mode:=DO_MODE.DO_8_LL; //Management mode
DOut.Value:=OutValue; //Digital ouput value
DOut.Mask:=16#000000FF; //Output mask
DOut(); //Digital output management
// [End of file]