Această funcție copiază zona de memorie definită în Src în zona de memorie definită în Dest pentru dimensiunea definită în Size. Cele două zone de memorie se pot suprapune, de asemenea.
Funcția garantează atomicitatea transferului, deci zona de memorie definită în Dest are întotdeauna o valoare consistentă chiar dacă este scrisă de o sarcină și folosită de o altă sarcină. Trebuie folosit pentru a trece variabile mai mari de 4 octeți a pentru șiruri de caractere de la o sarcină la alta cu prioritate de execuție mai mare.
funzione
CODESYS: eCDSXUnified12Lib
LogicLab: eLLabXUnified12Lib
Descriere
Dest (PVOID) Adresa zonei de memorie de destinație.
Src (PVOID) Adresa zonei de memorie sursă.
Size (UDINT) Dimensiunea zonei de memorie de transferat.
Funcția returnează o variabilă (PVOID) cu adresa zonei de memorie de destinație. În cazul unei erori, e returnatNULL.
Exemple
Cum se utilizează exemplele.
Setarea variabilei de la debug CMove, memorie Source va fi transferat la Destination.
LogicLab (Ptp116)
PROGRAM ST_Sysmemmove
VAR
i : UDINT; (* Auxiliary variable *)
CMove : BOOL; (* Move command *)
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 (CMove) THEN
CMove:=FALSE; //Move command
i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
END_IF;
// [End of file]
CODESYS (Ptp161)
PROGRAM ST_Sysmemmove
VAR
i : UDINT; //Auxiliary variable
CMove : BOOL; //Move command
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 (CMove ) THEN
CMove :=FALSE; //Move command
i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
END_IF;
// [End of file]