39
Kombinierte Simulation !"#"$% "& ’ ( ) Kombiniert diskret- kontinuierliche Simulation

PowerPoint - 06-1-HybrideSimulation

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ��������������� �!�"#� �"$%��"�&

�������'������(�������)

Kombiniert diskret-kontinuierliche Simulation

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *�������������� �!�"#� �"$%��"�&

�������'������(�������)

Kombiniert diskret-kontinuierliche Simulation

• kontinuierliches Verhalten spezifiziert mittels Differentialsystemen

• ereignisorientiertes Verhalten spezifiziert mittels diskreter

Ereignissysteme

• Kopplung von diskretem und kontinuierlichem Teil

– Veränderungen in den kontinuierlichen Zustandsvariablen lösen

Ereignisse aus

– sprunghafte Zustandsänderungen, bzw. Unstetigkeiten der

kontinuierlichen Variablen durch Ereignisse

DifferentialsystemeDiskrete Ereignissysteme

state1 state2

state3event2

Auslösen von

Ereignissen

diskrete

Veränderungen

event1

event3

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� +�������������� �!�"#� �"$%��"�&

�������'������(�������)

Zustandsereignisse (state events)

• Wesentlich bei der kombinierten Simulation sind die sogenannteZustandsereignisse

• Das sind Ereignisse, die aufgrund von Bedingungen spezifiziert für kontinuierliche Werte auftreten

• Beispiele:

– Erreichen von Schwellwerten

– Treffen von zwei Zustandsvariablen (Kollision)

– Ein/Austreten einer Zustandsvariablen in einen Bereich

state event

q

threshold

t T

threshold reached

discrete change

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,�������������� �!�"#� �"$%��"�&

�������'������(�������)

Diskrete Reaktionen bei Zustandsereignissen

• Zustand wird sprunghaft verändert

• (kontinuierliche) Dynamik ändert sich grundlegend, d.h. System hat andere Gleichungen und zeigt anderes Verhalten

• diskrete Reaktion eines Steuerungsalgorithmus

Anwendungen

• bei der kontinuierlichen Simulation allgemein:

– jede Änderung im Prozeßverlauf

– Phasenübergänge

• Anwendung Automatisierungstechnik (hybride Systeme):

– diskrete Steuerung und Regelung kontinuierlicher Systeme

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -�������������� �!�"#� �"$%��"�&

�������'������(�������)

Beispiel „Bouncing Ball“

10

Q = {(x, v) | x, v ∈ ℜ}}

Kontinuierlicher Teil

dx / dt = v

dv / dt = -d*v / m - g

Diskreter Teil

if (x <= 0) then

v = -v * 0.8

• freier Fall modelliert mittels einer Differentialgleichung

• Aufprall modelliert durch ein diskretes Ereignis, bei dem die Geschwindigkeit reduziert und umgekehrt wird

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� .�������������� �!�"#� �"$%��"�&

�������'������(�������)

Beispiel „Wassertank“

Ein Modell eines einfachen Wassertanks mit Zufluss und Abfluss hat mehrere Ereignisse und unterschiedliche Verhaltensmuster

– normales Verhalten: Veränderung ergibt sich aus Zufluss minus Abfluss

dq / dt = inflow – outflow

– Überlauf: trotz Zufluss wird der Füllstand nicht verändert

dq / dt = min(0, inflow – outflow)

– Tank leer und Zufluss ist gleich dem Abfluss: Füllstand darf nicht unter 0 sinken

dq / dt = max(0, inflow – outflow)

full

empty

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� /�������������� �!�"#� �"$%��"�&

�������'������(�������)

Beispiel „Wassertank“: Modell

• Partition des Zustandsraums in einzelne Bereiche

• Phasenübergänge bei den einzelnen Bereichen durch Ereignisse

empty sensor

full sensor

overflow level

0 level

level

overflow phase

full phase

between phase

empty phase

zero phase

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� 0�������������� �!�"#� �"$%��"�&

�������'������(�������)

Modellierung mit Zustandsdiagrammen

• Phasen und Phasenübergängen bei Ereignissen lassen sich sehr gut mit Zustandsdiagrammen darstellen

• mit den Zuständen verbindet man unterschiedliches kontinuierliches Verhalten

d(level)/dt = min(0, inflow – outflow)

d(level)/dt = inflow – outflow

d(level)/dt = max(0, inflow – outflow)

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� �-�������������� �!�"#� �"$%��"�&

�������'������(�������)

Zustandsdiagramme für Steuerungszyklen

