FP_SHL_BLOCK

Datenblock nach links schieben

Dieser FP-Befehl schiebt den Speicherbereich mit der Anfangsadresse d1_Start und der Endadresse d2_End um die durch n_Bits festgelegte Anzahl an Bits nach links, wenn der Trigger EN auf TRUE gesetzt ist.

Die frei werdenden (leeren) Stellen werden mit Nullen aufgefüllt.

  • Bei n_Bits = 0 findet keine Verschiebung statt.

  • Bei n_Bits = 16 erfolgt wie bei FP_WSHL_BLOCK eine Verschiebung um ein Wort.

Parameter

Eingang

n_Bits (WORD, INT, UINT)

Anzahl der Bits (zulässiger Bereich: 0–15)

Ausgang

d1_Start (BOOL)

Anfangsadresse

d2_End (BOOL)

Endadress

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
  • wenn d1_Start > d2_End

  • wenn n_Bits ³ 16

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
  • wenn d1_Start > d2_End

  • wenn n_Bits ³ 16

Beispiel

Globale Variablen

In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.

POE-KopfCopy code to clipboard

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
		bStart: BOOL:=FALSE;
			(*activates the function*)
	END_VAR
	VAR_EXTERNAL
		bStartAddress: BOOL:=FALSE;
		bEndAddress: BOOL:=FALSE;
	END_VAR

KOP-RumpfCopy code to clipboard

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

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,FP_SHL_BLOCK!,,9,1,18,6,,?DEN?Dn_Bits?AENO?Cd1_Start?Cd2_End);
B(B_VARIN,,3,7,3,9,5,);
B(B_VAROUT,,bStartAddress,18,3,20,5,);
B(B_VAROUT,,bEndAddress,18,4,20,6,);
B(B_CONTACT,,bStart,3,2,5,4,R);
L(1,3,3,3);
L(5,3,9,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-RumpfCopy code to clipboard

IF DF(start) then
    FP_SHL_BLOCK(n_Bits := 4, 
                 d1_Start => awDataField[0], 
                 d2_End => awDataField[2]);
END_IF;

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