LinksRechts
Einleitung
Der Funktionsblock LinksRechts ist ein grundlegender Baustein zur Steuerung einer bidirektionalen Bewegung, beispielsweise eines Antriebs, der sowohl im Rechts- als auch im Linkslauf betrieben werden kann. Er realisiert eine einfache Priorisierungslogik, bei der der Rechtslauf Vorrang vor dem Linkslauf hat, es sei denn, ein spezieller Linkslauf-Befehl ist aktiv. Der Block ermöglicht zudem das pausieren der Bewegung.
Schnittstellenstruktur
Ereignis-Eingänge
EI_ON: Das zentrale Steuerereignis. Es löst bei jedem Eintreffen eine Auswertung der aktuellen Eingangsdaten und einen potenziellen Zustandsübergang aus.
Ereignis-Ausgänge
EO: Dieses Ereignis wird bei jedem Zustandswechsel ausgelöst. Es liefert die aktualisierten AusgangsdatenRechts,LinksundSTATE.
Daten-Eingänge
EIN(BOOL): Allgemeiner Freigabe-/Einschaltbefehl. BeiTRUEist der Betrieb erlaubt, beiFALSEgeht der Block in einen Pause-Zustand.DI_Rechts(BOOL): Befehl für „Nur Rechtslauf“. Setzt den Rechtslauf durch, sofernEINaktiv ist.DI_Links(BOOL): Befehl für „Nur Linkslauf“. Setzt den Linkslauf durch, sofernEINaktiv ist und keinDI_Rechts-Befehl vorliegt.
Daten-Ausgänge
Rechts(BOOL): Steuersignal für den Rechtslauf. IstTRUE, wenn der Block im ZustandRechtslaufist.Links(BOOL): Steuersignal für den Linkslauf. IstTRUE, wenn der Block im ZustandLinkslaufist.STATE(STRING): Zeigt den aktuellen internen Zustand des Funktionsblocks als lesbaren Text an (z.B. „Rechtslauf“, „Linkslauf_Pause“).
Adapter
Dieser Funktionsblock verwendet keine Adapter.
Funktionsweise
Der LinksRechts-Block ist als Basic-FB mit einer Ereignissteuerung (ECC) implementiert. Das Eintreffen des Ereignisses EI_ON bewirkt eine Auswertung der mitgeführten Daten EIN, DI_Rechts und DI_Links. Basierend auf der aktuellen Kombination dieser Werte und dem aktuellen Zustand findet ein Übergang in einen neuen Zustand statt.
In jedem Zustand wird ein spezifischer Algorithmus ausgeführt, der die Ausgangssignale Rechts und Links setzt und den Zustandsnamen in STATE schreibt. Anschließend wird das Ausgangsereignis EO erzeugt, um nachgelagerte Blöcke über die Änderung zu informieren.
Die Prioritätslogik ist wie folgt definiert: Wenn EIN aktiv ist (TRUE), wird zuerst DI_Rechts geprüft. Ist dieser TRUE, wird der Rechtslauf aktiviert. Ist DI_Rechts FALSE, wird DI_Links geprüft. Ist dieser TRUE, wird der Linkslauf aktiviert. Ist EIN FALSE, wechselt der Block unabhängig von den Laufbefehlen in einen Pause-Zustand.
Technische Besonderheiten
Priorität: Die Spezifikation betont, dass „Nur Rechtslauf“ (
DI_Rechts) Vorrang vor „Nur Linkslauf“ (DI_Links) hat. Dies ist in der ECC-Transition vonSTARTnachRechtslaufumgesetzt, die nurEINbenötigt, während der Übergang nachLinkslaufzusätzlichDI_Linkserfordert.Zustandsausgabe: Die Ausgabe
STATEist vom TypSTRINGund wird aus einer importierten AufzählungSTATESgespeist, was die Diagnose und Visualisierung erleichtert.Pause-Zustände: Es existieren zwei separate Pause-Zustände (
Rechtslauf_PauseundLinkslauf_Pause). Diese merken sich die letzte aktive Laufrichtung. Bei erneuter Freigabe (EIN=TRUE) wird, sofern kein spezifischer Laufbefehl (DI_Rechts/DI_Links) anliegt, die zuletzt aktive Richtung fortgesetzt.
Zustandsübersicht
Die ECC (Execution Control Chart) des Bausteins umfasst fünf Zustände:
START: Initialzustand. Verlassen wird er mit dem erstenEI_ON-Ereignis.Rechtslauf: Aktiver Zustand, in dem das AusgangssignalRechtsaufTRUEgesetzt wird.Linkslauf: Aktiver Zustand, in dem das AusgangssignalLinksaufTRUEgesetzt wird.Rechtslauf_Pause: Pause-Zustand, der vomRechtslaufaus erreicht wird, wennEINFALSEwird. Beide Ausgänge sindFALSE.Linkslauf_Pause: Pause-Zustand, der vomLinkslaufaus erreicht wird, wennEINFALSEwird. Beide Ausgänge sindFALSE.
Die Übergänge zwischen den Zuständen werden ausschließlich durch das Ereignis EI_ON in Kombination mit den Datenbedingungen ausgelöst.
Anwendungsszenarien
Typische Anwendungen sind:
Steuerung eines Wechselstrommotors mit zwei Drehrichtungen.
Kontrolle einer horizontal verfahrbaren Einheit (z.B. Schlitten, Tor).
Jede Applikation, bei der eine Vorwärts-/Rückwärtsbewegung mit einer allgemeinen Freigabe und individuellen Richtungsbefehlen gesteuert werden muss.
⚖️ Vergleich mit ähnlichen Bausteinen
Im Vergleich zu einem einfachen SR- oder RS-Flipflop bietet LinksRechts eine höhere Abstraktionsebene, da er die Priorisierungslogik und die Pause-Funktionalität bereits kapselt. Gegenüber einem reinen E_SWITCH-Block, der nur zwischen zwei Ausgängen umschaltet, verwaltet LinksRechts zusätzlich interne Zustände (Pause) und bietet eine definierte Priorisierung der Eingänge.
🛠️ Zugehörige Übungen
Fazit
Der LinksRechts-Funktionsblock ist ein nützlicher und robuster Grundbaustein für die Steuerung bidirektionaler Bewegungen. Durch die integrierte Priorisierungslogik (Rechtslauf vor Linkslauf) und die zustandsbasierte Pausefunktion vereinfacht er die Applikationsprogrammierung und erhöht die Übersichtlichkeit von Steuerungsprogrammen. Seine klare Schnittstelle und der ausgegebene Zustand unterstützen die Inbetriebnahme und Fehlersuche.