• Zustandsdiagramme können sehr gut für Steuerungszyklen verwendetwerden

– erhalten Ereignisse, z.B. Sensormeldungen, vom System

– erhalten Kommandos vom übergeordneten System

– modellieren den gewünschten Steuerungszyklus als Zustandsdiagramm

System Steuerung

Sensorsignale

Übergeord. Leitsystem

Kommandos

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� �.�������������� �!�"#� �"$%��"�&

�������'������(�������)

Beispiel „Solarheizung“

• Solarenergie wird in einem Kollektor gewonnen

• und in einem Speichertank gespeichert

• aus dem Speichertank wird Wärme entnommen, um das Haus zu heizen

• der Speichertank ist hierarchisch organisiert

– 3 Ventile auf der Kollektorseite können warmes Wasser in 3 unterschiedliche Schichten

einleiten

– 3 Ventile auf der Heizungsseite können warmes Wasser aus 3 unterschiedlichen

Schichten entnehmen

• Die Speicherstrategie ist so, daß

– immer in die möglichst oberste (wärmste) Schicht eingeleitet wird und

– immer aus der möglichst untersten (kältesten) Schicht entnommen wird

heating- control

collector- control

collector

storage-tankhouse

layer-1

layer-2

layer-3

collector-pump

heating-pump

layer_3

layer_2

layer_1

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� �/�������������� �!�"#� �"$%��"�&

�������'������(�������)

Beispiel „Solarhaus“: Heating-control

[house_temp < on_temp && temp(3) >= heating_temp]/current_layer = optimal_heating_layer();valve(current_layer).open();pump.on();

idle

sub_heatingheating [temp(3) > heating_temp]

[current_layer == 3 && temp(3) < heating_temp)]

[current_layer < 3 &&temp(current_layer) < heating_temp]/

valve(current_layer).close();current_layer = current_layer + 1;

valve(current_layer).open();

[house_temp > off_temp ]/valve(current_layer).close();current_layer = 0;pump.off();

[temp(3) < house_temp + min_diff]/valve(current_layer).close();

current_layer = 0;pump.off();

Continue heatingwith next higher layer

Start heating withlowest layer possible

Stop heating because warm enough

Not enough heat in storageto heat normally

enough heat in storageto heat normally

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� �1�������������� �!�"#� �"$%��"�&

�������'������(�������)

Simulation von kombinierten Systemen

• kontinuierliche Simulation von Ereignis zu Ereignis

• Erkennung von Zustandsereignissen während der numerischen Integration

• Ausführen der Ereignisse

Erkennung von Zustandsereignissen:

• Umformung der Bedingungen auf Nulldurchgänge (z.B.: x >= 10 ----> x - 10 >= 0)

• Erkennen der Nulldurchgänge bei der Integration

• Approximationsverfahren zum Auffinden der genauen Zeit des Zustandsereignisses

– Bisection-Methode: Sukzessive Halbierung des Integrationsintervalls und Test in welcher Hälfte der Nulldurchgang liegt

– Regula Falsi: Legen einer Geraden durch die zwei Integrationsstützpunkte

ti ti + h

Integrationsschritte

Bisection-Methode

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *2�������������� �!�"#� �"$%��"�&

�������'������(�������)

Kombiniert diskret-kontinuierliche Simulation mit SIMULINK

• SIMULINK bietete eine Reihe von Bausteinen für kombinierte Simulation

– Erkennen von Ereignissen

– Generieren von Signalen

– Verarbeiten von Signalen

– Rücksetzen von Zuständen

– ...

• SIMULINK bietet auch eine Erweiterung für die Modellierung von Zustandsdiagrammen

� Stateflow

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *��������������� �!�"#� �"$%��"�&

�������'������(�������)

Ereignisse in SIMULINK

Unterschiedliche Bausteine in SIMULINK erlauben die Modellierung von diskreten Ereignissen:

– Relational Operators

• vergleichen reelle Werte und liefern {0, 1}

• Genauigkeit auf Schrittweite begrenzt

– Hit-Crossing:

• triggert wenn Input einen eingestellten Wert passiert

• zur möglichst genauen Näherung an Ereigniszeitpunkt

• Ausgabe ist ein Boolscher Wert, der anzeigt, ob der Input über oder unter dem Wert liegt

– Backlash:

• modelliert ein System mit Spiel

• bei Vorzeichenwechsel des Inputs wird der neue Input um ein gewisse Zeit verzögert

– ...

<=

Input

Output

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� **�������������� �!�"#� �"$%��"�&

