La funzione ritorna un numero random compreso tra 0.0 e 1.0. E' possibile definire impostando lo stato del parametro Cmd se si vuole avere un nuovo numero random (Cmd:=TRUE) oppure quello memorizzato con la precedente esecuzione della funzione (Cmd:=FALSE).

Function
CODESYS: eCDSS8CoreMng
LogicLab: eLLabS8CoreMng, eLLabXUnified12Lib

Cmd (BOOL) Indica il valore random che deve essere ritornato. Se TRUE viene salvato e ritornato un nuovo valore random. Se FALSE viene ritornato il valore random salvato dalla precedente chiamata alla funzione con Cmd:=TRUE.

La funzione ritorna una variabile (REAL) con un valore random compreso tra 0.0 e 1.0.

Esempi

Come utilizzare gli esempi.
Nel seguente esempio viene eseguito il lampeggio di una uscita logica con un tempo random compreso tra 1 e 3 secondi.

LogicLab (Ptp116)
VAR
    TimeBf : UDINT; (* Time buffer (uS) *)
    BTime : REAL; (* Blink time (S) *)
    DOut : SysSetPhrDO; (* Manage digital outputs *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysGetRandom"
// *****************************************************************************
// This program blinks an output with a random time, time in the range from 1
// to 3 sec.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // PROGRAM INIT
    // -------------------------------------------------------------------------
    // Program init.

    IF (SysFirstLoop) THEN
        TimeBf:=SysGetSysTime(TRUE); //Time buffer (uS)
        BTime:=1.0+(SysGetRandom(TRUE)*2.0); //Blink time (S)

        DOut.Address:=0; //Mdule address
    	DOut.Mode:=DO_MODE#DO_8_LL; //Management mode
    	DOut.Mask:=16#00000001; //Output mask
    END_IF;

    // -------------------------------------------------------------------------
    // BLINKING
    // -------------------------------------------------------------------------
    // Blinks the output.

    IF ((SysGetSysTime(TRUE)-TimeBf) > TO_UDINT(BTime*1000000.0)) THEN
        TimeBf:=SysGetSysTime(TRUE); //Time buffer (uS)
        BTime:=1.0+(SysGetRandom(TRUE)*2.0); //Blink time (S)
        DOut.Value:=DOut.Value XOR 16#00000001;
        DOut(); //Manage digital outputs
    END_IF;
    
// [End of file]
CODESYS (Ptp163)
LogicLab (Ptp164)

Ti รจ stato utile questo articolo ?

Ultimo aggiornamento: 31 Luglio 2019