ROTH automation GmbH
Facebook XING Google Plus Twitter

Bitfeld in Zahl wandeln und umgekehrt

Hier ein weiteres Beispiel aus unserer S7 Programmbibliothek, diesmal zum Thema Bitfeld. Die Funktionen stehen kostenlos zur Verfügung und können frei kopiert werden, wenn der Copyright Vermerk nicht gelöscht wird. Der S7 Download unserer Funktionen ist einfach. Einfach mit Ctrl C in die Zwischenablage kopieren und als Step7 Quelle einfügen und übersetzen. In einem Datenbereich ist ein Bit gesetzt. Dieses soll einer Zahl zugeordnet werden. Nachfolgend ein Lösungsbeispiel aus unserer S7 Bausteinbibliothek mit Schiebebefehlen und Any Pointern.

Zuvor noch ein paar Anwendungsbeispiele:

Hier ein weiteres Beispiel aus unserer S7 Programmbibliothek, diesmal zum Thema Bitfeld. Die Funktionen stehen kostenlos zur Verfügung und können frei kopiert werden, wenn der Copyright Vermerk nicht gelöscht wird. Der S7 Download unserer Funktionen ist einfach. Einfach mit Ctrl C in die Zwischenablage kopieren und als Step7 Quelle einfügen und übersetzen. In einem Datenbereich ist ein Bit gesetzt. Dieses soll einer Zahl zugeordnet werden. Nachfolgend ein Lösungsbeispiel aus unserer S7 Bausteinbibliothek mit Schiebebefehlen und Any Pointern.
Zuvor noch ein paar Anwendungsbeispiele:

Ein ganz einfaches Beispiel könnte ein Mehrfachschalter oder Stufenschalter sein. Dabei wird jede Schalterstellung über ein Bit (Eingang) repräsentiert. Mehrere Eingänge können somit auch nicht gleichzeitig aktiv sein. Soll das für einen eventuellen Fehlerfall kontrolliert werden, dann muss noch eine zusätzliche Überprüfung stattfinden, welche in diesem Artikel nicht erörtert wird.
Für Störauswertung möchte man vielleicht die Störungsnummer eines einzelnen Bits registrieren.
Ebenso interessant kann auch die umgekehrte Funktion sein, wenn man einer Nummer ein Bit zuordnen möchte. In schrittgesteuerten Anlagen kennt man den Schritt, möchte aber jedem Schritt ein Bit zuordnen um diese dann mit einfacher Logik zu verknüpfen.
Selbstverständlich kann man natürlich auch überall einen Vergleich mit der Schrittnummer starten. Bei umfangreichen Schrittketten kann das aber leicht in Arbeit ausarten.
Grundlage der beiden Funktionen sind die Schiebebefehle “SLW”. Beim Umformen einer Zahl in das Bit, wird dieses einfach um die (An)Zahl geschoben. Umgekehrt prüft die Funktion im Bitfeld jedes einzelne Bit und merkt sich dabei um wieviele Positionen geschoben wurde.
Interessant sind die Funktionen vor allem auch deshalb, weil diese einfach und effektiv parametriert werden können. Die Schleife ist auf ein Minimum reduziert und kostet somit wenig Zykluszeit.
Unser folgendes Beispiel zeigt den Aufruf. Ausgewertet wird der Datenbereich im DB50, wobei 10 Bytes, also 80 Bits überwacht werden. Die gefundene Nummer wird im MW10 abgelegt.

Anschließend wird diese Nummer wieder in ein Bitfeld ab Adresse 10 abgelegt.

Wie man erkennt ist dem Bit DBX3.5 die Zahl 21 zugeordnet, d.h. Die Zählung beginnt mit Null.

DBX 0.0 = TRUE → 0
DBX 0.1 = TRUE → 1
DBX 9.7 = TRUE → 79

Quellcode der Funktion: Wandle Zahl in Bitfeld innerhalb eines Datenbereiches

Damit nicht etwa ein Bit stehen bleibt, z.B. dann wenn sich die Zahl ändert wird bei jedem Durchlauf das ganze Bitfeld byteweise gelöscht.
Die Adressierung ist Byte orientiert und somit nicht an Wortgrenzen gebunden.
Unser Beispiel zeigt auch die Verwendung von Any Pointern, welche die Adressierung und den Aufruf besonders einfach gestalten.

Quellcode der Funktion: Wandle Bitfeld innerhalb eines Datenbereiches in Dezimalzahl

Die Variable FoundNo enthält die Nummer des gesetzten Bits. Diese Funktion kehrt die Funktion NoToFlag um und arbeitet mit denselben Zuordnungen. Das heißt:
DBX 0.0 = TRUE → 0
DBX 0.1 = TRUE → 1
DBX 9.7 = TRUE → 79

Sollte kein Bit gesetzt sein, wird in FoundNo = -1 ausgegeben. Bei einer nachstehenden Auswertung im Anwender Programm kann dann beim Vergleich <0 festgestellt werden ob kein Bit gesetzt ist.

ROTH automation übernimmt keine Verantwortung für Kosten oder Schäden die im Zusammenhang mit dem oben beschriebenen Programmcode stehen könnten. Gerne verbessern, erweitern oder ergänzen wir die vorgestellten Funktionen und freuen uns auf Ihre Anfragen oder Anregungen.

Möchten Sie mehr von unseren Erfahrungsberichten lesen? Klicken Sie hier um zur Übersicht zurückzukehren.

 

Lesen Sie auch unsere Bericht über unseren Datenlogger, die perfekte Ergänzung zu Ihrer SPS Steuerung. Zur Übersicht gelangen Sie hier.