Moin, Ich wollte mal fragen, wie man ein System mit AVRs aufbaut, welches eine sehr hohe ausfallsicherheit besitzt. Kann man das nur Softwaretechnisch umsetzten, oder lässt sich das auch Hardwaretechnisch machen? (Grundcode in einen ROM brennen / Zweiter AVR der bei ausfall des ersten geswitcht wird? / etc) Ich freue mich für euere Anregungen. Greez Jey
Jey Bee schrieb: > Ich wollte mal fragen, wie man ein System mit AVRs aufbaut, welches eine > sehr hohe ausfallsicherheit besitzt. Definiere "Ausfallsicherheit" genauer: 1. Was ist ein Ausfall, d.h., was darf das System auf keinen Fall tun? 2. In welchem Rahmen wird es eingesetzt bzw. was sind mögliche "Bedrohungen"?
Naja, es darf auf keinen Fall etwas tun, dass es nicht soll. *gg Also konkret: Das System wird elektrische Kontakte und dazu passende Motoren mit riegeln haben (Schlosssystem). Bei einem Ausfall dürfen z.B. auf keinen Fall die Motoren irgend welche riegel öffnen etc. Entweder es funktioniert, oder alles ist dicht. In diesem Fall geht es auch nicht um Angriffe gegen Aussen, sondern um technisches Versagen.
Das wichtigste hier ist erstmal eine gute sichere Programmierung sowie eine sinnvolle Beschaltung (es dürfen z.B. nicht bei einem Stromausfall die Riegel öffnen bzw. der AVR darf nach einem Reset den Befehl geben, alle Riegel zu öffnen) Um zu Überwachen, ob dein AVR auch noch korrekt arbeitet, könntest du ein Rechteckimpuls ausgeben lassen und diesen dann mit einer Hardware auswerten. Fällt der Rechteckimpuls aus, hat sich (bei richtiger Programmierung) dein AVR aufgehangen. Dann kannst du (hardwaremäßig) alle Schlösser verriegeln.
Sowas macht man in den seltensten Fällen nur in Software. Not-Aus-Systeme müssen beispielsweise auch funktionieren, wenn die Steuerung (Software) nicht mehr geht. Ähnlich dürfte dein Problem auch geartet sein. Deine Riegel sollten stromlos von einer Feder in die gewünschte Endlage gedrückt werden. So funktionieren zumindest Haustüröffner. Der Strom für die Riegel sollte dann auch noch durch die Alive-Schaltung, die astroscout vorgeschlagen hat, freigegeben werden.
Stichwort Fail-Safe-Design (Fail-Safe heisst nicht fehlersicher, sondern sicher bei Fehler): Jede Komponente fällt automatisch in ihren sicheren Ruhezustand, wenn man nicht aktiv etwas dagegen unternimmt. Beispiel Türschlösser: Der Riegel geht per Feder in die sichere geschlossene Position. Nur durch das Anlegen einer Spannung kann er überhaupt ausgelenkt werden.
Das mit dem Rechteck ausgeben ist schon was feines, ein Missing-Puls-Detektor dahinter ( HW ) der dann auf den RST des AVR geht. Am besten noch den WD des AVR aktivieren ( dauerhaft! ), dann verrennt sich der µC nicht in irgend einer unerwarteten Dauerschlaufe.
Wie sieht es aus, wenn das Schloss mechanisch nicht verändert werden kann? Also es ist keine Feder vorhanden. Wie macht man es dann? Wenn man davon ausgehen kann, dass das System immer Strom hat, kann man ja eine Schaltung aus diskreten Bauteilen basteln, die den Riegel immer zu hält, ausser der uC bringt ein eindeutiges Kommando. Aber wenn es "Strom-Fail-Save" sein sollte, dann müsste man halt schon mechanisch dahinter, oder? hat sonst noch jemand ideen?
Um deine Frage genauer beantworten zu können, müsste man mal ein wenig mehr über die Riegel wissen. Müssen die nur eine Impuls zum Ändern der Position der bekommen oder einen Dauerstrom? Du könntest ggf. um das Problem mit dem Stromausfall zu lösen, einen Akku, der das System bei Stromausfall speißt, einbauen.
Ich hab nun ein solchiges Schloss vor mir. Das ganze sieht nun so aus. dass der Riegel automatisch über eine Feder in die Fail-Save-Position gehalten wird. Zum Entriegeln des Riegels gibt es eine Spule, die ich ansteuern kann. Somit ist das Schloss selber schon mal FailSave, weil es auch noch einen "I am God" Schlüssel gibt, mit dem man die Elektronik ümgehen kann. Zum Programm: Bisher habe ich nie explizit darauf geachtet (achten müssen), dass das wirklich sauber läuft etc. Wie muss ich vorgehen, wenn ich eine Software machen will, die wirklich eine niedrige Ausfall- und Fehlerquote hat? (neben WatchDog und co.)
Ein guter Anhaltspunkt sind z.B. die MISRA Rules, die insbesondere für Automotive-SW gelten: http://computing.unn.ac.uk/staff/cgam1/teaching/0703/misra%20rules.pdf
Ich glaub da gibt es kein Patentrezept, wie man eine zuverlässige Software schreibt. Als Tipp solltest du auf jeden Fall drauf achten, dass alle Komponenten, die du verwendest auch richtig initialisiert werden (auch alle PORTS zu Beginn des Programms). Häufig klappt es zwar auch ohne eine korrekte Initialisierung, aber halt nicht immer. Außerdem solltest du dir den Aufbau deines Programm im vorhinein genau überlegen, damit dir immer klar ist, was dein Programm wann gerade macht und was bei welcher Eingabe passiert (passieren könnte); z.B: auch bei einem Reset an einer beliebigen Stelle im Programm.
Nunja, das schlimmste was ich mir vorstellen kann, ist halt dass sich das System einfach so aufhänt. Hierzu kann man ja aber den WatchDog einsetzten. Wie hoch ist die Chance, dass er versagt? bei einem einfachen Reset durch den WatchDog oder von aussen dürfte nicht allzuviel Passieren, da die Spule für den Riegel ja nur für ein Paar Sekunden eingeschaltet werde muss.
Jey Bee schrieb: > Wie hoch ist die Chance, dass er versagt? Sehr hoch wenn vorher dein Spannungsregler versagt und die volle Betriebsspannung (z.B. 24V) auf den Prozessor läßt. Sicherheitsrelevante Systeme (bei denen eine Rückfallebene bzw ein sicherer Zustand existiert) arbeiten grundsätzlich mit externen (Window-) Watchdogs. Der Watchdog hat einen unabhängigen Takt (z.B. RC-Oszillator oder Resonator wenn der Hauptprozessor mit Quarz arbeitet). Der Watchdog hat entweder eine unhabhängige Versorgung oder es wird überwacht ob die Versorgung innerhalb des zulässigen Fensters (z.B. +/-5% Toleranz) liegt. (Falls nicht wird der sichere Zustand in Hardware herbeigeführt). Der Watchdog stellt zyklisch Fragen an den Hauptprozessor. Im Hauptprozessor wird daraus mit kryptografischen Verfahren eine Antwort generiert die nur dann richtig ist wenn alle Teilprogramme die für die richtige Reaktion des Systems verantwortlich sind in der richtigen Reihenfolge ausgeführt wurden. Wenn die Antwort falsch ist oder nicht zum richtigen Zeitpunkt beim Watchdog eintrifft dann schaltet der Watchdog in den sicheren Zustand. Alternativ wäre denkbar daß Du ein vollredundantes System mit 2 Prozessoren (unabhängiger Hersteller und Tool-Kette und unabhängiger Versorgung) aufbaust. Das eine System schaltet dann den Plus-Pol des Schlosses und das andere den Minus-Pol. Gruß Anja
Kleiner Erfahrungsbericht... Ich Arbeite recht viel mit avr's und habe denen auch immer recht gut vertraut. z.b. habe ich überall in meiner Wohnung bus Lichtschalter (Taster und Relai mit anbindung an ein rs485 ) jeder mit nem pic und noch nie hat einer einen fehler gemacht zumindest nicht das ich das gemerkt hätte Viele Atmel's in der Badezimmer decke für RGB Dekolicht. auch noch nie was falsch gelaufen Elektronisches Thermostat im Kühlschrank Atmel hatte sich nach einem Stromausfall obwohl watchdog aktiv war einmal aufgehängt naja und den Vogel abgeschossen hat meine Spülmaschinensteuerung - Ständiges aufhängen mit Watchdog - Unkontrolierte programmsprünge - Hauptprogramm aufgehängt Interrupts liefen normal - Hauptprogram normal aber Interrups angehalten - Vergessen der ansteuerung des lcd und letzendlich fast das überfluten der Küche zum glück hatte ich den original Wasserdruckschalter als Notaus mit angeschlossen Bei dem Projekt habe ich lange und intensiv den fehler gesucht und erst gefunden als ich längst eine neue spühlmaschine hatte es war ein defekter 5v Spannungsregler bei weniger als 50 ma hat er noch 5v gebracht aber über 50ma ist er eingebrochen bis auf unter 2v und das mögen avrs wohl nicht :) Fazit möglichst niemals "gefährliche hardware" ohne zweite absicherung betreiben
Hallo, zu dem Thema sicher Ansteuerung von Relaisspulen habe ich vor einigen Tagen noch folgendes entdeckt: An einem Ausgang (hier ein PIC18, soielt aber keine Rolle) wird über einen Vorwiderstand und Transistor ein Relais angesteuert. Wenn man nach einem Reset oder dem Einschalten zu lange wartet, und den Pin von Eingang auf Ausgang umschaltet, dann reicht die Spannung am Pin aus, um das Relais flattern zu lassen. Also beim Layout darauf achten, dáss ein entsprechender Pull-Down Widerstand verwendet wird. Gruß Dirk
Der ReverseCurrent einer Dioden kann auch schonmal einen AVR Eingang hochziehen... Hinterlistig wirds bei Erwärmung, dort nimmt er zu. Somit kann die Schaltung bis zu einer bestimmten Temp. sehr gut funktionieren, ab dann ist aber der "Wurm" (Rev.Curr.) drin !
Hallo, habe mal irgendwo gelesen, daß LEDs an hochohmigen Eingängen ein wenig wie Photodioden arbeiten können. Du könntest aber auch 2 CPUs einsetzen, die sich gegenseitig überwachen. Oder nimmst als 2. CPU einen anderen Prozessor. Oder beide CPUs haben unterschiedliche Programme. Auf alle Fälle hängt die Zuverlässigkeit hauptsächlich am Programm und an der Schaltung und deren Layout und Aufbau. Jogibär
Als erstes möchte ich mich bei allen für die vielen Anregungen bedanken. Eine zweite Spannungsversorgung zu errichten dürfte ja kein Problem sein. Und wenn ich einen genug grossen Pufferkondensator verwende, dürfte ja auch die Umschaltzeit keine Rolle mehr spielen. Aber nach welchem kriterium soll ich umschalten? Soll ich einen TinyAVR nur dafür abrichten, die Stromversorgung zu schalten? Was ist, wenn auch der versagt? Als weiteres habe ich es in betracht gezogen, zwei Microcontroller zu verwenden. Aber auch hier bin ich mir im umklaren, wie das ganze mit der Umschaltung funktionieren soll. Zudem währe es ja recht ungeeginet, wenn der eine Controller irgend wo im Programm hängen bleib, den (Relais-)port immer flackern lässt, und somit auch der zweite Controller ein Problem hat.
Jey Bee schrieb: > Soll ich einen TinyAVR > nur dafür abrichten, die Stromversorgung zu schalten? Was ist, wenn auch > der versagt? Das gibt keine zusätzliche Sicherheit. Der richtige Weg ist daß 2 Prozessoren sich gegenseitig überwachen und jeder von Ihnen kann im Fehlerfall unabhängig den sicheren Zustand herstellen. Eine Umschaltung ist problematisch: da kann immer noch der Umschalter als gemeinsame Fehlerquelle ausfallen. Gruß Anja
Wie würdest du das ganze mit der Stromversorgung regeln? Zu dem gegenseitigen Überwachen: Aber dann müssen ja die Controller wiederum miteinander Kommunizieren können, so dass der eine den anderen "überschalten" kann.
Sry wegen Doppelpost: Du meinst also, dass ich nur eine Spannungsversorgung habe (bzw. für beide Controller je eine), und wenn der eine Controller schlapp macht, setzt der andere Controller mit seiner eigenen Spannungsversorgung ein? Dann frage ich mich noch immer, wie ich sagen kann, welcher Controller die Überhand hat. Greez Jey
Hi Ich weiß ja nicht, wo der sichere Zustand wirklich ist. Ein Riegel, der etwas sicher zuhält muß: A: ohne Versorgungsspannung in die sichere Lage gebracht werden. B: Rückmeldung bringen und Gefahr meldenbei Versagen C: Doppelt (Redundant) ausgelegt sein, das es immer noch zu sicherem Verschluß kommt, wenn einer nicht mehr mag. Der Fehler wird festgestellt und muß beseitigt werden. Um es kurz zu machen: Nimm 2 Controller, am besten verschiedene Bauarten, aber beide mit dem selben Programm. Entweder, liegt bei der Anwendung, hast du zwei Kontakte in Reihe oder zwei parallel. Dazu die entsprechende Rückmeldung auf beiden Controllern. Nun kannst du eine Diagnose fahren: Beide Bedingungen erfüllt: ok, Nur eine Bedingung erfüllt, sicherer Zustand, aber weitere Schaltspiele nicht erlauben, bis Fehler beseitigt. Beide Bedingungen nicht erfüllt: Schlimmster Fall: Feuerwehr, Krankenwagen, Polizei, THW am besten gleich alle alarmieren..... Nee, letzteres dürfte dann nicht mehr auftreten. Letztlich bleibt immer die Frage: wo ist das schwächste Glied. Ist wie bei einer Kette. Du kannst alle Glieder doppelt so groß auslegen, vergißt du eines, geht die Kette kaputt. man kann natürlich auch nur mit Zwillen auf Spatzen schiessen ..... Gruß oldmax
Hi Kleiner Nachtrag. Es gibt Steuerungen extra für Aufgabenstellungen, die sichere Funktionen liefern. Schau mal unter dem Stichwort Safety SPS, ob du da mehr Infos bekommst. Da werden bspw. die Ausgänge gepulst, um einen Drahtbruch zu erkennen,, Eingänge mit einer Spannung aus dem Modul versorgt und das ganze innerhalb der Module überwacht. Schaltkontakte überprüft, ob sie in einem zugelassenen Zeitfenster schalten usw. Je nach Gefahrenpotential lassen es sich die Anwender das auch was kosten. Gruß oldmax
Vielen dank für deine erleuterung, oldmax Also das mit dem Kabelbruch erkennen werde ich mir noch genauer ansehen, könnte noch interessant sein. Der Riegel wird im Stromlosen zustand automatisch in der sicheren Position gehalten. Aber trotz allem bin ich mir noch immer im Unklaren, wie ich das Umschalten der beiden Controller realisieren soll, ohne dass sich beide gegenseitig ins Handwerk pfuschen.
Hi Also, das mit den zwei Controllern würd ich nur entwickeln, wenn es die Sicherheitsstufe verlangt. Ich hab sowas auch noch nicht gemacht, könnte mir aber vorstellen, du gehst da folgendermaßen vor: Jeder Controller bekommt gleiche Hardware und gleiches Programm, natürlich auf den Typ zugeschnitten. Relais haben Kontakte, die Arbeitskontakte legst du wie erforderlich entweder Parallel oder in Reihe. zusätzlich brauchst du jeweils einen Kontaktsatz für die Rückmeldung an die Controller. nun weißt du ja vom Programm her, welchen Zustand dein Relais melden sollte. Das war die einePrüfung. Immer noch können die Lastkontakte den Geist aufgegeben haben, daher brauchst du die Rückmeldung vom Stellglied, am besten Öffner und Schließer. Nun kannst du eine Fehlerauswertung machen. Bevor ich aber so weit gehe, würd ich erst mal prüfen, brauchts das. Klar, wenn's um die Türverriegelung eines Linienfliegers geht, keine Frage. Aber wenns nur darum geht, einen Affen im Käfig zu halten, denk ich, reicht einfache Rückmeldung und ein Controller. Hochwertige Sicherheits-SPS'en enthalten bis zu 3 CPU's mit unterschiedlicher Programmierplatform, um Fehler des Compilers auszuschließen. Und dann kontrollieren sie auch ihre Ergebnisse, bevor auch nur ein Befehl nach draußen geht. Der Spaß kostet dann aber auch richtig..... Gruß oldmax
Hallo Martin, Aber ich will ja kein SPS oder sonsitges fertig kaufen, sondern es selber lernen. Schlussendlich geht es aber darum, dass Wertsachen in einem Tresor zu schützen. Aber das mit den Relais währe ja auch doof (mechanisches versagen).
Jey Bee schrieb: > Aber trotz allem bin ich mir noch immer im Unklaren, wie ich das > Umschalten der beiden Controller realisieren soll, ohne dass sich beide > gegenseitig ins Handwerk pfuschen. > Du sollst nicht zwischen den Controllern umschalten!!!!!!!!! Du hast ein Schloßsystem mit Motoren oder Magneten (= Aktor) für die Riegel. Der Aktor hat 2 Anschlüsse. Mit dem 1. Controller steuerst Du den einen Anschluß z.B. +Pol deines Aktors. Mit dem 1. Controller unabhängig vom 1. Controller den 2. Anschluß z.B. -Pol des Aktors. Im Fehlerfall (Prozessor läuft nicht oder hat Über oder Unterspannung) wird der Anschluß stromlos geschaltet. Gruß Anja
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.