Fehlermodellierung für eingebettete Systeme


10

Ich habe eine drahtlose Sensorschaltung mit einem Mikrocontroller und einem 2,4-GHz-Transceiver- Modul , einige integrierte Sensoren mit I²C-Schnittstelle, einen UART-Port und die erforderlichen diskreten Komponenten.

Diese Platine wurde zum Spülen von Strom aus einem Solarpanel (PV) mit einem LiPo-Akku und einem Shunt-Ladegerät entwickelt . Dies ermöglicht es dem Sensor, sich selbst mit Strom zu versorgen und auf unbestimmte Zeit zu arbeiten, was die geringstmögliche Wartung erfordert.

Ich möchte die möglichen Fehler untersuchen, die in einem System wie diesem auftreten können und die auf Alterung, Verletzung von Umgebungsspezifikationen (Temperatur, Luftfeuchtigkeit usw.) oder falsche Wartung (keine Konstruktionsprobleme / Fehler) zurückzuführen sind um die Lebensdauer zu maximieren.

Die Umgebung, in der der Sensorknoten arbeitet, ist ein Gebäude, das an der Decke oder an den Wänden haftet. Extreme Temperaturen oder Regen werden also nicht berücksichtigt.

Was ich mir ausgedacht habe, sind einige Fehler, die ich zusammenzufassen versuche:

  • Komponente defekt -> Unterbrechung \ Kurzschluss
  • Sensor defekt -> falsche Ausgangswerte (aber wie falsch?)
  • Isolationsfehler durch Staub \ Wasser -> erhöhte Leckage
  • Temperatur außerhalb des Bereichs -> ???

Wie kann ich abschätzen, wie und warum der Sensorknoten ausfallen wird?


Vergessen Sie nicht, dass der Sensor nur von wem / was auch immer zerschlagen und mechanisch defekt werden kann, was zu Fehlern führen kann, die Sie sich vorstellen können.
Scharfzahn

Ja, inzwischen habe ich auch Manipulationen vernachlässigt, da dies ein Grenzfall ist ... aber jeder Vorschlag ist willkommen!
Clabacchio

Solarpanel wird durcheinander gebracht und erzeugt nicht genug Strom. Ich bin sicher, dass das Leben auf einem MEMS-Gerät sehr empfindlich für die Umgebung ist ... Vermutung.
Kenny

Was ist der Zweck Ihres Studiums? Dies kann beispielsweise die Reduzierung der Ausfallrate, die Verringerung des Fehlereffekts (Fail Soft), die Verringerung des Risikos (Erkennung von Fehlern anstelle eines unverblümten Vorgangs) usw. sein, die alle unterschiedliche Ansätze erfordern.
Wouter van Ooijen

Antworten:


7

Es gibt viel zu viele Freiheitsgrade, um "alle" möglichen Fehler zu verstehen. Es gibt jedoch Techniken, um Fehler früh im Entwurfszyklus (dh vor einer breiten Veröffentlichung) zu identifizieren und zu mindern.

Entwurfszeitaktivitäten (Pre-Hardware)

Peer Review ist immer eine gute Möglichkeit, Fehler zu finden. Lassen Sie Ihr Design von einer anderen Person analysieren und sich darauf vorbereiten, sich gegen ihre Fragen zu verteidigen (oder anzuerkennen, dass sie einen Fehler gefunden und behoben haben!). Es gibt keinen Ersatz für eine Überprüfung, und frische Augen sehen oft Dinge, die von müden übersehen werden. Dies funktioniert sowohl für Hardware als auch für Software - Schaltpläne können genauso einfach überprüft werden wie Quellcode.

Für die Hardware ist, wie andere gesagt haben, eine DFMEA ( Design Failure Mode and Effects Analysis ) eine gute Empfehlung. Fragen Sie sich für jede Komponente "Was passiert, wenn dies kurzgeschlossen wird" und "Was passiert, wenn dies im Leerlauf ist" und zeichnen Sie Ihre Analyse auf. Stellen Sie sich bei ICs auch vor, was passiert, wenn benachbarte Pins miteinander kurzgeschlossen werden (Lötbrücken usw.).

