F5_BTM

Bit-Transfer

Ein Bit des Speicherregisters s oder ein Bit der Konstanten s wird gemäß dem in Speicherregister n festgelegten Inhalt in das Speicherregister d transferiert. Dazu muss der Trigger EN auf TRUE gesetzt sein. Wenn eine äquivalente 16-Bit-Konstante in s angegeben ist, wird der Bit-Transfer intern ausgeführt, der die Konstante in einen 16-Bit-Ausdruck konvertiert.

Parameter

Eingang

s (WORD, INT, UINT)

16-Bit-Quellregister

n (WORD, INT, UINT)

Legt Anfangs- und Zielposition des Bits fest

Ausgang

d (WORD, INT, UINT)

16-Bit-Zielregister

Beispiel

Erläuterung mit Quellcode s=16#8888, Anfangsposition des Bits 02 und Zielposition des Bits 0F definiert durch n=16#0F02

  1.  (1) Quellwert 16#8888 mit Anfangsposition des Bits 02
  2.  (2) Zielwert 16#FFFF mit Zielposition des Bits 15
  3.  (3) Ergebnis 16#7FFF mit Bit 02 verschoben auf Bit 15

Anmerkungen

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

  • Die Variablen s und d müssen vom gleichen Datentyp sein.

  • Die Bits des Speicherregisters n oder Konstanten n geben binär kodiert die Position des Quellbits an, das transferiert werden soll:

    16 #

    0

    F

    0

    2

     

    Anfangsposition des Bits

    Zielposition des Bits

    Bit Nr. 0 bis 3

    Quell-Bit Nr. (16#0 bis 16#F)

    Bit Nr. 4 bis 7

    FP2/2SH und 10SH: Anzahl der Bits, die transferiert werden (16#0 bis 16#F)

    FP3: ungültig

    Bit Nr. 8 bis 11

    Ziel-Bit Nr. (16#0 bis 16#F)

    Bit Nr. 12 bis 15

    Ungültig

    n = 16#C01 bewirkt zum Beispiel von rechts nach links gelesen: Ein Bit wird von Position 1 nach Position 12 (16#C) transferiert.

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;
			(*activates the function*)
		input_value: WORD:=2#1000100010001000;
		copy_operand: WORD:=16#0F02;
			(*digit no.1 and no.3 are invalid, digit no.0 locates
the position of the source bit (here: 2),
digit no.2 locates the position of the destination bit
(here: 15)*)
		output_value: WORD:=2#1111111111111111;
			(*result after a 0->1 leading
edge from start:
2#0111111111111111*)
	END_VAR

POE-Rumpf

Wenn die Variable start auf TRUE gesetzt wird, wird die Funktion ausgeführt.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,F5_BTM,,12,0,19,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_CONTACT,,start,8,1,10,3,);
B(B_VARIN,,input_value,10,2,12,4,);
B(B_VARIN,,copy_operand,10,3,12,5,);
B(B_VAROUT,,output_value,19,2,21,4,);
L(1,2,8,2);
L(10,2,12,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF start then
    F5_BTM( s:= input_value,
         n:= copy_operand,
         d=> output_value);
END_IF;

AWL-Rumpf

LD

start

(* EN = start; Starting signal for the F5_BTM function. *)

F5_BTM

input_value, copy_operand, output_value

(* s = input_value (source) *)

(* n = copy_operand; e.g. Var_1 = 16#0A0B *)

(* 11 source bit (B) Þ 10 destination bit (A) *)

(* d = output_value (destination) *)

ST

out

(* option *)

Letzte Änderung: 2024-12-18Feedback zu dieser SeitePanasonic Hotline