Der Samovar überwacht die Prozessparameter und schaltet die Heizung im Notfall ab, wenn Messwerte die sicheren Grenzen verlassen. Alle Notfallereignisse werden im Log gespeichert und an die mobile App und an die Website samovar-tool.ru gesendet. Diese Seite beschreibt die vollständige Liste der Notfallszenarien in der Firmware 7.00 und die Reaktion des Controllers auf jedes davon.
Wie der Notfallschutz funktioniert
Alle Notfallprüfungen sind im Modul alarm.h zusammengefasst und werden von der Hauptschleife des Controllers über die Funktion check_alarm() aufgerufen. Löst eine Prüfung aus, wird ein Grund für den Notstopp erzeugt und request_emergency_stop(reason) aufgerufen. Die Funktion schaltet die Heizung ab, stoppt die Pumpen, schreibt den Grund in den nichtflüchtigen Speicher und sendet eine Benachrichtigung. Der einzige Weg aus dem Notfallmodus ist ein Neustart des Controllers.
Notfallmeldungen erscheinen:
- auf dem Hauptbildschirm der Weboberfläche;
- in den mobilen Apps für Android und iOS;
- auf der Website samovar-tool.ru;
- im lokalen Log auf der SD-Karte oder in LittleFS.
Der Meldungstyp ist ALARM_MSG bei Notfällen und WARNING_MSG bei Warnungen. Warnungen stoppen den Prozess nicht, erfordern aber die Aufmerksamkeit des Bedieners.
Temperaturgrenzen
Die Temperaturgrenzen werden durch Konstanten in der Datei Samovar_ini.h festgelegt. Diese Werte sind die Schwelle für einen sofortigen Notstopp. Für Schwellenwerte, die der Benutzer einstellen kann (zum Beispiel die Temperatur für das Ende der Destillation), gibt es eigene Felder in den Einstellungen.
MAX_STEAM_TEMP = 98,8 °C– die Grenze der Dampftemperatur. Wird sie überschritten, löst das einen Notstopp mit dem Grund „Maximale Dampftemperatur überschritten“ aus.MAX_WATER_TEMP = 75 °C– die Grenze der Kühlwassertemperatur. Wird sie überschritten, löst das einen Notstopp mit dem Grund „Maximale Wassertemperatur überschritten“ aus.ALARM_WATER_TEMP = 70 °C– die kritische Wassertemperatur (eine Warnung). Wird sie erreicht, senkt der Controller die Spannung des Leistungsreglers in Schritten von 5 V pro Durchlauf mit 30 Sekunden Pause zwischen den Schritten. Hilft die Absenkung nicht und steigt die Temperatur weiter, löst der NotfallMAX_WATER_TEMPaus.MAX_ACP_TEMP = 75 °C– die Grenztemperatur des TCA (des Sensors im atmosphärischen Entlüftungsrohr der Kolonne). Wird sie überschritten, löst das einen Notstopp aus.SamSetup.DistTemp(einstellbar, standardmäßig 99,9 °C) – die Temperatur, bei der Destillation und BK (der Modus Brennblase-Kolonne) enden. Wird sie erreicht, versucht der Controller, das Programm über die BefehlswarteschlangeSAMOVAR_POWERnormal zu beenden. Ist die Warteschlange belegt, ruft der Controller einen Notstopp aus – es ist besser, den Notweg zu nehmen, als die Heizung eingeschaltet zu lassen, bis die Brennblase trocken kocht.
Druck
Ist ein Drucksensor MPX5010DP installiert und in den Einstellungen ein Wert MaxPressureValue gesetzt (standardmäßig 0 – die Prüfung ist aus), überwacht der Controller den Druck in der Kolonne. Wird der Schwellenwert überschritten, erfolgt ein Notstopp mit dem Grund „Maximaler Druck überschritten!“. Sobald der Druck 5 % unter den Schwellenwert fällt (Hysterese), wird der Notzustand automatisch aufgehoben.
Flutungssensor
Ist die Einstellung „Use reflux level sensor“ (Rücklaufpegelsensor verwenden; UseHLS) aktiviert und der Sensor am Pin WHLS angeschlossen, überwacht der Controller den Rücklaufpegel am Kopf der Kolonne. Bleibt der Sensor länger als WHLS_ALARM_TIME = 3 Sekunden ausgelöst:
- ertönt der Summer und die Benachrichtigung „Flutungssensor ausgelöst!“ wird gesendet;
- wird ein Leistungsregler verwendet, senkt der Controller die Spannung um einen Schritt (3 % bei SEM AVR, 1 × PWR_FACTOR bei anderen Reglern);
- die nächste Reaktion ist erst nach 40 Sekunden möglich – der Prozess reagiert träge, und häufigeres Absenken hat keinen Sinn.
Läuft das Programm bei der Vorflutung (Zeilentyp C), merkt sich der Controller die aktuelle Spannung als prev_target_power_volt und setzt nach TIME_C / 5 Minuten die Spannung auf den gemerkten Wert minus 0,5 Schritt zurück. Löst der Sensor weiter aus, wiederholt sich der Absenkzyklus.
Wasserdurchfluss
Ist ein Wasserdurchflusssensor installiert und die Einstellung „Use water flow control“ (Wasserdurchfluss überwachen; UseWS) aktiviert, überwacht der Controller in allen Modi, die Kühlung benötigen, den Wasserdurchfluss. Ist der Wasserdurchfluss über WF_ALARM_COUNT Abfragezyklen null, wird request_emergency_stop mit dem Grund „kein Durchfluss“ aufgerufen. Das schützt die Kolonne und das TCA vor Überhitzung, wenn das Wasser abgestellt wird oder die Pumpe ausfällt.
Ausfall eines Temperatursensors
Jeder DS18B20-Sensor hat einen Fehlerzähler ErrCount, der bei fehlgeschlagenen Leseversuchen (Kabelbruch, keine Antwort) hochgezählt wird. Die Funktion optional_sensor_failed betrachtet einen Sensor als ausgefallen, wenn die Messwerte außerhalb des Bereichs 2,0–126,0 °C liegen oder Lesefehler sich wiederholen. Bei einem Ausfall:
- wird eine Benachrichtigung wie „Dampfsensor antwortet nicht“ / „Brennblasensensor antwortet nicht“ / „Wassersensor antwortet nicht“ / „TCA-Sensor antwortet nicht“ gesendet, mit Angabe des Modus;
- wird eine Notfallsperre gesetzt – die Heizung bleibt aus, bis die Ursache beseitigt ist;
- der Weg aus dem Notfall ist ein Neustart des Controllers.
Außerdem prüft der Controller im Rektifikationsmodus, ob die Sensoren für Dampf und Brennblase überhaupt zugeordnet sind (die Adresse ist nicht 0xFF). Ist am 1-Wire-Bus kein einziger Sensor vorhanden, versucht der Controller, die Heizung normal über die Befehlswarteschlange abzuschalten, und geht bei belegter Warteschlange in den Notfallmodus.
Notaus-Taster
Ist in den Platineneinstellungen der Pin ALARM_BTN_PIN definiert (standardmäßig GPIO 35 beim klassischen ESP32 und GPIO 48 beim ESP32-S3), können Sie einen Notaus-Taster oder einen Wasserleckagesensor anschließen, der über das Schließen eines Kontakts arbeitet. Der Kontakt ist auf die Versorgungsspannung hochgezogen; wird er gegen Masse kurzgeschlossen (FALLING), wird ein Interrupt ausgelöst, und eine eigene Task triggerEmergencyButton ruft request_emergency_stop mit dem Grund „Notabschaltung: Der Notaus-Taster wurde gedrückt“ auf.
Besonderheiten der Pins:
- beim klassischen ESP32 sind die Pins 34–39 reine Eingänge ohne internen Pull-up, daher ist ein externer Pull-up-Widerstand zur Versorgungsspannung nötig;
- beim ESP32-S3 hat Pin 48 einen internen Pull-up, ein externer ist also nicht nötig.
Der Notaus-Taster ist standardmäßig deaktiviert – um ihn zu aktivieren, entkommentieren Sie #define USE_ALARM_BTN in Samovar_pin.h oder setzen Sie den Pin über user_config_override.h. Nach dem Auslösen ist der einzige Weg aus dem Notfallmodus ein Neustart des Controllers.
Schutz des Leistungsreglers
Ist die Einstellung „Use regulator connection check“ (Verbindung zum Regler prüfen; CheckPower) aktiviert und geht die Kommunikation mit dem Leistungsregler im Betrieb verloren, schaltet der Controller die Heizung im Notfall ab. Das schützt vor dem Fall, dass der Regler nicht mehr antwortet (unterbrochene UART-Verbindung, Ausfall der Reglerstromversorgung), während die Heizung eingeschaltet blieb.
Watchdogs der Tasks
Die FreeRTOS-Tasks des Controllers (die Reglertask, die Überwachungstask SysTicker, der Stack-Watchdog) behalten einander im Auge. Antwortet eine davon länger als die zulässige Zeit nicht:
- die Reglertask wurde nicht gestartet – Notstopp „Reglertask läuft nicht“;
- die Task des Notaus-Tasters wurde nicht gestartet – Notstopp „Task des Notaus-Tasters läuft nicht“;
- kritisch niedriger Reststack einer beliebigen Task – Notstopp „Kritisch niedriger Reststack der Task …“;
- die Überwachungstask SysTicker hängt – Notstopp „Überwachungstask SysTicker hängt“.
Gründe für einen Notstopp
Löst eine Notfallprüfung aus, wird der Grund in den nichtflüchtigen Speicher geschrieben (latched_emergency_stop_reason) und kann über die Weboberfläche und die API abgefragt werden. Nachdem die Ursache beseitigt ist, hebt der Bediener den Notfallmodus durch einen Neustart des Controllers auf.
Typische Gründe, die der Bediener sieht:
- „Maximale Temperatur von Dampf / Wasser / TCA überschritten“;
- „Grenztemperatur der Brennblase erreicht. Programm abgeschlossen.“ (ein normaler Abschluss);
- „Maximaler Druck überschritten!“;
- „Dampfsensor antwortet nicht“ / „Brennblasensensor antwortet nicht“ / „Wassersensor antwortet nicht“ / „TCA-Sensor antwortet nicht“;
- „Notabschaltung: Der Notaus-Taster wurde gedrückt“;
- „Kein Wasserdurchfluss“;
- „Leistungsregler antwortet nicht“;
- „Kritische Wassertemperatur! Fehler der Wasserzufuhr“ (eine Warnung, schrittweise Leistungsabsenkung).
Wo man die Einstellungen findet
- Temperaturgrenzen –
MAX_STEAM_TEMP,MAX_WATER_TEMP,MAX_ACP_TEMP,ALARM_WATER_TEMPinSamovar_ini.h. - Temperatur für das Ende der Destillation –
DistTempauf dem Reiter „Main“ (Hauptseite) der Einstellungsseite. - Notfalldruck –
MaxPressureValueauf dem Reiter „Main“. - Flutungssensor – die Einstellung „Use reflux level sensor“ auf dem Reiter „Main“ und der Pin WHLS in
Samovar_pin.h. - Wasserdurchflusssensor – die Einstellung „Use water flow control“ (
UseWS) auf dem Reiter „Other“ (Sonstiges). - Notaus-Taster – der Pin
ALARM_BTN_PINund das FlagUSE_ALARM_BTNinSamovar_pin.h. - Prüfung des Leistungsreglers – die Einstellung „Use regulator connection check“ (
CheckPower) auf dem Reiter „Other“.
