Watch Dog Software Architektur

OP #7661463
Lesenswert?

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

#7661489
Lesenswert?

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.

#7661635
Lesenswert?

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.

OP #7661720
Lesenswert?

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.

#7661870
Lesenswert?

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?

#7661880
Lesenswert?

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.

OP #7661916
Lesenswert?

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++

#7661932
Lesenswert?

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

#7662179
Lesenswert?

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.

#7662241
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren