Forum: Mikrocontroller und Digitale Elektronik Watchdog Timer in Flugsteuerung


von Marcel B. (cable545)


Lesenswert?

Hallo,

ich habe heute beim Testen meiner Flugsteuerung für ein Quadrocopter das 
Problem gehabt, dass sich das Programm aufgehangen hat. Demzufolge 
konnte ich die Timer-Ausgänge mit den PWM-Signalen für die Motoren nicht 
mehr beeinflussen. Die Motoren liefen also (glücklicherweise ohne 
Propeller) und ich konnte nichts anderes tun, außer den Stecker ziehen. 
Meine Frage ist nun, wie solche Fälle bei kommerziellen Flugsteuerungen 
gehandhabt werden. Also wie wird in einem solchen undefinierter Zustand 
vorgegangen? Ich hatte darüber nachgedacht mit einem Watchdog Timer zu 
arbeiten. Die Zeitdauer für ein Intervall der Main-Loop ist ja bekannt. 
Wird diese Zeit überschritten kann man davon ausgehen, dass sich das 
Programm in einem undefinierten Zustand befindet und der Mikrocontroller 
wird neu gestartet. Was haltet ihr davon? Vielleicht gibt es ja Leute 
die selbst schon eine Flugsteuerung entwickelt haben und vor dem 
gleichen Problem standen.

von Peter D. (peda)


Lesenswert?

Ein Watchdogreset ist da ungünstig. Alle PWMs gehen aus und das Ding 
stürzt wie ein Stein zu Boden.
Sinnvoll ist eine Aufteilung auf mehrere MCs, wo einer nur für den Flug 
zuständig ist. Und dessen Programm sollte entsprechend sorgfältig 
entwickelt werden, daß es sich nicht aufhängen kann.

von aSma>> (Gast)


Lesenswert?

Servus,
redundante Systeme können zwar Leben retten, aber hier bedeutet es: 
Mehrgewicht, Mehrverbrauch usw.

Man könnte vor den Restart wichtige Daten ins eeprom schreiben und 
wieder laden. Meistens dauern Initialisierungsroutinen etwas Zeit, da 
z.B Konstanten für PID berechnet werden usw. Mit eeprom könnte man diese 
Routine etwas schneller machen indem alles im eeprom gespeichert ist.

Dann könnte man durch praktische Versuche die Latenz mal bestimmen. Wie 
groß die Erdbeschleunigung ist, weißt doch jeder, damit kann man 
berechnen wie Tief der Brunnen ist.

mfg

von Michael K. (Gast)


Lesenswert?

Peter D. schrieb:
> Ein Watchdogreset ist da ungünstig. Alle PWMs gehen aus und das Ding
> stürzt wie ein Stein zu Boden.

Nach Neustart muß nur sehr schnell der reset Grund ausgewertet und ein 
sicherer Zustand wieder hergestellt werden.

Peter D. schrieb:
> Und dessen Programm sollte entsprechend sorgfältig
> entwickelt werden, daß es sich nicht aufhängen kann.

Technisch unmöglich.
Durch die großen Störungen einer leistungsstarken (Motor) Stufe können 
direkt bits kippen.

Bei einem von mir gebauten EVG sieht man den Neustart nur als kurzes 
Flackern der Leuchten.
Ein Copter würde auch nur kurz zucken.

Das Verteilen auf mehrere MCUs vergrößert das Problem.
Statistisch vervielfachen sich die Fehlerquellen und wenn ein einzelner 
Motor ausfällt schmiert die Kiste auch ab.

aSma>> schrieb:
> Man könnte vor den Restart wichtige Daten ins eeprom schreiben
Das RAM wird durch Reset doch nicht gelöscht.
Mit ein wenig Gehirnschmalz ist man nach Watchdogreset extrem schnell 
wieder funktionsfähig.

von Dennis (Gast)


Lesenswert?

Michael K. schrieb:
> Das Verteilen auf mehrere MCUs vergrößert das Problem.
> Statistisch vervielfachen sich die Fehlerquellen und wenn ein einzelner
> Motor ausfällt schmiert die Kiste auch ab.

Man macht es bei guten Geräten trotzdem so - und genau so ist es in der 
Luftfahrtindustrie auch gefordert. Redundanz ist halt alles.

Konkret wird beim Systemstart ein unabhängiger uC mit eigener 
Spannungsversorgung hochgefahren, evtl. noch galvanisch getrennt und 
manchmal sogar mit eigener Sensorik. Der Hauptprozessor gibt nach jedem 
Schleifendurchlauf ein "alive"-Signal + aktuelle Daten. Bleibt das 
Signal aus oder sind die Daten nicht plausibel, übernimmt der zweite 
Prozessor sofort. Vorteil: Kalibration und alle Werte laufen normal 
weiter, d.h. auch die Filter müssen sich nicht erneut einschwingen.