Für die Firmware können statische Code-Analyse- Tools (MISRA, Flusen usw.) verwendet werden, um versteckte Fehler im Code aufzudecken. Dinge wie schwebende Zeiger und Gleichheit statt Vergleich (= vs ==) sind übliche "Oopsies", die diese Tools nicht verpassen werden.

Eine schriftliche Betriebstheorie ist sowohl für Hardware als auch für Software sehr hilfreich. Eine Betriebstheorie sollte auf einer ziemlich hohen Ebene beschreiben, wie das System funktioniert, wie die Schutzfunktionen funktionieren, wie sequenziert wird usw. Wenn man einfach in Worte fasst, wie die Logik ablaufen soll, merkt man oft, dass einige Fälle möglicherweise übersehen wurden ("Ähm, waitasec, was ist mit diesem Zustand? ")

Testen auf Prototypenebene

Sobald Sie die Hardware in der Hand haben, ist es Zeit, sich an die "Arbeit" zu machen.

Nachdem alle theoretischen Analysen durchgeführt wurden, ist es wichtig, die Funktionsweise des Geräts innerhalb der Spezifikationen genau zu charakterisieren . Dies wird üblicherweise als Validierungstest oder Qualifizierung bezeichnet. Alle zulässigen Extreme müssen getestet werden.

Eine weitere wichtige Qualifizierungsaktivität ist die Analyse der Komponentenbelastung. Jedes Teil wird in einem definierten Betriebszustand gegen seine maximale Spannung / Strom / Temperatur bewertet. Um die Robustheit zu gewährleisten, sollte eine geeignete Derating-Richtlinie angewendet werden (80% der Spannung, 70% der Leistung usw. nicht überschreiten).

Erst wenn Sie wissen, wie sich die Dinge unter normalen Bedingungen entwickeln, können Sie über externe Abnormale oder mehrere Abnormale, wie Sie sie beschreiben, spekulieren. Auch hier ist das DFMEA-Modell (was passiert, wenn X passiert) ein guter Ansatz. Überlegen Sie, was ein Benutzer mit dem Gerät tun könnte - kurze Ausgänge, Signale zusammenbinden, Wasser darauf verschütten - probieren Sie sie aus und sehen Sie, was passiert.

Ein HALT-Test ( hochbeschleunigter Lebensdauertest ) ist auch für diese Systemtypen nützlich. Das Gerät wird in eine Umgebungskammer gestellt und mit Vibrationen von minimaler bis maximaler Temperatur, minimaler und maximaler Ein- und Ausgabe betrieben. Hier finden Sie alle möglichen Probleme, sowohl elektrische als auch mechanische.

Dies ist auch ein guter Zeitpunkt, um einige eingebettete Fuzz-Tests durchzuführen - üben Sie alle Eingaben weit über ihre erwarteten Bereiche hinaus aus, senden Sie Kauderwelsch über UARTs / I2C usw., um Lücken in der Logik zu finden. (Bit-Banged-I2C-Routinen sind zum Beispiel dafür berüchtigt, den Bus zu blockieren.)

Strife-Tests sind ein guter Weg, um Robustheit zu demonstrieren. Deaktivieren Sie alle Schutzfunktionen wie Übertemperatur, Überlastung usw. und üben Sie Stress aus, bis etwas kaputt geht. Nehmen Sie das Gerät so hoch wie möglich auf, bis etwas ausfällt oder ein unregelmäßiges Verhalten auftritt. Überladen Sie das Gerät, bis der Antriebsstrang ausfällt. Wenn ein Parameter nur geringfügig über den Worst-Case-Bedingungen ausfällt, ist dies ein Hinweis auf die Marginalität, und einige Überlegungen zum Design müssen möglicherweise überprüft werden.

