Regler Boilerdruck Multi-MCU

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen

Noureddine Ait Ouhmamou, 13.10.2023

Beim jetzigen Boilerdruckregler wird zuerst überprüft, ob der Boilerfüllstand erreicht ist.

      if str2num(app.Boilerfuellstand.Text) == 1

Somit ist sichergestellt, dass die Heizwendel mit Wasser im Boiler umhüllt ist. Danach wird die Abweichung vom Solldruck berechnet. Da die Druckwerte in mbar angegeben sind, werden diese in bar umgerechnet. Anschließend wird das tellsignal für die Heizung berechnet. Für die Berechnung des Integrals wird das Rechteckverfahren angewendet (Ergebnis-Intergral = Ergebnis-Integral + (Abweichung / Regelfrequenz)). Es wird auf den letzten Wert des Integrals die anliegende Abweichung, die durch die Regelfrequenz dividiert bzw. mit der Abtastrate multipliziert wird, addiert. Um einen Windup des I-Anteils zu verhindern, wird die Aufsummierung durch eine Abfrage eingefroren (Anti-Windup). Das „Windup“ Phänomen entsteht durch Integrationsfehler des I-Anteils. Dieser steigt weiter an, obwohl das Stellglied sein Maximum bzw. Minimum erreicht hat. Der Integrator steigt so lange an bis es zu einem Vorzeichenwechsel vom Regelfehler kommt. Somit zieht sich der I-Anteil auf und destabilisiert das System [109]. Das bedeutet, dass dieser sich nicht ändert solange das Stellsignal sich nicht innerhalb der Grenzen befindet. In diesem Fall beträgt die Heizleistung zwischen 0% und 100%. Im Moment ist der I-Anteil so auscodiert, damit bei Versuchen am Boiler keine unerwarteten Überschwinger entstehen.

    if Heizkraft > 100 && Heizkraft < 0
    app.integralBoilerdruck = app.integralBoilerdruck + abweichung/app.regelFrequenz;
    end

Zuletzt wird für die nächste Berechnung die alte Abweichung gespeichert. Nach der Berechnung des Stellsignals wird überprüft, ob dieser sich innerhalb der Grenzen befindet. Ist dies der Fall, wird die berechnete Heizleistung übernommen. Anderenfalls wird bei einer Heizleistung kleiner 0% auf 0 und bei einem Stellsignal größer 100% auf 100 gesetzt. Zuletzt wird das Ergebnis in ein PWM-Signal umgewandelt und an die SSR-Platine weitergeleitet. Bei der Boilerregelung beträgt der Sollwert beim Einstellen 1300 mbar bzw. 1,3 bar. Daraus resultiert eine Mindestverstärkung von 77, wenn die maximale Abweichung von 1,3 bar durch die 100 % Heizleistung geteilt wird. Danach ist festgelegt worden, ab welcher Sollwertabweichung das Herunterregeln des PWM-Signals beginnt. Somit ergibt sich für Kp ein Wert von 800, weil das PWM-Signal ab einer Abweichung von 125 mbar anfangen soll kleiner zu werden. Dies wurde dann auch an der Maschine getestet und ein Endwert von ungefähr 1290 mbar hat sich eingependelt. Der Integralfaktor des PID-Reglers muss bei der Boilerdruckregelung auf 0 gesetzt sein. Bei einem Versuch mit Ki = 5 wurde durch den I-Anteil im Regler der Regelkreis instabil. Damit wird der Solldruck von 1300 mbar zwar erreicht, aber das Überschwingverhalten verstärkt sich. Der Differentialfaktor Kd beträgt 10. Wieder dieser zu groß gewählt, schwingt das System.


Armin Rohnen, 13.08.2023 - Fehler bei der Entschichtung

Bei eingeschalteter Entschichtung kann es zu einem undefinierten Zustand mit der Boilerbefüllung kommen. Aktuell ist Boilerbefüllung und Entschichtung gleichzeitig möglich.

Erfolgt die Entschichtung über den geöffneten Dampfhahn (Y13) dann ist der Vorgang unschön, stellt aber kein Problem dar.

Erfolgt die Entschichtung über umpumpen des Boilerwassers, dann darf nicht gleichzeitig eine Boilerbefüllung stattfinden. Die Entschichtungsfunktion muss dann so lange pausieren, bis der definierte Füllstand erreicht ist. Der Füllstandsregler muss Vorrang vor der Entschichtung bekommen. Beim Einschalten der Boilerbefüllung bei gleichzeitigem Bedarf an Entschichtung muss das Entwässerungsventil (Y02) geschlossen werden. Für die Durchmischung wird dann Frischwasser beigefügt.

Bei der Fehlerbehebung sollte gleichzeitig eingeführt werden, dass die Entschichtung während des Aufheizvorgangs zwischen Pumpe und Damfphahn umgeschaltet werden kann.