von Cyblord -. (cyblord)


Lesenswert?

Dennis schrieb:
> Konkret wird beim Systemstart ein unabhängiger uC mit eigener
> Spannungsversorgung hochgefahren, evtl. noch galvanisch getrennt und
> manchmal sogar mit eigener Sensorik. Der Hauptprozessor gibt nach jedem
> Schleifendurchlauf ein "alive"-Signal + aktuelle Daten. Bleibt das
> Signal aus oder sind die Daten nicht plausibel, übernimmt der zweite
> Prozessor sofort.

Humbug. Mit 2 Einheiten geht das nicht. Woher weiß die eine CPU dass die 
Werte falsch sind? Vielleicht denkt sie das nur weil sie selber defekt 
ist? Also würde die defekte CPU die Kontrolle übernehmen und die korrekt 
arbeitende ablösen.
Wenn dann gibt es 3 redundante Einheiten und das ganze läuft per Voting.

von Bernd K. (prof7bit)


Lesenswert?

Michael K. schrieb:
> Peter D. schrieb:
>> Und dessen Programm sollte entsprechend sorgfältig
>> entwickelt werden, daß es sich nicht aufhängen kann.
>
> Technisch unmöglich.
> Durch die großen Störungen einer leistungsstarken (Motor) Stufe können
> direkt bits kippen.

Dann muss eben nicht nur die Software besonders sorgfältig entwickelt 
werden sondern ebenso auch die Hardware! Problem gelöst! Und was war 
daran jetzt "technisch unmöglich"?

von Peter D. (peda)


Lesenswert?

Bernd K. schrieb:
> Dann muss eben nicht nur die Software besonders sorgfältig entwickelt
> werden sondern ebenso auch die Hardware! Problem gelöst! Und was war
> daran jetzt "technisch unmöglich"?

Korrekt!

Wenn durch Störungen Bits kippen, dann hat man einfach bei der Schaltung 
oder dem Layout mächtig geschlampt.

von Wolfgang (Gast)


Lesenswert?

aSma>> schrieb:
> redundante Systeme können zwar Leben retten, aber hier bedeutet es:
> Mehrgewicht, Mehrverbrauch usw.

Weder das Mehrgewicht von vielleicht 5 Gramm, noch der Stromverbrauch 
eines µC im Vergleich zu den Motoren, dürften da kriegsentscheidend 
sein. Stell mal eine Liste deiner Energieverbräuche auf.

von Michael K. (Gast)


Lesenswert?

Bernd K. schrieb:
> Dann muss eben nicht nur die Software besonders sorgfältig entwickelt
> werden sondern ebenso auch die Hardware! Problem gelöst! Und was war
> daran jetzt "technisch unmöglich"?

Techisch unmöglich ist es eine Fehlerwahrscheinlichkeit von 0,00% zu 
bekommen.
Es gibt eine theoretische Wahrscheinlichkeit von x% das ein Bit kippt.
Je wärmer, schneller, gestörter um so wahrscheinlicher.
Selbst wenn die Software zu 100% fehlerfrei ist, und glaub mir das mit 
Testfällen und Review zu beweisen ist der Horror, stürzt eine Software 
auch ab wenn einfach die Grenzen der Halbleiterphysik bits kippen 
lassen.
Die MCU muß und kann auch mit dem Watchdog Reset Fall umgehen.

Die Ansage 'Dann einfach keine Fehler machen und zulassen' hört sich 
fantastisch an ist aber unrealistisch.
Es gibt Fehler die man nicht mehr abfangen kann aber ein Watchdog Reset 
gehört da definitiv nicht zu.

Redundanz mit mindestens drei Entscheidungsinstanzen ist natürlich toll 
und bei Steuerungen mit möglichem Personenschaden auch angeraten, aber 
für einen Copter ein wenig hoch gegriffen.

Dennis schrieb:
> Man macht es bei guten Geräten trotzdem so - und genau so ist es in der
> Luftfahrtindustrie auch gefordert. Redundanz ist halt alles.
Was in der Luftfahrt gefordert ist und was nicht weiß ich ganz gut.
Wir reden hier aber nicht über die fly by wire Steuerung eines 
Verkehrfliegers mit 400 Seelen an Bord über dicht besiedeltem Gebiet 
sondert immer noch über einen Quadcopter.

Das 'tolle' an ausufernden Schaltungen ist übrigens das mit jedem 
zusätzlichen Bauteil die Ausfallwahrscheinlichkeit steigt.
Mach mal eine MTBF Berechnung nach MIL mit Bewertung der Fehlerfälle.
Ein großer Spaß für die ganze Familie.

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
Noch kein Account? Hier anmelden.