Ablaufsteuerung

Mit dem Baustein Ablaufsteuerung können Funktionsabläufe in Textform programmiert werden.
Dies eignet sich zur Automatisierung von diversen Abläufen, in denen mehrere Schritte hintereinander notwendig sind.

Dieser Baustein schafft eine Vereinfachung von solchen Abläufen, da ansonsten oft eine große Anzahl konventioneller Bausteine nötig wäre, mit oft unübersichtlicher Programmierung.

Die einzelnen Schritte werden zeilenweise programmiert, mehrere Zeilen die zusammen eine bestimmte Funktion abbilden, werden als Sequenz bezeichnet.

Inhaltsverzeichnis


Eingänge

Kürzel Kurzbeschreibung Beschreibung Wertebereich
S1-8 Aktiviert Sequenz 1-8 -
AI1-8 Analogeingänge 1-8 -
AIS Analogeingang Sequenz starten 0...8
R Reset Setzt den Baustein zurück und sperrt diesen. -




Ausgänge

Kürzel Kurzbeschreibung Beschreibung Wertebereich
AQ1-8 Analogausgänge 1-8 -
AQs Aktuelle Sequenz Aktuell aktive Sequenz
AQl Aktuelle Zeile Aktuelle Programmzeile der aktiven Sequenz
TQ Textausgang Textausgang, kann durch eine Sequenz gesetzt werden -




Eigenschaften

Kurzbeschreibung Beschreibung Standardwert
Konfiguration Programmcode Editor -
Intervall [ms] Intervall von Zeile zu Zeile in Millisekunden. Beeinflusst die Ausführungsgeschwindigkeit von Sequenzen. Niedrige Werte erhöhen die Ausführungsgeschwindigkeit, können aber auch die CPU-Last erhöhen. 500




Anwendungsbeispiel

Das folgende einfache Beispiel zeigt eine mögliche Anwendung in der Heizungstechnik, in welchem zwei Heißwasserspeicher nacheinander von einer Zentralheizung aufgeheizt werden.

Dafür erhält der Baustein an den Eingängen die nötigen Temperaturen der Heizung, der beiden Heißwasserspeicher, und den Temperatur Sollwert für die Heißwasserbereitung.
Über den S1 Eingang wird der Ablauf der Sequenz 1 gestartet, im Beispiel durch einen Impuls zu einer Uhrzeit.
Über die Ausgänge werden die Heizung, sowie Pumpen und Ventile angesteuert:

Durch einen Doppelklick auf den Baustein öffnet sich das Fenster zur Programmierung.
Links im Fenster befindet sich die Bibliothek des Bausteins, in welcher Eingänge, Ausgänge, Befehle, und Variablen zur Verfügung stehen.
Durch einen Doppelklick auf die verfügbaren Elemente werden diese rechts ins Editor Fenster eingefügt, wo sie frei bearbeitet werden können:

Wie im obigen Beispiel erkennbar, muss jede Zeile mit einem Befehl beginnen.
Die grün eingefärbten Kommentare sind für einen funktionierenden Programmablauf zwar nicht notwendig, dienen aber der Dokumentation und erleichtern das Verständnis der einzelnen Schritte.

Hinweis: Dieses Beispiel dient dazu, den Baustein und seine Arbeitsweise kennenzulernen. Es ist in dieser einfachen Form nur bedingt auf eine konkrete Anwendung übertragbar.


Funktionsbeschreibung

Eine Sequenz wird zeilenweise ausgeführt, das Intervall von Zeile zu Zeile ist einstellbar. Dabei können Abschnitte durch Bedingungen übersprungen oder durch Zeitfunktionen verzögert werden.
Es können mehrere Sequenzen angelegt, separat gestartet, oder mit einem Befehl zwischen den Sequenzen gewechselt werden.

Der Baustein enthält eine Syntaxprüfung, dabei werden Fehler beim Bearbeiten einer Sequenz hervorgehoben. Während der Ausführung werden ungültige oder leere Zeilen übersprungen.

Eine Zeile beginnt immer mit dem gewünschten Befehl, gefolgt von den erforderlichen Parametern und Operatoren, jeweils durch ein Leerzeichen getrennt.

Die in der Bibliothek des Bausteins angegebenen Ein- und Ausgänge können gesetzt oder abgefragt werden.
Ist ein Eingang mit Logik verbunden, gilt der zuletzt gesetzte Wert. Änderungen am Eingang überschreiben den durch eine Sequenz gesetzten Wert.

