- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 24

Thema: Methoden zum Erkennen einer Fehlerbedingung in Microcontroller-Systemen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Leute,

    ... ja, die Fragen, die sich stellen, sind doch:
    1) ist es nur eine Spielerei oder ein kommerzielles Produkt (Ausschluss-Kriterium!)?
    2) können unabhängig davon beim Betrieb Menschen oder andere Lebewesen gefährdet oder geschädigt werden?
    (direkt oder indirekt, z.B. auch im Straßenverkehr, auf öffentlichen Wegen und Plätzen)
    3) können erhebliche Schäden an fremden Gegenständen auftreten (Betrieb in und außer Haus)?
    4) besteht ggf generell eine Gefährdungshaftung, sodass eine Haftpflichtversicherung abgeschlossen werden muss?
    Ein wichtiger Punkt fehlt noch:
    5) Kann das System im Fehlerfall einfach abgeschaltet werden?
    danke für die vielen Infos.

    Ich ersuche es mal mit Antworten:
    1) Nein, es ist nicht ein kommerzielles Produkt, sondern ein autonomer Roboter mit 2 µC-Systemen.
    2) Ja, das Ding wiegt ca. 18 kg und fährt durch eine Glasscheibe, wenn im Weg.
    3) Ja, möglich.
    4) Nein.
    5) Ja, das wäre nicht das Ziel! Es müßten stattdessen alle 6 Motoren (gesteuert vom 2. System) abgebremst bzw. gestoppt werden. Danach müßte gecheckt werden, ob das 2. System wieder hochgefahren werden kann und anschließend sollte es auf Kommandos des Hauptsystems (1.) wieder reagieren oder -falls das nicht möglich ist- ein Notprogramm fahren.
    Gruß
    Dirk

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Zitat Zitat von Peter(TOO) Beitrag anzeigen
    Hallo,
    5) Kann das System im Fehlerfall einfach abgeschaltet werden?
    Zitat Zitat von Dirk Beitrag anzeigen
    5) Ja, das wäre nicht das Ziel! Es müßten stattdessen alle 6 Motoren (gesteuert vom 2. System) abgebremst bzw. gestoppt werden. Danach müßte gecheckt werden, ob das 2. System wieder hochgefahren werden kann und anschließend sollte es auf Kommandos des Hauptsystems (1.) wieder reagieren oder -falls das nicht möglich ist- ein Notprogramm fahren.
    Ui, Königsdisziplin.

    Fall I: µC A hat einen Fehler
    Wie verhindert µC B das von µC A noch Steuersignale an die Motortreiber gesand werden die zusammen mit den Signalen von µC B komplett falsche Steuerbefehle ergeben.

    Fall II: µC A Funktioniert aber µC B hat ein Problem.
    µC B trennt µC A von den Motortreibern und schickt falsche Signale. Wie kann µC A µC B von den Motortreibern trennen?

    Fall III: Wie Fall (I)
    Aber µC A kommt durch Summierung mehrere Fehler zu dem Schluß das er derjenige ist, der richtig funktioniert. Infolge dessen trennt er µC B von den Motortreibern und es kommt zum Crash.

    Damit kommt man bei dem in der Luftfahrt angewandtem System der Mehrheitsentscheidung an.
    Also 3 Steuerungen und annehmen , das immer nur eine auf einmal falsch liegt. (hat bei dem Air France Absturz über dem Südatlanktik nicht funktioniert, da die 2 vereisten Pivotrohre 2 Systemen den selben fehlerhaften Messwert geliefert haben und so die Entscheidung zu ungunsten des einzig richtig funktionierenden Sensors viel.)
    In der überwiegenden Mehrheit der Fälle hat sich das System aber bewährt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Was machen µC A und B? Sind die schon redundant oder haben die verschiedene Aufgaben?

    EDIT: Ok, System B hat die Regelungsaufgabe der Motoren. A nicht.

    Was du willst ist praktisch SS1. Siehe
    https://de.wikipedia.org/wiki/Sicherheitsfunktion

    Siehe Siemens
    http://www.industry.siemens.com/topi...name=functions

    - - - Aktualisiert - - -

    Eine halbwegs einfache Idee:
    Wenn es sich bei den Motoren um Gleichstrommotoren handelt, kann durch Kurzschließen der Spule eine Bremswirkung erzeugt werden. (Generatorbetrieb)
    Ist alles in Ordnung, verbinden die Relais die Motoren mit der Antriebsendstufe. Im Fehlerfall ist der Motor kurzgeschlossen. Das lässt sich auch redundant machen.

    Die Erkennung des Betriebszustandes der Steuerung und damit die Ansteuerung der Relais müsste dann das folgende machen:
    * Jeder µC Watchdog. (Ausgang "alive" setzen, bzw Toggeln. Die Toggelfrequenz durch externe einfache Logikbausteine abfragen. Toggelt der Ausgang nicht regelmässig => µC hat ein Problem
    * Prüfen des Status der benötigten Komponenten. Navigation etc pp.
    * Ist der andere µC i.O? Heartbeat und andere Kontrollalgorithmen. Bsp: IMU + GPS: Stimmen die Werte beider CPUs überein?
    *

    Diese Bedingungen über Hardwaregatter "verunden" und die Freigabe der Endstufen steuern.
    Geändert von schorsch_76 (22.03.2016 um 08:38 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi schorsch_76,

    leider sind µC 1 und µC 2 nicht redundant.

    1:
    Main Prozessor für Hauptprogramm, Sensoren/Aktoren sind auch: Navigationssensoren (Lage, Magnet, GPS, Helligkeit, Bumper, ACS, Temperatur, ...), Kommunikation (Funk, IR), Batterieüberwachung (Temperatur, Spannung).

    2:
    Second Prozessor für Motoransteuerungen (6 H-Brücken) mit Fehlersignal, Motorstrom, Temperatur.

    Beide Systeme sind über I2C verbunden (2 I/O-Leitungen), möglich wäre noch eine weitere Direkt-Verbindung.

    Natürlich können beide Systeme in eine Fehlerbedingung kommen. Ich würde auch nicht so weit gehen, jedes System zweifach vorzusehen.
    Mir würde genügen, wenn jedes System erkennt, ob es selbst und sein Partner arbeitet. µC 2 soll im Fehlerfall die H-Brücken sicher in die Kurzschlußposition (Bremsen) bringen, anschließend wieder versuchen hochzufahren und auf Reaktion von µC 1 zu warten.
    µC 1 soll im eigenen Fehlerfall den Bremsbefehl an µC 2 noch absetzen und ggf. über die Kommunikation den Fehlerstatus melden (interner Fehler oder z.B. Lagesensor: umgekippt!). Im Fehlerfall von µC 2 soll er das auch melden und regelmäßig versuchen, die I2C-Kommunikation wieder aufzunehmen.

    Klingt einfach, macht mir doch aber einiges Kopfzerbrechen.

    Die Hauptfrage ist: Wie erkennt jeder µC einen gestörten Programmablauf, z.B. eine (falsche) Programmschleife, die eine Rückkehr in die Hauptschleife verhindert.
    Kann man z.B. einen Zähler in jeder regelhaft aktiven Funktion hochzählen und in einem Interrupt den Stand dieses Zählers abfragen: Wenn er außerhalb eines festgelegten Fensters ist: Fehler und ggf. Reboot!
    Aber auch damit wird man nicht alle Fehlerbedingungen erfassen.
    Gruß
    Dirk

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Zitat Zitat von Dirk Beitrag anzeigen
    Die Hauptfrage ist: Wie erkennt jeder µC einen gestörten Programmablauf, z.B. eine (falsche) Programmschleife, die eine Rückkehr in die Hauptschleife verhindert.
    Kann man z.B. einen Zähler in jeder regelhaft aktiven Funktion hochzählen und in einem Interrupt den Stand dieses Zählers abfragen: Wenn er außerhalb eines festgelegten Fensters ist: Fehler und ggf. Reboot!
    Das geht mit dem Watchdog.
    Dieser wird in der Hauptschleife zurückgesetzt.
    Wenn da ein Unterprogramm hängen bleibt, läuft der Watchdog ab --> Reset.

    Das mit dem Interrupts ist so eine Sache.
    Geht eigentlich nur mit einem NMI. Durch einen Stack oder Programmfehler können alle anderen Interrupts disabled werden.

    Wenn deine Regelfunktion spinnt, weisst du nicht ob dieser Zähler noch bedient wird. Bleibt der Wert innerhalb des Fensters ....
    Auch ein Counter innerhalb deines Interrupts kann z.B. durch einen falschen Zeiger überschrieben werden.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Die Motorsteuerung kannst auf die 2 µC aufteilen:
    C2 übernimmt Steuerung der Motoren
    C1 schaltet zB die Stromversorgung der Motoren frei.

    Wenn jetzt der I2C Bus ausfällt kann C1 einfach alle Motoren abschalten.

    Als Erkennung ob 2 µC arbeiten hatte ich mal folgendes im Einsatz: C1 schickt eine Zufallszahl an C2, C2 macht eine einfache Rechenoperation damit und schickt das Ergebnis wieder zu C1. C1 rechnet gleichzeitig das selbe und vergleicht die Ergebnisse.
    Damit kann man meistens den Fall abfangen wenn C2 einen Stack Überlauf hat und nur mehr Mist rechnet.
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    SS1.pdf

    So hab ich mir das vorgestellt ...

    Das untere AND sorgt dafür dass erst bei allen Bedingungen die Motoren eingeschalten werden können ... und zwar in Hardware. Wenn das einmal läuft, dann läuft es

    Erklärung:
    Das nachtriggerbare Monoflop und die Zwei Flankenerkennungen prüfen in Hardware, das der µC sein Togglebit von sich gibt.

    Bsp. kann man so auch den Heartbeat von A->B auf so eine Abfrage setzen -> Zentral AND
    Bsp. kann man so auch den Heartbeat von B->A auf so eine Abfrage setzen -> Zentral AND
    Navigation von µC A ok: -> Ausgang zum Zentral AND
    Endstufenlogik von µC B ok: -> Ausgang zum Zentral AND

    Auch wie Peter schon sagte, watchdog zum neustarten wenn was schief läuft. Damit fallen dann die Eingänge des Zentral AND weg (Heartbeat A oder B) und egal was der andere µC macht, die Motoren stehen. Wenn das Zentral AND gefallen ist, kann man auch in Hardware dafür sorgen, dass beide µC verzögert einen Reset bekommen um neu anzufangen.

    EDIT: Ok, ich seh gerade am Ausgang der Steigenden Flanke muss noch ein Inverter hin

    Gruß
    Georg
    Geändert von schorsch_76 (23.03.2016 um 21:12 Uhr)

Ähnliche Themen

  1. Sensor oder Schalter zum erkennen einer PokerKarte
    Von Andreas1984 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 25.12.2013, 01:17
  2. Microcontroller in Verbindung mit einer Funkstrecke
    Von Markus_05 im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 16.10.2012, 00:09
  3. Beenden einer ISR erkennen
    Von hacker im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 12.08.2009, 17:34
  4. Wie Abzweigung einer Linie erkennen?
    Von p_mork im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 16.08.2007, 10:39
  5. Aufbau von CNC Systemen für Roboter
    Von mostrich im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 7
    Letzter Beitrag: 20.08.2006, 17:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress