PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Design eines Redundanten Systems



Thalhammer
04.01.2014, 16:22
Hallo,
ich hab ein problem:
Mein nächstes Projekt ist ein Solarsegler.
Da ich dieses Flugzeug jedoch so bauen möchte das es auch ohne direkte Kontrolle längere Zeit in der Luft bleiben kann muss ich es so entwickeln, das es nicht beim kleinsten Fehler senkrecht im Boden einschlägt.
Aus diesem Grund möchte ich das ganze System redundant entwickeln, also alles doppelt.
Nun habe ich ein Problem:
Eingabe und Verarbeitung kann ich problemlos redundant gestalten, in dem ich einfach alles doppelt mache, aber wie mach ich das bei der Ausgabe, also die Servos und Motoren ?
Mein plan war Eine Master Slave anordnung bei der Verarbeitung, also eine Platine übernimmt normaleweise die Arbeit und gibt ein Signal in Regelmäßigen Abständen aus, die zweite Platine empfängt dieses Signal und wenn es für eine Bestimmte Zeit nicht mehr kommt übernimmt diese die Arbeit. Doch bei der Ausgabe hab ich das Problem, da ich diese ja an beide Platinen anschliesen muss und wenn eine Platine einen schweren Fehler hat kann sie diesen lahmlegen.
Als Ausgabe waren I2C oder PWM(normale Servos) angedacht, bei I2C hab ich das Problem wenn eine Platine den Bus dauerhaft auf Low legt und bei PWM wenn eine ihn dauerhaft auf high legt.

Wie kann ich das lösen ?
Gibt es eine besser Lösung für solche Probleme ?

MFG Thalhammer

Manf
04.01.2014, 16:36
Grundsätzlich gibt es den Weg über ein drittes kleines einfaches System, das übersichtlich und entsprechend sicher aufgebaut ist.
Das übernimmt die Entscheidung ob das erste Hauptsystem noch intakt ist oder ob auf das redundante System umgeschaltet wird.
(Dafür benötigt es sicher auch wieder eine gewisse Komplexität.)

Slowly
04.01.2014, 16:36
Stumpf über Relais ?

ranke
04.01.2014, 16:43
Ein wesentliches Problem bei Deinem Ansatz ist, dass Du eine Instanz brauchst die Dir sagt, dass ein Fehler aufgetreten ist und wo. Diese Information brauchst Du, um die gestörte Baugruppe stillzulegen. Ein Ansatz wäre alles dreifach auszulegen mit dem Ansatz "die Mehrheit hat recht". Das hilft schon mal gegen zufällige und unsystematische Fehler. Will man auch noch systematische Fehler (z.B. nicht gefundene Hard- oder Softwarebugs) abdecken, dann macht man alle 3 Verarbeitungswege mit unterschiedlicher Hardware und mit Software, die unabhängig von einander für die drei Hardwareversionen entwickelt wurde.

Thalhammer
04.01.2014, 16:49
Also stumpf über relais mach ichs sicher nicht, wenn dann über Transistoren.
Aber das grundproblem dass ich immer einen Punkt hab bei dem Alles schief gehen kann werd ich damit nicht los.
Ich vermute mal das es nicht machbar ist oder ?

//EDIT für den Beitrag von ranke:
Also alles dreifach auszulegen währe ein Ansatz der noch vertretbar ist, allerdings hab ich damit ja immernoch den Punkt andem ich überprüfe der nur einfach vorhanden und damit anfällig ist oder ?
Alles dreimal auf unterschiedlicher HW und SW ist mir der Aufwandt dann doch zu groß.

MFG Thalhammer

Slowly
04.01.2014, 17:11
Warum denn nicht? So wie ich Dich verstanden habe, erzeugst Du einen
regelmäßigen Impuls der bei Versagen der Baugruppe ausfällt.
Ein Relais mit Timer würde dann Potentialfrei die Ersatzschaltung auf die Aktoren Schalten.
Transistoren sind hübsch aber eben nicht potentiallfrei.
Ich habe früher Sicherheitsmodule für Flurförderfahrzeuge hergestellt.
Die letzte Instanz war immer ein Sicherheitsrelais.

ranke
04.01.2014, 17:24
Alles dreimal auf unterschiedlicher HW und SW ist mir der Aufwandt dann doch zu groß.

