Beispiel: Wehrsteuerung mit Timer

Aus Dokumentation
Wechseln zu:Navigation, Suche

Ziel ist es ein Entlastungswehr je nach Wasserstand im Bauwerk stufenweise abzusenken bzw. wieder hochzufahren.

Erreicht im Entlastungsfall die Überfallhöhe 5 cm wird das Wehr abgesenkt, wird dieser Wasserstand trotz erster Absenkung nicht unterschritten oder wieder erreicht wird auf die nächste Stufe abgesenkt. Das Gleiche erfolgt in einer dritten Stufe.

Sinkt der Wasserstand auf 50 cm unter Ausgangs-Wehrhöhe wird das Wehr wieder hochgefahren.

Um zu verhindern, dass während der benötigten Zeit für das Absenken des Wehrs die Regel für weiteres Absenken gültig wird, wird ein Timer gesetzt der abgelaufen sein muss damit die nächste Wehrstufe angefahren werden kann. Dieses Vorgehen kann bei verschiedensten Steuerungen sinnvoll sein um Schwingungen, durch zu schnell wechselnde Zustandsänderungen, zu verhindern.

Zur Modellierung:


Wehrsteuerung mit Timer001.png


Am Schacht Neu020 wird ein Sonderbauwerk vom Typ 62 definiert

Die Wehrkrone liegt mit 100,32 mNN 2,00 m über Schachtsohle, 31,2 m³ Speichervolumen bis Wehrhöhe, Ablaufdrossel auf 50 l/s

Wehrsteuerung mit Timer002.png


Zum Testen der Steuerung wird als Belastung für das Kanalnetz an Schacht Neu005 eine Flutkurve, Sonderbauwerk Typ 80 modelliert. Der Vorteil einer Flutkurve liegt darin gezielt alle Belastungsstufen durchlaufen zu können und dabei das Steuerungsverhalten zu prüfen. Modellregen, besonders Euler Regen führen durch die abrupt einsetzende Spitzenbelastung dazu dass Steuerzustände bei mittlerer Belastung übersprungen werden, somit nicht geprüft werden können.

Zur Steuerung:


Wehrsteuerung mit Timer003.png



Sensoren

Unter Sensoren gibt es Variablen die auf einen Initialwert vorbelegt werden und durch Regeln neu gesetzt werden können.

Wehrsteuerung mit Timer004.png


Hier verwendet um die gerade anstehende Position des Wehres abfragen zu können.

Wehrsteuerung mit Timer005.png


Hier verwendet um den Zeitpunkt an dem das Wehr beginnt sich abzusenken festzuhalten. Diese Variable wird in der Regel zum Absenken des Wehrs mit der aktuellen Simulationszeit belegt.

Wehrsteuerung mit Timer006.png


Hier verwendet um eine Verzögerungszeit in [s] festzulegen bevor eine weiterer Wehrabsenkung erfolgen kann.

Es gibt Kombi-Sensoren, der Wert wird aus 2 Sensoren die über Operatoren verknüpft sind ermittelt.

Wehrsteuerung mit Timer007.png


Hier wird in einem Kombisensor dem Zeitpunkt des Fahrbeginns des Wehres die Verzögerungszeit addiert.

Wehrsteuerung mit Timer008.png


Hier wird vom Zeitpunkt wenn das Wehr beginnt sich abzusenken + die der Zeit bevor eine weitere Absenkregel gültig werden kann die Simulationszeit abgezogen.

Der Sensor 1 liegt also um die Verzögerungszeit, gesehen vom Zeitpunkt des Beginns der Wehrabsenkung, in der Zukunft. Erreicht Sensor 2, die Simulationszeit, diesen Zeitpunkt wird der Stand_Timer (Kombisensor) negativ. Dies wird in den „Zustand“ Timer abgelaufen überführt und in einer Regel zur weiteren Wehrabsenkung abgefragt.

Im Sensor Zeit steht die Zeit in Sekunden seit Simulationsbeginn

Wehrsteuerung mit Timer009.png


Es gibt „normale Sensoren“ bezogen auf einen Schacht, eine Haltung oder eine Regenmessstation wie beispielsweise Wasserstand am Schacht, oder Durchfluss in einer Haltung.

Wehrsteuerung mit Timer010.png


Hier verwendet um am Schacht Neu020 den Wasserstand im Entlastungsbauwerk abfragen zu können. Achtung: Es handelt sich um den Wasserstand bezogen auf die Schachtsohle nicht um den Wasserspiegel in mNN

Zustände:

Durch Werteabfragen von Sensoren können Zustände im Kanalnetz abgefragt werden bzw. Modi der Steuerung ermittelt werden.

Wehrsteuerung mit Timer011.png


Steigt der Wasserspiegel im Entastungsbauwerk auf 2,05m ist der Zustand erreicht an dem das Wehr abgesenkt werden soll.

Wehrsteuerung mit Timer012.png


Unter Wehr_auf_0 bis Wehr_auf_3 wird in der Variablen „Wehrposition[V]“, über die Regel zur Absenkung, die aktuelle Wehrposition gespeichert. Initial steht der Wert auf 0

Wehrsteuerung mit Timer013.png


Um Schwingungen durch zu rasch wechselnde Zustände und dadurch ausgelöste Steuerbefehle zu vermeiden, wurde wie weiter oben beschrieben über Sensoren ein „Timer“ gestartet. Der Zustand „Timer abgelaufen“ gibt bei den Regeln dann eine weitere Absenkungsregel frei.


Wehrsteuerung mit Timer014.png