Armin Rohnen, 13.08.2023

Über die Abfrage

         if app.BoilerreglerSchalter.Value == 1

wird die Regelung des Boilerdrucks aus der Funktion "mwp_verarbeitung" aufgerufen. Die Regelung des Boilerdrucks erfolgt in der Funktion "boilerregler" und ist derzeit als Steuerung mit Grenzwertüberwachung realisiert. Über die Abfrage

         if str2num(app.Boilerfuellstand.Text) == 1
         .
         .
         .      
         else
               duty = 0;
         end

wird die Berechnung des Stellwerts für die Heizleistung im oberen Bereich des Programmcodes des Boilerreglers gesteuert. Nur wenn ein definierter Füllstand vorliegt (if str2num(app.Boilerfuellstand.Text) == 1) erfolgt eine Berechnung der Heizleistung.

Die Festlegung der Heizleistung erfolgt aktuell durch Übernahme des Heizleistungswertes des Schiebereglers in der MATLAB®-GUI. Ist dieser kleiner 10 % wird die Heizleistung auf 75 % gesetzt.

Ist der Dampfhahn (Y13) geöffnet, wird der Sollwert des Boilerdrucks um 125 mbar reduziert. Dies verhindert ungewolltes Überhitzen des Boilers.

Nur wenn ein neuer Stellwert für die Heizleistung berechnet wurde, wird dieser über

         writeline(app.ssr_platine, ['ssr2.duty_u16(' num2str(duty) ')']);

an die SSR-Platine gesendet. Die Variable "aap.pwmDuty" enthält den aktuellen Stellwert für die Heizleistung.

Entschichtung

Der Boilerregler beinhaltet die Entschichtungsfunktion.

Eine Entschichtung ist mindestens während der Aufheizphase des Boilers erforderlich. An der Grenzschicht zwischen Heizelement und Wasser entstehen aufgrund der Hizze des Heizelements Mikrodampfblasen, welche zum Druckaufbau im Boiler führen. Gleichzeitig steigt das erhizte Wasser im Boiler nach oben und das weiterhin kalte Wasser fällt nach unten. Auf dieser Weise kommt es zu einer Schichtung des Wassers unterschiedlicher Temperaturen im druckbeaufschlagten Boiler. Ist jedoch zu wenig Energie im Heißwasser um dauerhaft den gewünschten Dampfdruck aufrecht zu erhalten, kommt es beim Öffnen des Dampfhahns zum Zusammenbruch des Drucks. Verstärkt wird diese Problematik durch die geringe Wärmeleitfähigkeit des Wassers sowie des Edelstahls und der guten thermischen Isolierung des Boilers.
Durch Öffnung des Dampfhahns kann die Schichtung kann aufgebrochen werden, denn dann sprudelt das Wasser im Boiler auf. Hierzu ist allerdings noch die Abschalttemperatur zu ermitteln. Eine andere Möglichkeit stellt der Umpumpvorgang dar. Hier wird kaltes Wasser aus dem Boiler durch umpumpen auf das heiße Wasser aufgelegt und es kommt zu einer Vermischung des Wassers.

Es kann während des Entschichtungsvorgangs kann nicht zwischen Umpupen und Dampfhahn umgeschaltet werden und es wird immer geprüft ob eine Entschichtung erforderlich bzw. zulässig ist.

Die Entschichtungsfunktion ist nur einmalig je Betrieb aktiv und wird bei Wassertemperatur größer 90 °C abgeschaltet. Der Zustandsindikator "app.flag_Entschichtung" kann vier Zustände erreichen. Zur Initialisierung hat er den Wert 0, dies signalisiert auch den Start der Entschichtungsfunktion. Ist die Entschichtung über Pumpe gewählt, wird "app.flag_Entschichtung = 1". Es werden das Entwässerungsventil (Y02) und das Befüllventil (Y03) des Boilers geöffnet sowie die Pumpenleistung auf 1500 mV gestellt. Bei der ENtschichtung über den Dampfhahn wird "app.flag_Entschichtung = 2" und der Dampfhahn (Y13) geöffnet.
Ist die Grenztemperatur von 90 °C überschritten werden je nach Entschichtungsmodus die Magnetventile geschlossen und die Pumpe abgeschaltet. Es wird "app.flag_Entschichtung = 3" gesetzt. Eine Wiederholung der Entschichtungsfunktion ist nicht vorgesehen.
Ein Boilertemperaturwert größer 90 °C führt immer zum Beenden der Entschichtungsfunktion und setzt "app.flag_Entschichtung = 3". Damit ist eine Entschichtungsfunktionalität nur durch manuelles Öffnen des Dampfhahns (Y13) möglich.

Armin Rohnen, 16.02.2023

Der für die STM32-Elektronik realisierte Füllstandsregler ist für die Multi-MCU-Elektronik zu realisieren.