Zum Setzen und Vergleichen von Ausgängen können die vom Formel Baustein unterstützten Befehle verwendet werden (z.B. SET AQ1 = AI2 * 3).


Operatoren, Ein-/Ausgänge (IOs) und Variablen

Unterstützte Operatoren sind =, >=, >, <=, <, !=

Unterstützte Eingänge: AI1 - AI8. Die Eingangsnamen können im Dialog angepasst werden.

Unterstützte Ausgänge: AQ1 - AQ8. Die Ausgangsnamen können im Dialog angepasst werden.

Unterstützte Variablen: value1 - value5. Die Namen der Variablen können im Dialog angepasst werden.
Variablen dienen zum Arbeiten mit Werten, die nicht an den IOs zur Verfügung stehen. Sie können als Speicher genutzt werden, und wie IOs gesetzt, mit Rechenoperationen verarbeitet, oder ausgegeben werden.


Befehle

Sleep
Wartet für die angegebene Zeit
Syntax: sleep [Wert] [s: sekunden, m: minuten]
Beispiele:
sleep 300 s (wartet für 300 Sekunden, fährt dann mit der nächsten Zeile fort)
sleep 10 m (wartet für 10 Minuten, fährt dann mit der nächsten Zeile fort)

Waitcondition
Wartet, bis eine Bedingung erfüllt ist
Syntax: waitcondition [IO] [operator] [value]
Beispiele:
waitcondition AI1 > AQ1 (wartet bis AI1 größer ist als AQ1, fährt dann mit der nächsten Zeile fort)
waitcondition AI1 + 3 > value1 (wartet bis AI1 + 3 größer ist als die Variable value1, fährt dann mit der nächsten Zeile fort)

Set
Setzt einen Eingang, Ausgang oder Variable auf einen Wert
Syntax: set [IO] = [Wert]
Beispiele:
set AQ1 = AI1 - AI2 (subtrahiert AI2 von AI1 und gibt das Ergebnis an AQ1 aus)
set value1 = AI2 + AI3 (addiert AI2 und AI3 und schreibt das Ergebnis in die Variable value1)

Setpulse
Liefert einen Impuls an Ein- oder Ausgängen
Syntax: setpulse [IO]
Beispiele:
setpulse AQ1 (liefert einen kurzen Impuls an AQ1)
setpulse AI2 = 4 (liefert einen kurzen Impuls mit Wert 4 an AI2)

Startsequence
Startet eine bestimmte Sequenz
Syntax: startsequence [Nummer] oder startsequence [Name der Sequenz]
Beispiele:
startsequence 2 (startet die zweite Sequenz)
startsequence Alarm (startet die Sequenz mit dem Namen “Alarm”)

Return
Wenn die aktuelle Sequenz mit [startsequence] gestartet wurde, führt dieser Befehl zur aufrufenden Sequenz zurück, und fährt mit ihrer nächsten Zeile fort.
Syntax: return

Goto
Springt zu einer bestimmten Zeile
Syntax: goto [Nummer]
Beispiele:
goto 1 (springt zum Anfang der Sequenz und fährt dort fort)
goto 23 (springt zu Zeile 23 und fährt fort)

If
Mit “if” wird zuerst eine Bedingung geprüft. Nur wenn die Bedingung zutrifft, werden die folgenden Befehle bis “endif” ausgeführt.
Syntax: if [linker term] [operatoren] [rechter term] … endif
Beispiel:
if AQ3 >= 4
set AQ1 = AQ3
endif

Kommentare und Texte

Kommentar
Der Zeile einen Kommentar hinzufügen oder den Rest der Zeile deaktivieren.
Syntax: //
Beispiele:
waitcondition AI2 > AI4 // warten bis AI2 größer ist als AI4 (Kommentar dient zur Beschreibung der Zeile)
// waitcondition AI2 > AI4 (Kommentar Schrägstriche werden am Anfang verwendet, um die gesamte Zeile zu deaktivieren)

Textausgang TQ
Zeichen in Anführungszeichen werden als Text ausgegeben, ansonsten werden sie wie Werte behandelt.
Syntax: set TQ = "..."
Beispiele:
[set TQ = AQ2] ergibt: "27.5"
[set TQ = "Wert an AQ2 ist" AQ2] ergibt: "Wert an AQ2 ist 27.5"