FP_ROL_CARRY

Linksrotieren mit Carry-Flag

Dieser FP-Befehl rotiert die Werte des Speicherregisters d um die durch n_Bits festgelegte Anzahl an Bits und innerhalb des Wortes über das Carry-Flag nach links, wenn der Trigger EN auf TRUE gesetzt ist.

Parameter

Eingang

n_Bits (WORD, INT, UINT)

Anzahl der Bits

Werte: 0–255

Ein-/Ausgang

d (WORD, DWORD)

Zu rotierende Werte

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

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

sys_bIsCarry (wird für einen Zyklus auf TRUE gesetzt)
  • wenn d= 16-Bit-Daten und n_Bits auf 0 oder ein Vielfaches von 17 festgelegt ist, findet kein Rotieren statt und das Carry-Flag bleibt unverändert.

  • wenn d= 32-Bit-Daten und n_Bits auf 0 oder ein Vielfaches von 33 festgelegt ist, findet kein Rotieren statt und das Carry-Flag bleibt unverändert.

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
		bStart: BOOL:=FALSE;
			(*activates the function*)
		wRotate_value: WORD:=16#1234;
	END_VAR

KOP-Rumpf

Wenn die Variable bStart 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_ROL_CARRY!,,11,1,20,6,,?DEN?Dn_Bits?Dd?Ad?AENO);
B(B_CONTACT,,bStart,3,2,5,4,);
B(B_VARIN,,4,9,3,11,5,);
B(B_VARIN,,wRotate_value,9,4,11,6,);
L(1,3,3,3);
L(5,3,11,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(start) then
    FP_ROL_CARRY(n_Bits := 4, d := wRotate_value);
END_IF;

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