Schiebefunktionen
Mit Schiebefunktionen werden die Bits um eine bestimmte Anzahl von Stellen links oder rechts verschoben. Dabei werden entweder auf der linken oder rechten Seite Stellen frei. Diese werden mit 0 gefüllt. Schiebefunktionen werden unabhängig von sonstigen Bedingungen im Akku 1 ausgeführt. Das Ergebnis verbleibt ebenfalls im Akku 1. Anbei ein Schaubild über das was passiert, wenn eine Schiebefunktion um 5 Stellen nach links durchgeführt wird.
Schiebefunktionen sind VKE-neutrale Operationen und beeinflussen das VKE nicht. Sie werden einfach ausgeführt. In diesem Beispiel wurde der Inhalt des gesamten Akkus um 5 Stellen nach links verschoben. In solchen Fällen spricht man von einer Schiebefunktion für den Datentyp Doppelwort.
Eine interessante Tatsache ist jedoch, was passiert, wenn man die Schiebefunktion für den Datentyp Wort durchführt. In diesem Fall wird nämlich die rechte Seite von Akku 1 verschoben. Die linke Seite bleibt unberührt. Wieder ein Schaubild zur Verdeutlichung für den Datentyp Wort.
Schiebefunktion in FUP
Auf dem nachfolgenden Bild sehen Sie die Darstellung der Schiebefunktion in FUP. In diesem Beispiel wurde die Schiebefunktion nach rechts für den Datentyp INT benutzt. Zu erkennen an SHR_I.
Auch Schiebefunktionen haben einen Freigabeeingang, hier mit E0.1 adressiert, und einen Freigabeausgang. Am IN-Eingang kommt die Adresse des zu schiebenden Bitmusters. Am OUT-Ausgang wird das Ergebnis der Verschiebung transferiert. IN und OUT müssen nicht unterschiedlich sein. Am N-Eingang wird die Anzahl der Stellen Hexadezimal angegeben, um die das Bitmuster verschoben werden soll. In unserem Beispiel um 3 Stellen. Möchten wir das Bitmuster um 21 Stellen verschieben, hätten wir W#16#15 angeben müssen.
Das Ergebnis der Verschiebung von AB10/11 (AW10) sehen Sie an den Ausgangsbytes AB20/21. Das Bitmuster ist um 3 Stellen nach rechts verschoben.
Weitere Schiebefunktionen
Eine Übersicht über die Schiebefunktionen in Step7. Ob nach rechts oder links verschoben wird, erkennen Sie an den Buchstaben R oder L.
Der einzige Unterschied bei den Schiebeboxen ist die Länge des zu schiebenden Bitmusters (Wort, Doppelwort) und der dazugehörige Datentyp. Der Rest ist gleich. Aus dem Grund gehen wir nicht näher auf die einzelnen Boxen ein.
Rotieren
Rotieren ist eine weitere Möglichkeit, Bitmuster zu verschieben. Beim Rotieren gehen die hinausgeschobenen Bits nicht verloren, sondern füllen die Stellen, die sonst mit 0 gefüllt werden. So wird das Bitmuster "im Kreis" verschoben.
Rotierfunktion in FUP
Auch für die Rotierfunktion gibt es eine Box für die Darstellung in FUP. Neben ROL_DW für "Rotieren nach links" gibt es ROR_DW für "Rotieren nach rechts". Beide Boxen rotieren den Inhalt eines Doppelworts.
Besonderheiten bei der Programmierung in AWL
Sowohl für die Schiebe- als auch für die Rotierfunktionen gibt es Besonderheiten bei der Programmierung in AWL. Beim Programmieren von Schiebefunktionen in AWL ist die Angabe der Stellen, um die das Bitmuster verschoben werden soll, nicht nötig. In diesem Fall wird die Zahl genommen, die sich im Akku 2 befindet. Ist beim Wortschieben die Zahl größer als 16 oder beim Doppelwortschieben größer als 32, dann wird um 16, bzw. 32 Stellen verschoben.
Für die Rotierfunktion gibt es in Step7 keine Boxen für Wörter, Bytes oder Bits, obwohl das möglich ist. Diese Möglichkeit ist bei der Programmierung in AWL vorhanden.