Systeme mit State-Events
- Eigenschaften hybrider Systeme:
- haben kontinuierliche Zustandsgrößen sowie diskrete
Events (und evtl. diskrete Zustandsgrößen)
- große Vielfalt
- kontinuierliche Systeme mit Unstetigkeiten (Bsp.
Hüpfender Ball)
- diskrete Umschaltung zwischen kontinuierlichen
Systemen (Bsp. Fadenpendel mit Freiflug-Phase)
- diskrete Systeme mit kontinuierlichen Subsystemen
(Bsp. Muffelofen)
- Simulation schwierig (vgl. Argesim-Benchmark C21 [20])
- meist Kombination verschiedener Methoden
- Ansätze häufig ausgehend von DGLs oder ausgehend
von Ereignissteuerung
- Mathematische Beschreibungsmethoden:
- sehr verschiedene Ansätze je nach Ausgangspunkt
- bisher kein allgemein verbreitetes universelles
Hybrid-Modell
- Hybrid DAEs [21]
- Ausgangspunkt kontinuierlich (DAEs)
- Einführen verschiedener Klassen von Ereignissen [20]
- Details je nach möglichen Event-Typen
unterschiedlich
- DEV&DESS [L8]
- Kombination von DEVS und DESS ("Differential
Equation System Specification")
- DESS = einfache Zustandsraum-Beschreibung von
DGLs incl. Eingangs- und Ausgangsgrößen
- Kopplung zwischen DEVS- und DESS-Größen
- DEVS mit QSS ("Quantized State Systems") [L8]
- Idee: DGLs müssen zur Simulation sowieso
diskretisiert werden
- statt der Zeit werden hier die Zustände der DGLs
diskretisiert
- damit wird DGL-Anteil durch DEVS beschrieben
- entsprechende QSS-DGL-Solver wurden entwickelt
- Beispiel "hüpfender Ball":
- System
- Ball fällt senkrecht herunter
- prallt am Boden ab, verliert dabei Energie
- Modell
- DGL zur Beschreibung des Falls
- Abprall als instantan vereinfacht
- Höhe wird 0 → v ändert sein Vorzeichen, sein
Betrag nimmt um festen Faktor ab
- grundsätzlich kontinuierliche Zustandsgrößen, aber
zusätzliche Events
- Zeitpunkt der Events nicht vorher bekannt
- Zustände ändern sich bei Event (ggf. unstetig)
- State-Change Event SE-X in Nomenklatur von [20]
- DGL-Solver mit Events:
- Solver bekommt Funktion h(t,y) zur Event-Definition
(zusätzlich zu f(t,y))
- Event = "h wird 0"
- Solver führt Schritt durch und prüft, ob Vorzeichen
von h wechselt
- nein → nächster Schritt wird berechnet
- falls ja
- genauer Zeitpunkt tE des Events wird
bestimmt (z. B. durch Newton-Verfahren)
- Solver löst DGL bis tE und stoppt
- Zustandsgrößen können geändert werden
- Solver wird von tE an neu gestartet
- Implementierung in Simulink mit Integrator-Block:
- Parameter
- Beschränkung des Ergebnis-Bereichs (saturation
limits)
- optionales Signal bei Überschreiten und Verlassen
der Grenzwerte (saturation port)
- Eingangssignal zum Zurücksetzen auf Anfangswerte (external reset)
- Eingangssignal zur externen Festlegung der
Anfangsbedingung (initial condition source
= external)
- Modell huepfballA:
- Aufbau
- Funktionsweise
- x-Integrator ist eingeschränkt auf [0, Inf]
- saturation port liefert
negatives Triggersignal bei Erreichen von x = 0
- v-Integrator wird dadurch auf Anfangswert
zurückgesetzt
- Anfangswert ist -0.9*aktueller Wert
- Ergebnis:
- hüpft nicht, sondern bleibt liegen
- Ursache: algebraischer Schleife bei v
- Modell huepfballB:
- Abhilfe: state port = Integrator-Ausgang zur Zeit t,
vor dem Reset
- durchbricht algebraische Schleife
- Aufbau
- zusätzliches v0 durch Initial
Condition-Block
- Ergebnis: funktioniert
- interessanter Effekt
- zero-crossing detection
bei beiden Integratoren ausschalten
- Ursache: Solver bekommt keine Event-Funktion mehr
- Zenon-Effekt:
- Modell huepfballB bis t=50
laufen lassen → Fehlermeldung
- At time 43.997112102528291,
simulation hits (1000) consecutive zero crossings.
- Ursache: unendliche viele Hüpfer in endlicher Zeit (Zenon-Effekt)
- Abhilfe: Solver-Parameter
Zero-crossing options/Algorithm auf Adaptive
- Ergebnis von Modell huepfballC
- alternativ Memory-Block
statt state port → klappt ohne "Zacke" auch bei
Algorithm auf Non-adaptive (huepfballD)
- genauere Untersuchung nötig (vgl. [20])