Kann ich mir vorstellen. Das wäre wahrscheinlich etwa das Sicherheitsniveau das für den Autopilot in der Verkehrsfliegerei gefordert wird.

Ansonsten: Überlegen, an welchen Stellen und durch welche Mechanismen Fehler auftreten können. Bei einer Kabelverbindung z.B. durch Leiterbruch. So etwas kann man mit einer Ruhestromüberwachung sofort feststellen und ggf. auf ein Backupsystem umschalten. Außerdem kann man feindrähtige Litzen und hochwertige Steckverbindungen verwenden, damit es erst gar nicht passiert. Bei Software Überwachung mit watchdog nutzen. Spätestens bei den Aktoren wirst du Schwierigkeiten bekommen alles doppelt (oder gar dreifach) auszulegen, weil es sonst zu mechanischen Verklemmungen käme. Da wird man auf bekanntermaßen zuverlässige Systeme vertrauen müssen. Bei längerer Nutzung wäre auch ein Wartungsplan sinnvoll, bei der Komponenten, die Verschleiß unterliegen, nach einer festgesetzten Betriebszeit ersetzt werden.
Generell gilt, dass der Aufwand schneller gegen unendlich geht als die Sicherheit gegen 100%.

PICture
04.01.2014, 17:32
Hallo!


Ich vermute mal das es nicht machbar ist oder ?

Die Natur zeigt, dass es machbar ist und einfache Redundanz (alles nur doppelt) ausreicht.

Thalhammer
04.01.2014, 23:18
Und wie soll ich bitte ein PWM Signal mit 50Hz (oder gar 100Hz wenn die servos da mit machen) durch ein Relais quetschen ?
Ne wenn schon potentialtrennung (was ja ansich ne gute idee ist) dann mit optokopplern oder ähnlichem.
Leiterbruch wollte ich dadurch verhindern, das ich soweit möglich alles auf der Platine verlege und zwischen den Platinen (Also Sensorboard->Mainboard->Aktoren) möglichst wenige Drähte (Also I2C oder usart) und diese dafür doppelt verlege (und zwar möglichst weit von einander entfernt).
Ich glaube ich vertraue einfach darauf, das eine Doppelte Auslegung reicht.

Slowly
04.01.2014, 23:35
Na über die Relaiskontakte. Die Fehlerhafte Baugruppe wird mit einem Umschalter komplett auf die funktionierende umgeschaltet. Ein Optokoppler wird auch nicht gehen, da dieser ja auch durch eine Fehlfunktion dauerhaft auf Low oder High die funktionierende Baugruppe beeinflussen würde.

PICture
05.01.2014, 00:01
Ich denke, dass zum Umschalten am stromsparsamsten bistabile Elektromagneten bzw. Relais wären.

Thalhammer
05.01.2014, 00:12
Ja ok logisch,
War jetzt grade irgendwie auf dem falschen Dampfer....

Peter(TOO)
05.01.2014, 01:56
Hallo,

Wie schon angedeutet hat die NASA bei der Mondlandung die wichtigen Systeme 3-fach ausgeführt und dann mit Majoritätslogik entschieden, dass die Mehrheit recht hat. Dabei wurden aber 3 identische Rechner verwendet.

Bei den heutigen Flugzeugen und Fly-by-Wire verwendet man 3 komplett unabhängig voneinander entwicklete Rechner, wie schon gesagt wurde, sowohl Hard- wie auch Software. Die Idee ist, dass die CPU z.B. einen Design-Fehler haben könnte (War ja z.B. beim 80386 mal so, der hat, je nach Temperatur, falsch multipliziert).
Die Aktoren sind auch 3-fach ausgeführt. Wobei das ganze so ausgeführt ist, dass eigentlich ein einzelner Aktor die Steuerung übernehmen kann. Der Rest geht dann rein mechanisch, die Kräfte des falsch angesteuerten Aktors werden vom einen "gesunden " kompensiert und der Dritte leistet die eigentliche Arbeit.

Eine andere Methode ist, das ganze nur doppelt auszuführen, wobei der Backuprechner dabei eine grössere Leistung haben muss. Der kleinere übernimmt dabei normalerweise die Steuerung. Der grössere beinhaltet die gesammte Steuerung wir der Kleine auch und zusätzlich vergleicht er seine Berechnungen mit denen des kleinen. Wenn der Grosse unterschiede feststellt schaltet er den Kleinen ab und übernimmt selbst.
Allerdings weiss man dabei nicht, welcher der beiden wirklich einen Fehler macht, es kann auch schief gehen.

