F110_WSHR

Bereich-Rechtsschieben (16-Bit)

Der Speicherbereich mit der Anfangsadresse d1 und der Endadresse d2 wird um 1 Wort nach niedrigeren Adressen hin (nach rechts) verschoben, wenn der EN-Eingang auf TRUE gesetzt ist.

Parameter

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

  • Die durch die Verschiebung freiwerdenden Bitstellen werden mit 0 aufgefüllt. Das Wort mit der niedrigsten Adresse des mit d1 und d2 angegebenen Verschiebebereichs wird gelöscht

  • d1_Start and d2_End müssen:

    • durch gleiche Operanden spezifiziert werden.

    • d1_Start£d2_End

  • Die Variablen d1_Start und d2_End müssen vom gleichen Datentyp sein.

  1.  (1) Angegebener Datenbereich
  2.  (2) Das Wort mit der höchsten Adresse wird herausgeschoben
  3.  (3) Das Wort mit der niedrigsten Adresse wird gelöscht

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*)
		source_array: ARRAY [0..3] OF INT:=[2,3,4,5];
			(*result after a 0->1 leading edge
from start: [2,4,5,0]*)
	END_VAR

POE-Rumpf

Wenn die Variable start von FALSE 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,F110_WSHR!,Instance,6,1,13,6,,?DEN?AENO?Cd1_Start?Cd2_End);
B(B_VAROUT,,source_array[1],13,3,15,5,);
B(B_VAROUT,,source_array[3],13,4,15,6,);
B(B_CONTACT,,start,2,2,4,4,R);
L(1,3,2,3);
L(4,3,6,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(start) then
    F110_WSHR( d1_Start=> source_array[1],
         d2_End=> source_array[3]);
END_IF;

Letzte Änderung am: 2022-02-08Feedback zu dieser SeitePanasonic Hotline