�������'������(�������)

SIMULINK: Logische Operatoren und Schalter

• Logical Operator

• Combinatorial Logic

• Switch Block

– Switch

– Manual Switch

– MultiSwitch

Switch

OutputControl

if control >= threshold

if control < threshold

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *+�������������� �!�"#� �"$%��"�&

�������'������(�������)

SIMULINK: Reset und weitere Optionen beim Integrator

• Der Integrator-Baustein kennt mehrere wichtige nicht-lineare Optionen

– Grenzwerte (Saturation level)

– Port für den Initialwert (Zusammen mit IC-Block

– Port für Reset

IC

Reset

Initial

Output

Saturation

1s

State

[1]

Input

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *,�������������� �!�"#� �"$%��"�&

�������'������(�������)

Bouncing Ball in SIMULINK

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *0�������������� �!�"#� �"$%��"�&

�������'������(�������)

Diskrete und kombinierte Simulation in AnyLogic

• AnyLogic ist ein Simulationssystem für „hybride“ (= kombinierte) Systeme

• Verbindet

– Differentialsysteme und

– diskrete, ereignisorientierte Zustandsautomaten

• basiert auf UML-RT

– Strukturdiagramme

– Statecharts

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� *1�������������� �!�"#� �"$%��"�&

�������'������(�������)

UML-RT

• Erweiterung von UML für Real Time

• ursprünglich definiert in der Modellierungssprache ROOM

• UML Dynamikmodellierung

– Statecharts definieren Ereignisverhalten

+ Formalismus für Strukturdiagramme

– Capsules stellen Komponenten mit Schnittstellen dar

– Subcapsule sind enthaltene Komponenten

– Ports sind Schnittstellen über die Messages (Signale) fließen

– Connectors verbinden Ports und definieren den Signalfluss

– Protocols definieren eine bestimmte Form von Ereigniskommunikation; ähnlich Patterns

– Protocol Roles definieren die Input/Outputschnittstellen von in Protokollen beteiligten Komponenten

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� +2�������������� �!�"#� �"$%��"�&

�������'������(�������)

UML-RT Capsules, Ports, and Connectors

«capsule»

y:CapuleClassC«capsule»

c:CapuleClassC

CapsuleClassA

«capsule»

b:CapuleClassB

{plugin}

5

c[0..4]:PortC

b:PortC~a:PortA

a2:PortA2

a1:PortA1

capsuleport

conjugate port

state machine

sub-

capsule connection multiplicity

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� +-�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Modellierung

Aufbau von Systemen aus

– Active Models

– Ports

– Variables (kontinuierlich)

– Connectors

– Statecharts

– Event Objects

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� +.�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Strukturelemente

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� +/�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Message Passing

• Message Passing in AnyLogic passiert mittels

– Ports: Message-Schnittstellen

• können Messages empfangen (���������)

• und verschicken (����)

– Connectors: Message-Kopplungen

• bidirektionale Message-Channels

• Broadcast an alle Connectors

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� +0�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Verhalten von Ports

� �������������������� Verschicken einer Message

� ���������������������������������������� Empfangen einer Nachricht

� �� �� �� �������������� wird aufgerufen bei Senden

� ������� ������� ������� ����������� wird aufgerufen bei Empfang

Ports können eine Queue haben:

� ������������������������ Entnahme der nächsten Message

� ���������������������������� Lesen der nächsten Message

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,*�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts

AnyLogic StateCharts erlauben

• hierarchische Zustandsdiagramme

• Transitions mit unterschiedlichen Triggers

– Message an Port

– Zustandsbedingung

– Zeitspanne

– erzeugtes Ereignis

• beliebiger Java-Anweisungen als Aktionen

– Senden von Messages

– Aufbauen/Lösen von Kopplungen

– ...

• Zustände definieren Gleichungen (Equations)

– gelten nur solange man sich im Zustand befindet

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,+�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statechart-Diagramme

CompositeState

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,,�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: States und Nodes

• Initial State Pointer: zeigt den Anfangszustand an

• Final State: Endzustand ohne weitere Transition

• State: ein Zustand

• Composite State: Zusammenfassung mehrere Zustände

• Branch: Verzweigung

• Shallow history state: Es wird beim zuletzt verlassenen Zustand in diesem Composite State fortgesetzt

• Deep history state: Es wird beim zuletzt verlassenen Zustand in diesem Composite State fortgesetzt, wobei hier in die Tiefe der Zustände gegangen wird (siehe Folie „Verhalten History States“)

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,-�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Verhalten Composite State

• Composite States sind Vereinigungen von Zuständen

• Für unten dargestellten Diagramm ergibt sich folgendes Verhalten

– der Composite State vereint Zustände A und B

– wird der Composite State betreten, wird der Anfangszustand A betreten

– sowohl bei A als auch bei B können Transition 1 und 2 triggern

– bei Transition 1 ist der Folgezustand A

– die internal transition bewirkt keine Änderung des Zustands (nur Ereignis)

Transition 1

Transition 2

Transition 3

A

B

C

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,.�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Verhalten History State

• Bei einem History state wird der zuletzt verlassene Zustand wieder betreten; dabei wird nicht in die Tiefe gegangen, d.h. wurde einComposite state verlassen wird dieser über den Initial state betreten.

• Beim Deep history state wird zusätzlich in die Tiefe gegangen und der zuletzt verlassene einfache Zustand wieder betreten

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,/�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Transitions

Transitions haben 3 wesentliche Teile

• Trigger: spezifiziert das Ereignis, bei dem die Transition schalten soll

• Guard: eine zusätzliche Bedingung, die eine Transition erlaubt oder verhindert

• Action: Sequenz von Java-Anweisungen

Arten von Trigger:

• Zustandsereignis: Zustandsbedingung an kontinuierliche Werte

• Inputereignis: Port oder Message von Port

• Zeitereignis: Zeitspanne bis Transition triggern soll

• Dynamisches Ereignis: Ereignisobjekt

– durch Methode �������� generiertes Objekt

– oder Message-Objekt von einem gekoppelten Port

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,0�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Trigger

• Inputereignis • Zustandsereignis

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� ,1�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Trigger (2)

• Zeitereignis: Zeitspanne bis Transition triggern soll

– konstanter Wert,. Bsp.: 2.56

– oder Zufallsverteilung, welche eine zufällige Zeitspanne liefern sollBsp.: ���������� ��

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -2�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Trigger (3)

• Dynamisches Ereignis:

– Ereignisobjekt erzeugt durch fireEventoder Message-Objekt von einem gekoppelten Port

– Vergleich mit Objekt im Trigger der Transition

• entweder gleiches Objekt (Vergleich über equals)

• oder gleiche Klasse

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -��������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Actions bei Transitions

• Senden von Messages:

– Aufruf von ���� bei einem Port

� ������� ���������� ��!�"��!��"��#�

• Konsumieren von Messages:

– Aufruf von ����� bei einem Port mit Queue

• Feuern von dynamischen Ereignissen:

– Aufruf von ����������

� ����������������� $!������%&%��#�

• Kopplungen aufbauen und lösen

– Aufruf von � ���� ���� ���� ����������� bzw. ��� ������ ������ ������ ����������� bei Ports und Variablen

– Bsp.: � ����� ���� ����� ��'�� ���#

• jede andere Java-Anweisung

– z.B.: Setzen von Variablen

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -*�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Statecharts: Actions und Equations bei States

• Actions

– Entry action: Folge von Anweisungen ausgeführt bei Betreten des Zustandes

– Exit action: Folge von Anweisungen ausgeführt bei Betreten des Zustandes

• Equations

– Differential equations

– Formulas

– Algebraic equations

aktiv, wenn man sich im Zustand befindet !!!!

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -+�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Beispiel: Tank mit einfacher Steuerung

Es wird ein Tank modelliert mit einer Steuerung, die den Tank in einem Zyklus füllt und wieder entleert

– Strukturdiagramm

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -,�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Beispiel: Tank mit einfacher Steuerung

Tank

Controller

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� --�������������� �!�"#� �"$%��"�&

�������'������(�������)

AnyLogic Beispiel: Tank mit einfacher Steuerung

Simulationslauf

Ko

mb

inie

rte

Sim

ula

tio

n

����������������� ������������������� ��������� -.�������������� �!�"#� �"$%��"�&

�������'������(�������)

Zusammenfassung Kombinierte Simulation

• Modellierung von kontinuierlichem Verhalten mittels Differentialgleichungen

– funktionale Modellierung

• Modellierung von ereignisorientiertem Verhalten mittels ereignisorientierter Formalismen

– Zustandsereignisse

– Unstetigkeiten

– Zustandsautomaten

• Multimodelle:

– Differentialgleichungen ändern sich mit den diskreten Zuständen

• Hybride Systeme:

– kontinuierliche Systeme

– disrete, ereignisorientierte Steuerungen