SchieberStruct


Einleitung

Der SchieberStruct ist ein strukturierter Datentyp, der zur Abbildung aller möglichen Zustände eines Schiebers (z. B. eines Ventils, einer Klappe oder eines Verschlusses) innerhalb eines Steuerungssystems dient. Er dient als zentraler Container für die Objekt-Identifikatoren (IDs), die den verschiedenen Zuständen des Schiebers zugeordnet sind. Dieser Datentyp wird typischerweise in Verbindung mit Funktionsblöcken verwendet, die Zustandsmaschinen oder Sequenzen für Schiebersteuerungen implementieren.

Schnittstellenstruktur

Der SchieberStruct ist ein Datentyp und besitzt daher keine Ereignis- oder Adapterschnittstellen im herkömmlichen Sinne. Seine Struktur besteht ausschließlich aus Datenfeldern.

Daten-Eingänge

Nicht zutreffend. Die Struktur definiert einen Datentyp, keine Funktionsblock-Schnittstellen.

Daten-Ausgänge

Nicht zutreffend. Die Struktur definiert einen Datentyp, keine Funktionsblock-Schnittstellen.

Adapter

Nicht zutreffend.

Funktionsweise

Die SchieberStruct ist eine Datenstruktur, die fünf Felder vom Typ UINT (16-Bit unsigned integer) enthält. Jedes Feld repräsentiert einen spezifischen Zustand eines Schiebers und speichert die entsprechende Objekt-ID (u16ObjId). Diese IDs werden verwendet, um in einem übergeordneten System (z. B. einer Visualisierung oder einem Logikbaustein) auf die grafischen oder logischen Repräsentationen der Zustände zuzugreifen.

Die Initialwerte aller Felder sind auf die Konstante ID_NULL gesetzt, was einen undefinierten oder nicht zugewiesenen Zustand kennzeichnet. Diese müssen vor der Nutzung der Struktur mit gültigen Objekt-IDs belegt werden.

Technische Besonderheiten

  • Initialisierung: Alle Mitgliedsvariablen werden standardmäßig mit dem Wert ID_NULL initialisiert. Dies stellt sicher, dass die Struktur in einem definierten, neutralen Zustand beginnt, bevor spezifische IDs zugewiesen werden.

  • Typensicherheit: Durch die Verwendung eines strukturierten Datentyps anstelle einzelner, lose gekoppelter Variablen wird die Code-Wartbarkeit und Lesbarkeit verbessert.

  • Kompilierungshinweis: Der Datentyp ist im Package logiBUS::utils::sequence::schieber definiert und importiert die Konstante ID_NULL aus dem isobus::UT::Q::const::IDs-Namespace.

Zustandsübersicht

Die Struktur bildet explizit folgende fünf Zustände eines Schiebers ab:

  1. Unknown: Der Zustand des Schiebers ist unbekannt oder konnte nicht ermittelt werden.

  2. Closed: Der Schieber befindet sich in der geschlossenen Endlage.

  3. Opening: Der Schieber ist gerade dabei, sich zu öffnen (Bewegungszustand).

  4. Opened: Der Schieber befindet sich in der geöffneten Endlage.

  5. Closing: Der Schieber ist gerade dabei, sich zu schließen (Bewegungszustand).

Anwendungsszenarien

  • Zustandsverwaltung: Ein übergeordneter Steuerungsbaustein kann eine Instanz dieser Struktur halten, um die aktuell gültigen Objekt-IDs für alle Schieberzustände zentral zu verwalten.

  • Parametrierung: Die Struktur kann als konfigurierbarer Parameter an einen Funktionsblock übergeben werden, der dann basierend auf seinem internen Zustand die entsprechende ID aus der Struktur auswählt und z. B. an ein Visualisierungssystem weiterleitet.

  • Visualisierung: Ein HMI- oder SCADA-System kann die in der Struktur hinterlegten IDs nutzen, um das grafische Symbol des Schiebers entsprechend seines aktuellen Zustands (z. B. Farbe, Symbol) zu aktualisieren.

⚖️ Vergleich mit ähnlichen Bausteinen

Im Gegensatz zu Funktionsblöcken wie E_SR (Speicherglied) oder E_CTUD (Zähler), die aktive Logik implementieren, ist SchieberStruct ein passiver Datentyp. Ähnliche strukturierte Datentypen könnten für andere Geräte mit Zustandsmaschinen definiert werden (z. B. PumpeStruct, MotorStruct). Die Besonderheit liegt in der spezifischen Abbildung der für einen linearen Schieber charakteristischen Zustände Opening, Closing, Opened und Closed inklusive eines Unknown-Zustands.

Fazit

Der SchieberStruct Datentyp ist ein nützliches Hilfskonstrukt für die strukturierte und typsichere Handhabung von Zustandsinformationen für Schieberaktoren. Durch die Kapselung der relevanten Objekt-IDs in einer einzigen Struktur wird die Konfiguration und Wartung von Anwendungen vereinfacht, die solche Aktoren steuern und visualisieren. Seine Verwendung fördert einen klaren und konsistenten Programmierstil.