Die Temperaturregelung als Beispiel zur Anwendung von UML-RT

Download Report

Transcript Die Temperaturregelung als Beispiel zur Anwendung von UML-RT

Regelungstechnik
und
UML
-fächerübergreifend
Munz- FTE - Lörrach
Überblick
• Problembeschreibung allgemein
• Beschreibung des Use-Cases mit Text,
Anlagenschema, Blockschaltbild
• Übergang zum Entwurf
• Entwurf mit UML-RT
• Implementierung
• Testen
Use Case Modell für eine Wohnungsautomatisierung
Thermoelement
Temperaturregelung
Ventil
Bewohner
Lichtregelung
Alarmanlage
Beschreibung der Regelung
•
•
Die Raumtemperatur von Wohnzimmer und Schlafzimmer wird ständig
gemessen. Ist sie kleiner als die gewünschte Raumtemperatur, dann
wird geheizt.
Die gewünschte Raumtemperatur wird über einen Computer mit
Bildschirm und Tastatur eingegeben.
Temperaturfühler
gewünschte
Wohnraumtemperatur
gewünschte
Schlafraumtemperatur
Wohnzimmerfenster
Ventil
Heizung
Wohnraum
Temperaturfühler
Ventil
Heizung
Schlafzimmerfenster
Schlafraum
raum
Blockschaltplan
Störgröße
Führungs größengeber
Außentem peratur
Wärmezufuhr
Solltem peratur
+
Regler
-
Temperaturdifferenz
Stellglied
Reglerausgangs größe
erfasste Raumtem peratur
Heizungsventil
Raumtem peratur
Regelstrecke
Luft im Raum
Messwert geber
Temperaturfühler
Thermoelement
Bewohner
Temperaturregelung
Ventil
Entwurf eines Kollaborationsdiagramms
co laborare – zusammen arbeiten
/ sollwertgeber
: Sollwertgeber
+ / schlafzimmer
/ wohnzimmerfenster
: Fenster
+ / wohnzimmer
+ / raumPort
+ / sollwertPort~
+ / fensterPort~
+ / regler Port~
+ / heizungsPort~
/ wohnzimmerregler
/ wohnzimmerventil
: Temperaturregler + / ventilPort
/ wohnzimmer
: Heizungsventil
+ / raumPort
: Raum
+ / raumPort
+ / temperaturfuehlerPort~
/ schlafzimmerfenster
: Fenster
+ / raumPort
+ / sollwertPort~
/ schlafzimmerregler
: Temperaturregler
+ / raumPort
+ / fenster Port~
+ / reglerPort~ / schlafzimmerventil + / raumPort
: Heizungsventil
+ / ventilPort
+ / heizungsPort~
/ schlafzimmer
: Raum
+ / temperaturfuehlerPort~
Entwurf von Sequenzdiagrammen (1)
Wohnraumregler
Wohnraumventil
Regeldifferenz <= -1
geschlossen
Wohnraum
Wohnraumfenster
1: Messung
offen
1.1:
1: Waermeentzug
2: Messung
2.1:
schließen
geschlossen
Regeldifferenz >= 1
3: oeffnen
offen
4: waermezufuhr
4: Messung
4.1:
5: waermezufuhr
5: Messung
5.1:
Regeldifferenz<= -1
6: schließen
geschlossen
Sequenzdiagramm für Sollwertänderung
/ bewohnerR1 Sollwertgeber / Temperaturwuensche
: Bewohner
: Sollwertgeber
Wohnraumregler / Wohnraumregler
: Temperaturregler
Wohnraumventil /
heizungsventilR1
: Heizungsventil
Regeldifferenz<=-1
Wohnraum / Wohnraum
: Raum
geschlossen
1: Sollwerteingabe
2: Sollwerterhoehung : NeuerSollwert
Regeldifferenz>=1
3: oeffnen : Oeffnen
offen
4: waermezufuhr : Waermezufuhr
4: Messung : Messwertanforderung
4.1: : Messwert
5: waermezufuhr : Waermezufuhr
5: Messung : Messwertanforderung
5.1: : Messwert
Regeldifferenz<=-1
6: schließen : Schliessen
geschlossen
7: Messung : Messwertanforderung
7.1: : Messwert
2: Sollwerteingabe
8: Messung : Messwertanforderung
8.1: : Messwert
3: : NeuerSollwert
4: Messung : Messwertanforderung
4.1: : Messwert
5: Messung : Messwertanforderung
5.1: : Messwert
Entwurf von Capsule-Klassen
• aufgrund von Ähnlichkeiten der Objekte in
den Kollaborations- und Sequenzdiagrammen
<<Capsule>>
Heizungsventil
<<Capsule>>
Temperaturregler
/ wohnzimmerventil
/ schlafzimmerventil
<<Capsule
Fenster
/ schlafzimmerfenster
/ wohnzimmerfenster
/ wohnzimmerregler
/ schlafzimmerregler
/ wohnzimmer
<<Capsule>>
Sollwertgeber
/ sollwertgeberR1
<<Capsule>
Wohnung
/ schlafzimmer
<<Capsule
Raum
Entwurf von Protokollen
• entsprechend der ausgetauschten
Nachrichten in den Sequenzdiagrammen
• Protokolle können auch durch Statecharts
beschrieben werden
Entwurf von State-Charts für die Capsule-Klassen
• hierarchisches Statechart zur
Temperaturregelung:
Initial
Regeldifferenz_ok
OK
zu_kalt
Regeldifferenz_zu_gross
Initial
Regeldifferenz_ok
Initial
Regeldifferenz_ok
Initial
False
in_OK
True
NeuerMesswert
NeuerSollwert
Vergleich
Vergleich
NeuerMesswert
True
Regeldifferenz_zu_gross
NeuerSollwert
Regeldifferenz_zu_gross
False
in_zu_kalt
Einbinden der Real-Time Service Library
• als Action Language wird C++ verwendet
Transition Name
Initial
Regeldifferenz_ok
Regeldifferenz_zu_klein
Triggers
keiner
Action
startet einen periodischen Zeitgeber, der jede Sekunde
einen timeout schickt
keiner (Kettentransition siehe
Unterzustand)
keiner (Kettentransition siehe
Unterzustand)
timer.informEvery(RTTimespec(1,0));
sendet die Nachricht Schliessen über den ventilPort
ventilPort.Schliessen().send();
sendet die Nachricht Oeffnen über den ventilPort
ventilPort.Oeffnen().send();
Initial
OK
Regeldifferenz_ok
Regeldifferenz_zu_gross
zu_kalt
Zusammenfassung und Punkte zur Diskussion
• Klassische Betrachtungsweisen
(Technologieschemata, Blockschaltpläne) sind
sehr hilfreich und können die UML ergänzen.
• Hatten wir auf den unterschiedlichen
Entwicklungs-stufen einen einheitlichen
Objektbegriff?
– Anforderungen: Use Case, Actor, Blöcke, reale Welt
– Entwurf: Klasse, Capsule, Protocol
– Implementierung: C++
• Implementierungsrandbedingungen?
– Art der Schnittstellen zu Benutzer, Sensor, Aktor
• Echtzeiteigenschaften?