F108_BITR

Bereich-Rechtsschieben

Die Funktion schiebt die Bits eines Speicherbereichs, dessen Anfang und Ende an den Ausgängen d1 und d2 anliegt nach rechts. Die Anzahl der Bits um die der Speicherbereich nach rechts geschoben werden soll, wird mit dem Wert am Eingang n festgelegt. Bei n können Sie einen Wert zwischen 0 und 16 eingeben. Die durch die Verschiebung freiwerdenden Bitstellen werden mit Nullen aufgefüllt. Bei einem Eingang n = 0 findet keine Verschiebung statt. Bei einem Eingang n = 16 findet eine Verschiebung um ein WORT statt, d.h. es wird wie beim Befehl F110_WHSL vorgegangen.

Parameter

Eingang

n (INT)

Anzahl der Bits, die verschoben werden

Ausgang

d1_Start (WORD, INT, UINT)

16-Bit-Anfangsadresse

d2_End (WORD, INT, UINT)

16-Bit-Endadresse

Anmerkungen

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

  • Die Adressen der Variablen von den Eingängen d1_Start und d2_End müssen vom gleichen Adresstyp sein.

  1.  (1) Angegebener Datenbereich
  2.  (2) start: TRUE
  3.  (3) n Bits werden herausgeschoben
  4.  (4) n bits

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)

wenn die Adresse der Variablen an den Ausgängen von d1_Start > d2_End ist oder der Wert am Eingang n³ 16 ist.

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)

wenn die Adresse der Variablen an den Ausgängen von d1_Start > d2_End ist oder der Wert am Eingang n³ 16 ist.

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*)
		data_array: ARRAY [0..2] OF WORD:=[16#1234,16#5678,16#9012];
			(*result after a 0->1 leading edge
from start:
[16#8123,16#0567,16#9012]*)
	END_VAR

In diesem Beispiel wird die Eingangsvariable number_bits deklariert. Stattdessen können Sie im Rumpf eine Konstante auch direkt an den Eingang der Funktion schreiben.

POE-Rumpf

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

Sie schiebt 4 Bits (entspricht einer Stelle in der hexadezimalen Darstellung) nach rechts heraus. Die durch die Verschiebung entstandenen 4 Bits in data_field[2] werden mit Nullen aufgefüllt.

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_VARIN,,number_bits,5,2,7,4,);
B(B_VAROUT,,data field[0],16,2,18,4,);
B(B_VAROUT,,data field[2],16,3,18,5,);
B(B_F,F108_BITR,,7,0,16,5,,?DEN?Dn?AENO?Cd1?Cd2);
B(B_CONTACT,,output,3,1,5,3,R);
L(1,0,1,5);
L(1,2,3,2);
L(5,2,7,2);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(start) then
    F108_BITR( n:=number_bits,
         d1_Start=> data_field[0],
         d2_End=> data_field[2]);
END_IF;

AWL-Rumpf

Letzte Änderung am: 2021-07-26Feedback zu dieser SeitePanasonic Hotline