F6_DGT

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.

Parametri

Ingresso

s (WORD, INT, UINT)

Area a 16 bit di origine

n (WORD, INT, UINT)

Specifica la posizione della cifra esadecimale sorgente e di destinazione e il numero di cifre esadecimali

Uscita

d (WORD, INT, UINT)

Area a 16 bit di destinazione

Note

  • 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:

    1. Dato a 16 bit

    2. bit

    3. 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:

    1.  (1) Destinazione: Posizione cifra esadecimale iniziale

      0 Cifra esadecimale 0

      1 Cifra esadecimale 1

      2 Cifra esadecimale 2

      3 Cifra esadecimale 3

    2.  (2) Numero di cifre esadecimali da copiare

      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)

    3.  (3) Origine: Posizione cifra esadecimale iniziale

      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.

Esempio

Intestazione del POU

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

Corpo del POU

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.

Corpo LD

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

Corpo ST

IF start then
    F6_DGT( s:= source,
         n:= specify_n,
         d=> output);
END_IF;

Corpo IL

L'ultima revisione: 2023-05-19Feedback su questa paginaPanasonic hotline