Das Problem bei redundanten Systemen ist, dass sie komplexer als ein einfaches System sind. Die Fehleranfälligkeit steigt aber mit der Komplexität des Systems an.
Bei schlechter Planung kann ein redundantes System fehleranfälliger sein als ein einfaches!

Bei deinem I2C-Bus könnte man z.B. 2 FETs in Serie schalten. Der eine FET wird mit dem Steuersignal angesteuert. Der zweite FET wird dann mit dem invertierten Steuersignal über einen RC-Tiefpass angesteuert. Damit wird dann ein dauerndes Durchschalten im Fehlerfall verhindert.
Hilft dann aber nichts, wenn der Steuerausgang wild schaltet.

MfG Peter(TOO)

PICture
05.01.2014, 11:35
Bei einfachen Systemen in der Erdatmosphere wie hier ein Segelflugzeug, könnte am einfachsten z.B. ein Fallschirm sein, der bei einer Fehlfunktion der Hauptsteuerung das Gute noch rettet. Beispielweise beim Fallschirmspringen hat jeder Springer einen redundanten lebensretenden Ersatzfallschirm.

Am einfachsten wäre jedoch ein Steuerungsystem, der geprüft genug lang fehlerfrei funktioniert. Ich kann mir noch errinern, das z.B. frish entwickelte"on demand" Herzschrittmacher, vor Zulassung zur Serienproduktion (wie bei NASA), in einer künstlicher menschlicher Körperflüssigkeit mehr als 10 Jahre in klimatisierter Kammer bei +5 bis +45 °C mit vorgesehener Lithiumbatterie getestet wurden. ;)

Thalhammer
05.01.2014, 13:07
Also quasi alles doppelt rechnen und wenn ein Fehler auftaucht die aktuelle Position funken und das teil per Fallschirm kontrolliert abstürtzen lassen ?

White_Fox
05.01.2014, 15:06
Es muß ja nicht unbedingt gleich ein Absturz sein.

Du könntest die Steuerung z.B. als ein einzelnes System aufbauen.
Ein zweites System, das die eigt. Steuerung im Notfall abschalten kann, überwacht auf gefährliche Zustände. Dies kann z.B. eine zu große Sinkgeschwindigkeit sein, unzulässige Fluglage wie z.B. zu großer Neigungswinkel, zu starkes Rollen, usw.
Erkennt das zweite System eine von dir als unzulässig definierte Situation, schaltet es das primäre Steuersystem ab und fährt die Klappen in eine Position die es dem Segelflugzeug ermöglicht, selbstständig in eine stabile Fluglage zurückzukehren.

Ein Beispiel wäre, das Flugzeug ein klein wenig kopflastig auszubalancieren und das Höhenruder auf "Nase hoch" zu trimmen. Wenn du diese Parameter fein genug einstellst, wird das Segelflugzeug eigenständig geradeaus fliegen und dabei stetig, aber kontrolliert und langsam an Höhe verlieren. Wenn du die Seitenruderklappe/Querruderklappe noch etwas bewegst, zieht es Kreise. Beste Vorraussetzungen, um z.B. die Steuerung wiedr selbst zu übernehmen. Im prinzip entspricht dies weitgehend dem, was Peter(TOO) bereits vorgeschlagen hat.

Welche Lösung für dich optimal wäre, kannst aber nur du festlegen.
An deiner Stelle würde ich mir genau überlegen, wieviel % Sicherheit du brauchst und wieviel z.B. zu viel wäre. Alle Sensoren und Servoes dreifach verbauen wäre sicherheitstechnisch gut. Aber willst oder kannst du soviel Gewicht tragen? Oder gehört der Ausfall eines Servos zu den Fehlern, die du aufgrund ihrer geringen Wahrscheinlichkeit und des hohen Gewichtsaufwands lieber vernachlässigen solltest?
Und bietet ein einzeilner Mikrocontroller hardwaretechnisch alleine für deinen Fall vllt schon genug Sicherheit, immerhin geben Hersteller die Lebensdauer solcher Teile mit über 10 Jahren an.

