Forums Neueste Beiträge
 

Dynamische Systeme in Python modellieren

18/09/2009 - 11:26 von Florian Lindner | Report spam
Hallo,

ich bin momentan daran eine Anwendung zu entwickeln, die ein dynamisches
System abbilden soll. Wobei die Bezeichnung "dynamisch" erstmal nicht
wirklich korrekt ist. (da ich erstmal vor allem an stationàren
Endzustànden interessiert bin)

Das System besteht aus Komponenten (Blöcken) mit definierten Ein- und
Ausgàngen, die mit anderen Komponenten (Serienkopplung) oder auch mit
sich selber (Rückkopplung) verbunden sind. Das Verhalten der Komponenten
ist nur abhàngig von den Eingangsgrößen, also keine Funktion der Zeit.

Ein Beispiel:
Eine Gasturbine besteht aus Verdichter, Brennkammer und Turbine.
Verdichter und Turbine sind auf einer Welle, die Turbine liefert die
Leistung um den Verdichter anzutreiben. Der Verdichter liefert (abhàngig
von seiner Leistung) komprimierte Luft, die die Turbine antreibt, die
wiederum abhàngig davon unterschiedliche Leistungen zur Verfügung stellt.
Verdichter zu Turbine ist also eine Kopplung über die komprimierte Luft
und Turbine zu Verdichter eine Kopplung über die Welle.

Irgendwo wird sich nun ein Gleichgewichtszzustand einstellen, das System
ist stationàr. Leider habe ich den Zusammenhang nicht analytisch
gegeben, muss ihn also iterativ finden.

Wie ist sowas programmiere bereitet mir noch etwas Kopfzerbrechen. Ich
suche Tipps oder Hinweise auf Artikel (deutsch oder englisch) die auf so
Probleme etwas eingehen. Am Ende soll es natürlich in Python
implementiert werden, aber ich denke, das Prinzip ist für alle Sprachen
àhnlich.

Danke,

Florian
 

Lesen sie die antworten

#1 Thomas Rachel
18/09/2009 - 19:13 | Warnen spam
Florian Lindner schrieb:

Das System besteht aus Komponenten (Blöcken) mit definierten Ein- und
Ausgàngen, die mit anderen Komponenten (Serienkopplung) oder auch mit
sich selber (Rückkopplung) verbunden sind. Das Verhalten der Komponenten
ist nur abhàngig von den Eingangsgrößen, also keine Funktion der Zeit.



Das klingt für mich wie eine Art LTI(linear time-invariant)-System, kann
das sein?


Irgendwo wird sich nun ein Gleichgewichtszzustand einstellen, das System
ist stationàr. Leider habe ich den Zusammenhang nicht analytisch
gegeben, muss ihn also iterativ finden.



ach so. D.h., falls Du irgendwo differentelle Zusammenhànge hast (wie
etwa Zeit/Geschwindigkeit etc., ist das nicht als DGL gegeben, sondern
als "direkter" Zusammenhang, abhàngig vom alten Zustand?

Literaturhinweise hab ich da keine, aber ich würde da ungefàhr so vorgehen:

* Klassen für die Subsysteme (Regler, Strecke, ...) mit einheitliches
Interface definieren (am einfachsten wohl einfach __call__
implementieren)

* Zustandsklasse definieren (entweder was NumPy-màßiges oder eine eigene
Klasse, die Operatoren wie +,-,* definiert)


Dann kannst Du einen einfachen Regelkreis etwa so aufbauen:


setv # Sollwert - evtl. auch als Funktion, falls er variabel sein soll
out=0 # oder (0,) oder (0,0) oder wie auch immer
R1=System1(...) # Regler
R2=System2(...) # Strecke

while True: # ggf. Abbruchbedingng
out=R2(R1(setv-out)))
print out # oder sonstwas mit machen


Am Ende soll es natürlich in Python
implementiert werden, aber ich denke, das Prinzip ist für alle Sprachen
àhnlich.




Ja, wobei ich es mir in C etwas schwieriger vorstelle als in Python...


Thomas

Ähnliche fragen