F109_BITL

Bereich-Linksschieben

Die Funktion schiebt die Bits eines Speicherbereichs, dessen Anfang und Ende an den Ausgängen d1 und d2 anliegt nach links. Die Anzahl der Bits um die der Speicherbereich nach links 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 F111_WSHL 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 und d2 müssen vom gleichen Adresstyp sein.

  1.  (1) Angegebener Datenbereich
  2.  (2) start: TRUE
  3.  (3) n Bits werden herausgeschoben (Endadresse)
  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#2340,16#6781,16#9012]*)
	END_VAR

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 links heraus. Die durch die Verschiebung entstandenen 4 Bits in data_field[0] werden mit Nullen aufgefüllt. Am Eingang n wird die Konstante 4 direkt an die Funktion geschrieben. Statt dessen können sie auch im POE-Kopf eine Eingangsvariable deklarieren.

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,,4,7,2,9,4,);
B(B_VAROUT,,data_field[0],16,2,18,4,);
B(B_VAROUT,,data_field[2],16,3,18,5,);
B(B_CONTACT,,start,3,1,5,3,R);
B(B_F,F109_BITL!,Instance,9,0,16,5,,?DEN?Dn?AENO?Cd1_Start?Cd2_End);
L(1,0,1,5);
L(1,2,3,2);
L(5,2,9,2);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

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

AWL-Rumpf

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