F_ROR

F_ROR

Einleitung

Der Funktionsblock F_ROR (Rotate Right) führt eine bitweise Rechtsrotation durch. Er gehört zur Kategorie der standardisierten Bitverschiebungsfunktionen gemäß IEC 61131-3. Der Block rotiert die Eingabedaten um eine angegebene Anzahl von Bits nach rechts und füllt die frei werdenden Bits mit den herausrotierenden Bits auf.

F_ROR

Schnittstellenstruktur

Ereignis-Eingänge

  • REQ: Service-Anfrage, die die Operation auslöst. Wird mit den Daten-Eingängen IN und N verknüpft.

Ereignis-Ausgänge

  • CNF: Bestätigung der durchgeführten Operation. Wird mit dem Daten-Ausgang OUT verknüpft.

Daten-Eingänge

  • IN: Der Eingabewert, der rotiert werden soll (Typ: ANY_BIT).

  • N: Die Anzahl der Bits, um die der Eingabewert nach rechts rotiert werden soll (Typ: ANY_INT).

Daten-Ausgänge

  • OUT: Das Ergebnis der Rechtsrotation (Typ: ANY_BIT).

Adapter

Keine Adapter vorhanden.

Funktionsweise

Der Funktionsblock führt eine bitweise Rechtsrotation des Eingabewertes IN um N Bits durch. Dabei werden die herausrotierenden Bits auf der linken Seite wieder eingefügt. Dies unterscheidet sich von einer einfachen Rechtsverschiebung, bei der die frei werdenden Bits mit Nullen aufgefüllt werden.

Technische Besonderheiten

  • Unterstützt alle ANY_BIT-Datentypen für den Eingabewert IN und den Ausgabewert OUT.

  • Der Parameter N kann jeden ANY_INT-Datentyp annehmen.

  • Die Operation ist unabhängig von der Wortbreite des Eingabewertes.

Zustandsübersicht

Der Funktionsblock hat keine internen Zustände. Die Operation wird bei jedem REQ-Ereignis neu ausgeführt.

Anwendungsszenarien

  • Kryptografische Operationen, die bitweise Rotationen erfordern.

  • Signalverarbeitung, bei denen Daten bitweise manipuliert werden müssen.

  • Low-Level-Hardware-Steuerungen, die bitweise Operationen benötigen.

⚖️ Vergleich mit ähnlichen Bausteinen

  • F_SHR (Shift Right): Führt eine Rechtsverschiebung durch, füllt aber die frei werdenden Bits mit Nullen auf.

  • F_ROL (Rotate Left): Führt eine Linksrotation durch, ähnlich wie F_ROR, aber in die entgegengesetzte Richtung.

Fazit

Der F_ROR-Funktionsblock ist ein nützliches Werkzeug für Anwendungen, die bitweise Rotationen erfordern. Seine einfache Schnittstelle und die Unterstützung verschiedener Datentypen machen ihn flexibel einsetzbar. Im Gegensatz zu einfachen Verschiebungsoperationen behält er alle Bits des Eingabewertes bei, was ihn für bestimmte Anwendungen unverzichtbar macht.