Sinkt der Wasserstand auf 1,5m kann das Wehr wieder in Ausgangsstellung hochgefahren werden.

Man könnte auch hier wieder ein stufenartiges Hochfahren steuern.

Stellgrößen:

Hier werden die zu steuernden Bauwerke festgelegt.

Wehrsteuerung mit Timer015.png


Als gesteuertes Bauwerk hier ein Sonderbauwerk Typ62 an dem die Wehrhöhe stufenweise abgesenkt werden soll.

Bei Art der Steuerung wurde hier „Wehr“ gewählt, möglich wäre auch Schieberstellung, Drosseleinstellung oder Pumpenleistung.

Für den Stellmodus, dem zeitliche Verlauf der Änderung, gibt es 3 mögliche Modi:
Ideal: der neue Wert stellt sich instantan ein

Wehrsteuerung mit Timer016.png


Standard: Es gibt eine Verzögerungszeit und eine Stellgeschwindigkeit

Wehrsteuerung mit Timer017.png


Über die Verzögerungszeit muss ein Zustand eine gewisse Dauer anliegen bevor der Stellvorgang ausgelöst wird. Dies kann verhindern dass kurze Spitzen an den Sensoren Stellvorgänge auslösen.

Sanftanlauf: neben der Stellgeschwindigkeit kann alternativ die Stellzeit gesetzt werden.

Wehrsteuerung mit Timer018.png



Welcher Stellmodus letztendlich zum Einsatz kommt wird erst in der Regel festgelegt. Im Stellgrößendialog am besten alle 3 Arten definieren.

Regeln:

Über Regeln werde die Stellgrößen und Variablen auf Grund von Zuständen neu gesetzt. Die vordefinierten Regeln werden von oben nach unten durchlaufen und sind, bezogen auf eine Stellgröße, nach Listeneintrag priorisiert.
Weiter oben stehende haben eine höhere Priorität als weiter unten stehende. Mit den Schaltflächen „Nach oben“ bzw. „Nach unten“ kann die Anordnung verändert werden.

Wehrsteuerung mit Timer019.png


Hier am Beispiel zur Wehrabsenkung, 2. Stufe

WENN: Wehr absenken wahr ist, das Wehr auf Stufe 1 steht und der Timer für die Absenkung von Stufe 0 auf Stufe eins abgelaufen ist
DANN: fahre das Wehr im Stellmodus „Standard“ auf 100,12 mNN
setze die Variable „Wehrposition“ auf 2
setze den Wert dar Variablen „Fahrbeginn_Wehr“ auf die aktuelle Simulationszeit damit über Zustände der Timer neu zu laufen beginnt.

Wehrsteuerung mit Timer020.png


Zum Editieren eines Eintrages einen Doppelklick auf den bestehenden Eintrag

Wehrsteuerung mit Timer021.png


Werte anpassen und mit Hinzufügen wieder in die Liste übernehmen. Hier wird der Wert und der Stellmodus einer Stellgröße festgelegt.

Wird der Dialog der Steuerungsvariante mit OK geschlossen erfolgt eine Konsistenzprüfung.

Wehrsteuerung mit Timer022.png


Es können nur DYNA-Hydraulikvariante mit Control gesteuert werden. Dazu auf dem TAB Transport die gewünschte Steuerungsvariante auswählen. Es ist empfohlen, gerade in der Testphase der Steuerung, die Logdatei zu erstellen. Dabei wird er gesamte Steuerungsverlauf protokolliert und kann nachträglich ausgewertet werden.

Wehrsteuerung mit Timer023.png


Gibt es viele voneinander unabhängige gesteuerte Bauwerke empfiehlt es sich dafür eigene Steuerungsvarianten zu erstellen. Die Regeln sind dann übersichtlicher und leichter zu prüfen.

Über das Erstellen einer einhüllenden Steuerungsvariante können diese zusammengefügt und einer Hydraulikvariante zugewiesen werden. Das Anzeigen der entstandenen Kombivariante sowie ein Export ist hier ebenfalls möglich.


Wehrsteuerung mit Timer024.png


Prüfen der Steuerung:

Neben den in ++SYSTEMS standardmässig abrufbaren Ganglinen an Bauwerken liefert ++SYSTEMS ein Script für das open source Programm R mit um aus den Control Protokolldateien PDF Plots zu erstellen.

Dazu muss das Programm R installiert werden, zusätzlich Ghostscript und ein PDF Viewer. Zur Installation von R gibt es unter: Auswertung Messstellen mit R – Dokumentation unter wiki.tandler.com eine Anleitung.

Wehrsteuerung mit Timer025.png


Diese beiden Dateien liegen nach der Installation ++SYSTEMS im „bin-Ordner“ und werden bei Berechnungsstart DYNA in den Berechnungsordner kopiert. Visualize.R ist das R-Script zum erstellen der PDF Plots. In visualize.bat erfolgt eine Windows Pfaderweiterung um das Programm R sowie Ghostscript und PDF Viewer zu finden um danach das Programm R mit dem Script zu starten. Diese Batchdatei muss, im bin-Verzeichnis, bei anderen Installationspfaden der Zusatzprogramme angepasst werden.

Wehrsteuerung mit Timer026.png


Nach ausführen der Batch Datei entstehen im Ordner der Hydraulikvariante die PDF Plots.

Wehrsteuerung mit Timer027.png


Diese können nun per Doppelklick über den Dateiexplorer geöffnet werden oder im Dialog der Steuerungsvariante per Rechtsklick auf einen Sensor oder eine Stellgröße angezeigt werden.

Wehrsteuerung mit Timer028.png


Wehrsteuerung mit Timer029.png