Sie können auch den Next-Level-Ansatz wählen und einige Ihrer DFMEA-Schlussfolgerungen physisch testen - machen Sie tatsächlich die Shorts und Open und Pin-Shorts und sehen Sie, was explodiert.

Weiterführende Literatur

Mein Hintergrund liegt in der Energieumwandlung. Wir haben einen Industriestandard namens IPC-9592A, mit dem standardisiert werden soll, wie Produkte hinsichtlich der Tests und der Durchführung qualifiziert werden sollen. Viele der in diesem Dokument genannten Arten von Tests und Methoden könnten problemlos in anderen elektrischen Disziplinen verwendet werden.


6

Bei mehreren Geräten auf der I2C-Schnittstelle besteht die Möglichkeit des Problems "plappernder Idiot", bei dem ein Gerät ausfällt, den I2C blockiert und alle anderen I2C-Übertragungen beendet.

Einweichprüfungen in Kombination mit Umweltprüfungen würden eine andere Form der Fehleranalyse liefern. Die Verwendung von Randkomponenten, maximalen / minimalen / schwankenden Temperaturen, unterschiedlichen Luftfeuchten, verschmutzten Netzteilen, lauten HF-Umgebungen usw. über einen bestimmten Zeitraum simuliert einen viel längeren Zeitraum des normalen Gebrauchs. Das System weist echte Ausfälle auf und die Ausfallraten können berechnet werden.


3

Der wahrscheinlichste Fehler sind Firmware-Fehler. Alles, was ich getan habe, hat ein paar gehabt.

Stellen Sie sicher, dass Sie einen Watchdog-Timer aktiviert haben und dass alle kritischen Wiederholungsfunktionen ausgeführt werden müssen, bevor Sie den Hund streicheln. Ich setze gerne ein Flag im Timer-Interrupt und lösche damit den Watchdog in der Hauptschleife.

Testen Sie Ihre Firmware-Wiederherstellung auch über Reset-Zyklen.

Da beim Starten viele Fehler auftreten, schalte ich gerne ein Relais ein, schreibe dann ein schnelles Skript zum Aus- und Einschalten, warte, bis das Radio das Aufwecken anzeigt, und wiederhole es. Dann machen Sie dies für 10000 Zyklen oder so.


Sehr interessanter Power-On-Test. Meine letzte Firma hatte ein Projekt, das mehrere Jahre laufen musste, um mit einem dummen Sender synchronisiert zu bleiben, und konnte während dieser Zeit keine Fehler machen. Das Entfernen von Firmware-Fehlern war wahrscheinlich der schwierigste Teil.
Kortuk

2

Einige offensichtliche:

  • Batterieausfall. Möglicherweise Elektrolytverlust, der zu einer Verunreinigung der Elektronik führt
  • Überspannung von der PV-Anlage
  • Bewegt es sich oder in der Nähe von Maschinen? Dann Schock / Vibration
  • Kommunikationsverlust durch äußere Umgebung (Regen / Schnee absorbiert das Signal usw.).

Wenn Sie eine FMEA durchführen, müssen Sie zunächst überlegen, wie kritisch das System ist, bevor Sie entscheiden können, was einen Fehler darstellt.


2

Ich bin überrascht, dass niemand Accelerated Life Testing und Highly Accelerated Life Testing erwähnt hat .

Eines der wichtigsten Werkzeuge, die Ihnen zur Verfügung stehen, ist, dass mit jedem Temperaturanstieg von 10 Grad Celsius die durchschnittliche Zuverlässigkeit um 50 Prozent verringert wird. Sie können sich ein Bild von der Lebensdauer Ihres Produkts machen, indem Sie es bei einer stark erhöhten Temperatur testen. Sie müssen keine Komponenten testen, die über ihre Nenntemperatur hinausgehen , um dies zu nutzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.