F6_DGT

Nibble-Transfer

Die Nibbles des Speicherregisters oder der Speicherkonstante s werden, wie im Speicherregister n festgelegt, in das Speicherregister d transferiert.

Parameter

Eingang

s (WORD, INT, UINT)

16-Bit-Quellregister

n (WORD, INT, UINT)

Legt die Nibble-Ausgangs- und die -Zielposition sowie die Anzahl der Nibbles fest.

Ausgang

d (WORD, INT, UINT)

16-Bit-Zielregister

Anmerkungen

  • Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_MOVE_DIGITS

  • Nibbles sind Einheiten von 4 Bits, die zum Datentransfer verwendet werden. Mit diesem Befehl werden 16-Bit-Daten in 4 Nibbles aufgeteilt. Die Nibbles werden der Reihe nach Nibble 0, Nibble 1, Nibble 2 und Nibble 3 benannt, angefangen von den vier niedrigsten signifikanten Bits:

    1. 16-Bit-Daten

    2. bit

    3. Nibble

  • n legt die (3) Ausgangsposition der Nibbles, die (2) Anzahl der Nibbles und die (1) Zielposition der zu kopierenden Nibbles wie folgt fest:

    1.  (1) Ziel: Ausgangsposition des Nibbles

      0 Nibble 0

      1 Nibble 1

      2 Nibble 2

      3 Nibble 3

    2.  (2) Anzahl der Nibbles, die kopiert werden sollen

      0 Kopiert 1 Nibble (4 Bits)

      1 Kopiert 2 Nibbles (8 Bits)

      2 Kopiert 3 Nibbles (12 Bits)

      3 Kopiert 4 Nibbles (16 Bits)

    3.  (3) Quelle: Ausgangsposition des Nibbles

      0 Nibble 0

      1 Nibble 1

      2 Nibble 2

      3 Nibble 3

    Nachstehend einige Beispiele für den Digit-Transfer mit unterschiedlichen Eingaben bei n.

    • n: 16#101 kopiert Nibble 1 der Quelle in Nibble 1 des Ziels.

    • n: 16#003 (Kurzform: 16#3) kopiert Nibble 3 der Quelle in Nibble 0 des Ziels.

    • n: 16#212 kopiert mehrere Nibbles (Nibble 2 und Nibble 3) der Quelle in mehrere Nibbles (Nibble 2 und Nibble 3) des Ziels.

    • n: 16#210 kopiert mehrere Nibbles (Nibble 0 und Nibble 1) der Quelle in mehrere Nibbles (Nibble 2 und Nibble 3) des Ziels.

    • n: 16#130 kopiert 4 Nibbles (Nibbles 0 bis 3) der Quelle in 4 Nibbles (Nibbles 0 bis 3) des Ziels.

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	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

POE-Rumpf

Wenn die Variable start auf TRUE gesetzt wird, wird die Funktion ausgeführt. Die Werte für source und output in dem “POE-&Kopf-Monitor” des Kontaktplanrumpfes müssen eingestellt werden, damit der Hexadezimalwert durch Aktivieren des “Hex”-Symbols in der Werkzeugleiste angezeigt werden kann.

KOP-Rumpf

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

ST-Rumpf

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

AWL-Rumpf

Letzte Änderung am: 2023-05-19Feedback zu dieser SeitePanasonic Hotline