Spostare cifre di un dato
Le cifre esadecimali nel dato a 16 bit o nella costante equivalente a 16 bit specificati da s vengono copiate nell'area a 16 bit specificata da d come specificato da n.
Ingresso
Area a 16 bit di origine
Specifica la posizione della cifra esadecimale sorgente e di destinazione e il numero di cifre esadecimali
Uscita
Area a 16 bit di destinazione
Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_MOVE_DIGITS
Le cifre sono unità di 4 bit utilizzate durante la gestione dei dati. Con questa istruzione, il dato a 16 bit viene separato in quattro cifre. Le cifre vengono chiamate in ordine cifra esadecimale 0, cifra 1, cifra 2 e cifra 3, partendo dai quattro bit meno significativi:
Dato a 16 bit
bit
cifra esadec.
n specifica la (3) posizione della cifra esadecimale sorgente, il (2) numero di cifre e la (1) posizione della cifra esadecimale di destinazione da copiare utilizzando i dati esadecimali così come segue:
0 Cifra esadecimale 0
1 Cifra esadecimale 1
2 Cifra esadecimale 2
3 Cifra esadecimale 3
0 Copia 1 cifra esadecimale (4 bit)
1 Copia 2 cifre esadecimali (8 bit)
2 Copia 3 cifre esadecimali (12 bit)
3 Copia 4 cifre esadecimali (16 bit)
0 Cifra esadecimale 0
1 Cifra esadecimale 1
2 Cifra esadecimale 2
3 Cifra esadecimale 3
Di seguito vengono indicati alcuni criteri di trasferimento di cifre basati sulla specificazione di n.
Specificate n: 16#101 quando la cifra esadecimale 1 della sorgente viene copiata nella cifra esadecimale 1 della destinazione.
Specificate n: 16#003 (formato breve: 16#3) quando la cifra esadecimale 3 della sorgente viene copiata nella cifra esadecimale 0 della destinazione.
Specificate n: 16#212 quando più cifre esadecimali (cifre esadecimali 2 e 3) della sorgente vengono copiate in più cifre esadecimali (cifre esadecimali 2 e 3) della destinazione.
Specificate n: 16#210 quando più cifre esadecimali (cifre esadecimali 2 e 3) della sorgente vengono copiate in più cifre esadecimali (cifre esadecimali 2 e 3) della destinazione.
Specificate n: 16#130 quando 4 cifre esadecimali (cifre esadecimali da 0 a 3) della sorgente vengono copiate in 4 cifre esadecimali (cifre esadecimali da 0 a 3) della destinazione.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
start: BOOL:=FALSE;
source: INT:=329;
(*decimal 329 = 16#149*)
specify_n: WORD:=16#111;
(*Beginning from the end:
1: first hex. digit is digit 1, i.e. 4
1: copies 2 hex. digits, i.e. 14
1: destination is hex. digit 1*)
output: INT:=0;
(*16#140 = decimal 320*)
END_VAR
Quando la variabile start è impostata su TRUE, la funzione viene eseguita. I valori per source e output nel Monitoraggio intestazione del corpo del diagramma contatti sono stati impostati per mostrare il valore esadecimale attivando il pulsante Hex nella barra strumenti.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F6_DGT!,Instance,12,0,18,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_VARIN,,source,8,2,10,4,);
B(B_VARIN,,specify_n,8,3,10,5,);
B(B_VAROUT,,output,18,2,20,4,);
B(B_CONTACT,,start,6,1,8,3,);
L(10,3,12,3);
L(10,4,12,4);
L(8,2,12,2);
L(1,2,6,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F6_DGT( s:= source,
n:= specify_n,
d=> output);
END_IF;