Auch der Ansatz, die Software mehrfach zu entwickeln, ist in deinem Fall fragwürdig. Wenn ich mal annehme, dass das ein Einzelprojekt von dir ist, verpufft der Sinn hinter diesem Ansatz total. Denn wenn du ein Problem zweimal lösen sollst, wirst du wahrscheinlich zweimal auf diesselbe Lösung kommen. Wenn dein Lösungsansatz jedoch einen Fehler enthält, der in den Tests womöglich gar nicht auftaucht (man kann manchmal gar nicht so dumm denken wie Dinge passieren), dann ist dieser Fehler auch in jedem System drin, und der eigentliche Hintergedanke bei dieser Verfahrensweise ist zunichte gemacht.

Die Frage ist auch, was rechtfertigt wieviel Aufwand. Wenn es nur ein Fliegerle mit nem Meterchen Spannweite ist würde ich für ein einfaches Steuerungssystem gar nicht erst auf die Idee redundanter Auslegung kommen. Das Ding wäre nach nem Totalschaden schneller neugebaut als die Planung der Steuerung dauern würde. Wenn du es jetzt mit einem ausgewachsenen Großsegler zu tun hast, der in einem Thermikstrudel in der Gefahr steht auch mal außer Sicht zu geraten, ist das natürlich etwas vollkommen anderes...

Thalhammer
05.01.2014, 16:23
Du könntest die Steuerung z.B. als ein einzelnes System aufbauen.
Ein zweites System, das die eigt. Steuerung im Notfall abschalten kann, überwacht auf gefährliche Zustände. Dies kann z.B. eine zu große Sinkgeschwindigkeit sein, unzulässige Fluglage wie z.B. zu großer Neigungswinkel, zu starkes Rollen, usw.
Erkennt das zweite System eine von dir als unzulässig definierte Situation, schaltet es das primäre Steuersystem ab und fährt die Klappen in eine Position die es dem Segelflugzeug ermöglicht, selbstständig in eine stabile Fluglage zurückzukehren.

Ja ok das ist endlich mal nen guter Vorschlag :-)


Und bietet ein einzeilner Mikrocontroller hardwaretechnisch alleine für deinen Fall vllt schon genug Sicherheit, immerhin geben Hersteller die Lebensdauer solcher Teile mit über 10 Jahren an.

Was mir sorgen bereitet ist nicht die Lebensdauer der MC sondern dass ich evtl einen Fehler in HW oder SW mache.


Die Frage ist auch, was rechtfertigt wieviel Aufwand. Wenn es nur ein Fliegerle mit nem Meterchen Spannweite ist würde ich für ein einfaches Steuerungssystem gar nicht erst auf die Idee redundanter Auslegung kommen. Das Ding wäre nach nem Totalschaden schneller neugebaut als die Planung der Steuerung dauern würde.
Naja ist es beides nicht, ich beschreib den Plan mal ein wenig genauer:
-Ca. 3,5 M Spannweite
-Ca. 75cm Flügelbreite
-Möglichst eigenstabil
-Möglichst große Flugdauer mit möglichst wenig Stromverbrauch (Da ja über Solar und puffer akkus versorgt)
-Ca. 2q Meter Solarzellen macht zirka 300W max Leistung
-Geplant war das der Flieger 24 Stunden in der Luft bleiben kann, ob ich das halten kann bin ich noch nicht sicher.
Bevor sich einer Aufregt: Ja die 24Stunden flüge werden nur an orten durchgeführt wo keine Autos oder Person gefärdet werden können.
Also wie ihr seht, es ist kein richtiges Flugzeug aber doch auch nicht zu verachten.
Zudem ist das Teil durch die Solarzellen recht teuer weshalb eine Bruchlandung keine Option ist.

MFG Thalhammer

PICture
05.01.2014, 17:26
Zudem ist das Teil durch die Solarzellen recht teuer weshalb eine Bruchlandung keine Option ist.

Für Forschungszwecke könnte man hoffentlich die Solarzellen durch gleichschwere flache Akkus (z.B. Li-Po) ersetzen. :confused:

Thalhammer
05.01.2014, 17:29
Ganz am Anfang wird das Flugzeug ohnehin ohne die Zellen fliegen.
Aber es gibt ja auch ein später ;)