Questa funzione copia l'area di memoria definita in Src nell'area di memoria definita in Dest per la dimensione definita in Size. Le due aree di memoria possono anche sovrapporsi.

La funzione garantisce l'atomicità del trasferimento, quindi l'area di memoria definita in Dest ha sempre valore coerente anche se scritta da una task ed utilizzata da un'altra task. Deve essere utilizzata per passare variabili di dimensione superiore ai 4 bytes a per le stringhe da una task verso un'altra task a priorità di esecuzione superiore.

Function
CODESYS: Non disponibile
LogicLab: eLLabXUnified12Lib

Dest (@eVOID) Indirizzo dell'area di memoria di destinazione.

Src (@eVOID) Indirizzo dell'area di memoria di origine.

Size (UDINT) Dimensione area di memoria da trasferire.

La funzione ritorna una variabile (@eVOID) con l'indirizzo dell'area di memoria di destinazione. In caso di errore viene ritornato eNULL.

Errori

In caso di errore la funzione ritorna eNULL, eseguendo immediatamente dopo la funzione SysGetLastError, è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.
Settando da debug la variabile Move, la memoria Source sarà traferita in Destination.

LogicLab (Ptp116)
PROGRAM ST_Sysmemmove
VAR
    Move : BOOL; (* Move command *)
    i : UDINT; (* Auxiliary variable *)
    Source : ARRAY[ 0..15 ] OF BYTE; (* Source memory *)
    Destination : STRING[ 32 ]; (* Destination memory *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_Sysmemmove"
// *****************************************************************************
// By setting the "Move" command the memory is moved
// -----------------------------------------------------------------------------

    IF (Move) THEN
        Move:=FALSE; //Move command
        i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
    END_IF;

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 24 Settembre 2020