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.