Questa funzione trasferisce eseguendone lo swap il valore della variabile Destination nella variabile Source in base al tipo Type definito.
Gli indirizzi di Source e Destination possono coincidere rendendo possibile lo swap sul valore diretto di una variabile.
Funzione
CODESYS: Non disponibile
LogicLab: eLLabUtyLib
Type (VR_TYPE) Tipo di variabile, in base al tipo avremo:
VR_TYPE#BOOL_TYPE | Non viene eseguita alcuna conversione. Esempio: Source=TRUE, Destination=TRUE |
VR_TYPE#BYTE_TYPE VR_TYPE#SINT_TYPE VR_TYPE#USINT_TYPE |
Viene eseguito lo swap dei nibbles (4 bit). Esempio: Source=16#12, Destination=16#21 |
VR_TYPE#WORD_TYPE VR_TYPE#INT_TYPE VR_TYPE#UINT_TYPE |
Viene eseguito lo swap dei bytes. Esempio: Source=16#1234, Destination=16#3412 |
VR_TYPE#DWORD_TYPE VR_TYPE#DINT_TYPE VR_TYPE#UDINT_TYPE VR_TYPE#REAL_TYPE |
Viene eseguito lo swap delle words. Esempio: Source=16#12345678, Destination=16#56781234 |
Destination (@eVOID) Indirizzo variabile di destinazione.
Source (@eVOID) Indirizzo variabile sorgente.
La funzione ritorna una variabile BOOL con lo stato della conversione, FALSE: Errore tipo dati, TRUE: Swap eseguito.
Esempi
Come utilizzare gli esempi.
Nell'esempio sono eseguite alcune operazioni di swap su variabili.
LogicLab (Ptp114)
PROGRAM ST_VarSwap VAR i : BOOL; (* Auxiliary variable *) ByteData : ARRAY[ 0..1 ] OF BYTE; (* Byte data example *) WordData : ARRAY[ 0..2 ] OF WORD; (* Word data example *) DWordData : ARRAY[ 0..2 ] OF DWORD; (* DWord data example *) END_VAR // ***************************************************************************** // PROGRAM "ST_VarSwap" // ***************************************************************************** // This program shows the use of VarSwap function. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // SOME SWAPS // ------------------------------------------------------------------------- // Swap BYTE, Source:=16#12, Destination:=16#21. ByteData[0]:=16#12; //Byte data example i:=VarSwap(VR_TYPE#BYTE_TYPE, ADR(ByteData[1]), ADR(ByteData[0])); // Swap WORD, Source:=16#1234, Destination:=16#3412. WordData[0]:=16#1234; //Word data example i:=VarSwap(VR_TYPE#WORD_TYPE, ADR(WordData[1]), ADR(WordData[0])); // Swap LSB of WORD, Source:=16#3412, Destination:=16#3421. WordData[2]:=WordData[1]; i:=VarSwap(VR_TYPE#BYTE_TYPE, ADR(WordData[2]), ADR(WordData[1])); // Swap DWORD, Source:=16#12345678, Destination:=16#56781234. DWordData[0]:=16#12345678; //DWord data example i:=VarSwap(VR_TYPE#DWORD_TYPE, ADR(DWordData[1]), ADR(DWordData[0])); // Swap MSW of WORD, Source:=16#56781234, Destination:=16#78561234. DWordData[2]:=DWordData[1]; i:=VarSwap(VR_TYPE#WORD_TYPE, ADR(DWordData[2])+2, ADR(DWordData[1])+2); // [End of file]
Ultimo aggiornamento: 21 Luglio 2020