Hallo, ich baue gerade ein Bewässerungssystem mit einem STM32H5. Sollte sich die Firmware an einer kritischen Stelle aufhängen, könnte ich meine Pflanzen überfluten. Welche guten Bücher oder Papers gibt es zum Thema "functional safety", insbesondere dazu, an welchen Stellen genau der Watchdog resettet werden sollte? Ich suche keine Erklärung, wie ich bei dem STM32H5 die Register setzen muss, sondern interessiere mich hier nur für das Konzept. Vielen Dank
Einmal in der Main-Loop. Und bei längeren Aktionen wie zB. Flaschen.
Teo D. schrieb: > https://www.intel.com/content/www/us/en/docs/programmable/683711/22-3/watchdog-timer-state-machine.html Wo hilft das PDF hier bei der gestellten Frage? In dem Abschnitt ab Seite 608 sehe ich "nur" eine Erklärung zum Watchdog, aber nicht nach einer Erklärung wie plane oder was muss ich beachten Frage des OT. Ich denke nach Reset muss immer ein betriebssicherer und definierter Zustand herbeigeführt werden. Sonst kann das Wasser wirklich dauernd laufen... Magnetventile die nur bei Spannung auf etc. Denn der klassische Stromausfall gibt es ja auch noch.
Matthias 🟠. schrieb: > Ich denke nach Reset muss immer ein betriebssicherer und definierter > Zustand herbeigeführt werden. Genau. Nämlich Wasser geschlossen. Volker Z. schrieb: > Einmal in der Main-Loop. Genau. Weitere "guten Bücher und Papers" brauchts da nicht. > Und bei längeren Aktionen wie zB. Flaschen. Der Watchdog ist nur während der Programmabarbeitung aktiv.
functional safety (also z.B. DIN/EN61508) wäre da Kanonen. Vielleicht eher mit den verschieden Arten eines (externen) Watchdogs beschäftigen. Und wie man verschiedene Programmteile über Flags oder Zähler auf einen echten WDG mappt. Einfach wird FS, wenn man den Strom nur abschalten muss, also wenn Dein Ventil selbsttätig schließt. Noch einfacher wird es, wenn mehrere unabhängige Kreise (die das gleiche machen oder überwachen) in Reihe das Ventil schalten. Ein Ausfall führt "zwangsläufig" in den sicheren Zustand. Schwieriger wird es, wenn alles über einen Pin läuft oder in einem Prozessor oder mit der gleichen SW in mehreren. Dann macht der "common cause"-Faktor allen Wahrscheinlichkeiten einen Strich durch die Rechnung. Mit anderen Worten: wenn es um wirkliche Werte geht und Du FS bräuchtest, dann löse das lieber konstruktiv/elektrisch wie in Waschmaschinen oder Geschirrspülern.
Vielen Dank für die Antworten! Elektrisch ist die Pumpe zwischen einem PMOS (highside) und einem NMOS (lowside), welche auch von verschiedenen Pins angesteuert werden. Der Strom wird auch gemessen. Mein Konzept ist aktuell: - Pumpe und ein Timer werden gleichzeitig gestartet - Timer Compare-Match Interrupt stopt Pumpe - Ich überwache den Timer, periodisch ob er sich tatsächlich wie erwartet verhält. Als Referenz verwende ich SysTick und die RTC - Watchdog wird in der main Schleife rück gesetzt Als nächstes werde ich noch die Strom überwachung einbauen. Dadurch kann ich auch feststellen ob ein MOSFET (im leitenden Zustand) defekt ist.
Die Pumpe und jedes Ventil könnte je einen eigenen Watchdog bekommen. Man braucht zwischen Pin und FET einen Kondensator in Reihe und eine Art Monoflop dahinter. Die Software (kein Timer) muss dann ein Rechteck erzeugen. Sobald irgendetwas hängt, wird der FET abgeschaltet, egal, ob der Pin auf High oder Low hängt. Die Ventil-Treiber und gleichzeitig die Ventile könnte man mit einem Durchflussmesser überwachen. Es reicht einer für alle, wenn man immer nur ein Ventil einschaltet. Bonus: man kann einen Alarm absetzen, wenn die Pumpe zu wenig Wasser fördert oder ein Ventil nicht öffnet. Aber sag' bitte, dass STM32H5 ein Tippfehler war; 250MHz, 640K RAM nur für die Blumen?
Bauform B. schrieb: > Aber sag' bitte, dass STM32H5 ein Tippfehler war; 250MHz, 640K RAM nur > für die Blumen? Bei mir erledigt das ein AT90S2333. Und er könnte nebenbei noch Pi auf beliebig viele Stellen berechnen, was den Blumen natürlich nicht wirklich hilft....
Peter F. schrieb: > Mein Konzept ist aktuell: > Watchdog wird in der main Schleife rück gesetzt So macht man das. Man bestimmt, eie lange die Hauptschleife maximal dauert, inklusive aller eventuellen Interrupt-Aufrufe, und programmiert den Watchdog passend. Ob man den Rest so macht, mit timer compare, ist zweifelhaft, es geht doch eher um lange Minuten als kurze Millisekunden, man vergleicht besser Tomer und Zustand ebenfalls in der Hauptschleife und nutzt gar keine Interrupts. Relais stören den uC gerne beim Abschalten wenn man den Snubber über dem Kontakt vergessen hat.
Bauform B. schrieb: > Aber sag' bitte, dass STM32H5 ein Tippfehler war; 250MHz, 640K RAM nur > für die Blumen? Nein, ich habe einfach die Preise bei Mouser grob verglichen. Da war der STM32H562RGT6 am ziemlich interessant im Bereich Preis. Ist ein Hobby Projekt -> ich habe keine Stückzahlen Normal nehme ich immer einen STM32F103C8, den ich über Ali beziehe. Der ist aber mittlerweile uralt, hat keine FPU und nur 64kb. Da wirds eng mit C++
Peter F. schrieb: > Elektrisch ist die Pumpe zwischen einem PMOS (highside) und einem NMOS > (lowside), welche auch von verschiedenen Pins angesteuert werden. vielleicht die Fets über eine Ladungspumpe über Pin Toggle aus der main ansteuern? http://hanneslux.de/avr/zuenduhr/lapu.html wenn die main hängt, toggeln die Pins nicht mehr und das Wasser stoppt. Die Frequenz der ist ja in weiten Bereichen egal. sg
Clemens S. schrieb: > Ladungspumpe über Pin Toggle auch eine Art Monoflop, aber ein Überaus elegantes!
Verstehe nicht ganz was die externe Hardware mit dem Pin toggeln hier bringen soll. Logisch ist das schon im Mikrocontroller so aufgebaut, wenn man den Watchdog korrekt programmiert. Warum dasselbe nochmal extern dazubauen, mit allen dadurch entstehenden möglichen Fehlerquellen? Idealerweise programmierst du den WDT so, dass er nur resettet, wenn die maximal einstellbare Bewässerungszeit überschritten wird. Dann den WDT Feed-Befehl nur aufrufen wenn die Bewässerung sicher aus ist (dann ist eigentlich egal wo, nur oft genug), und sicherstellen dass nach dem Reset auch alles aus ist. Mehr braucht's da nicht.
:
Bearbeitet durch User
Wenn Safety, dann muss in Betracht gezogen werden, dass ein Versagen der Steuerung ohne Stromausfall in der „Wasser an Phase“ eintritt und die Steuerung dann nicht mehr in der Lage ist zu reagieren. z.B. Überspannungsereignis, das den uC dahin rafft, dessen IOs aktiv lässt und die Fets und die Spule des Ventils überleben. Dann läuft das Wasser… Da ist die Ladungspumpe ein sehr sehr eleganter Weg. Wenn es ein Safetythema ist, muss alles nach dem Stand der Technik Mögliche zur Gefahrenabwehr getan werden. „Ist aber unwahrscheinlich“ entbindet nicht von der Haftung, verändert nur das unternehmerische Risiko.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.