Title: A2.6: Software/ Algorithmus zur Implementierung eines Zweipunktreglers (30min)
Course: LF07 - Cyber-physische Systeme ergänzen - FI/ITSE - Raspberry Pi > Section: LS7.2: Raumklima temperaturgeführt regeln

Infothek Software/ Algorithmus zur Implementierung eines Zweipunktreglers

Auf Ihrer Suche nach einem Code zur Realisierung Ihres Zweipunktreglers finden Sie mit den Suchwörtern "zweipunktregler python" einen Pythonquellcode für einen Zweipunktregler mit Hysterese. Hysterese bedeutet, dass der Einschaltpunkt der Kühlung eine andere Temperatur ist, als die, bei der die Kühlung ausgeschaltet wird. Dieses Verhalten ist im Zustandsdiagramm rechts

dargestellt. Wenn man der Richtung der roten Pfeile folgt, ist das Verhalten des Reglers zu verstehen. Auf der Ordinate (y-Achse) ist der Ausgangszustand des Reglers dargestellt, auf der Abszisse (x-Achse) die Raumtemperatur.

Sie müssten dann Antworten auf diese Frage geben können: Welchen Zustand hat der Reglerausgang bei einer Raumtemperatur von 30°C, wenn die untere Solltemperatur 25°C beträgt und die Hysterese 7 Kelvin? Welche Information fehlt bei dieser Frage?

Die Führungsgröße w, also hier die untere Solltemperatur und die Hysterese können entweder auch als Topics in der Cloud oder lokal zum Beispiel in einer Konfigurationsdatei gespeichert werden. (Infos dazu unter https://wiki.python.org/moin/ConfigParserExamples)

Rechts die UML-Darstellung der Klasse Controller

```

class Controller():

    def __init__(self, cloud, fan):

        self.__cloud=cloud # Konfigurationen und Werte

        self.__fan=fan # Der Aktor für den Zweipunktregler

        self.__splow=self.__cloud.get_setpointTemp() # untere Grenze

        self.__hyst=self.__cloud.get_hyst() #Hysterese speichern

        self.__sphigh=self.__splow+self.__hyst # obere Grenze

    def control(self):

        # Vergleich Ist- und Solltemperatur und Kühlung ansteuern

        # hier ist der Regler als Zweipunktregler mit Hysterese implementiert

        temperature = self.__cloud.get_roomTemp() # Aktuelle Temperatur aus der Cloud lesen

        if temperature <= self.__splow:

            self.__fan.off() # Kühlung ausschalten, wenn es kalt ist

        elif temperature > self.__sphigh:

            self.__fan.on() # Kühlung einschalten, wenn es zu warm wird

        return

# ********************* Ende class Controller

if __name__ == '__main__':

    # Erzeugen der Fan und Cloudobjekte (wird später erklärt)

     .

     .

     .

    climate=Controller(mycloud, myfan)

    while True:

        mycloud.update() # aktuelle Temperatur (usw.) in die Cloud schreiben (wird später erklärt)

        climate.control()

```

Aufgaben

1. Besprechen Sie den objektorientiert geschriebenen Code im Klassenverband (Klären Sie folgende Begriffe: Klasse, Objekt, Attribut, Methode, Klassendiagramm, Link, Aggrgation vs. Komposition, Konstruktor).
2. Geben Sie ein Dokument ab, in dem Sie im Freitext die Begriffe
  1. Klasse,
  2. Objekt,
  3. Attribut,
  4. Methode,
  5. Punktnotation,
  6. private,
  7. public,
  8. UML-Klassendiagramm,
  9. UML-Link
  10. Aggregation
  11. Komposition
  12. Konstruktor erklären.
3. Erklären Sie im zusätzlichen Textabgabefeld, warum eine Hysterese das Regelverhalten gegenüber einer Lösung ohne zwei verschiedene Schaltpunkte verbessert.

Hilfen

Understanding self and __init__ method in python Class