FP_ROR_CARRY

Rechtsrotieren 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 rechts, 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 := 5 ;
        NETWORK_BODY
B(B_F,FP_ROR_CARRY!,,11,0,20,5,,?DEN?Dn_Bits?Dd?Ad?AENO);
B(B_CONTACT,,bStart,5,1,7,3,);
B(B_VARIN,,4,9,2,11,4,);
B(B_VARIN,,wRotate_value,9,3,11,5,);
L(1,2,5,2);
L(7,2,11,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

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

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