Hallo, ich hätte mal eine Frage in die Runde der Profis, die vermutlich recht trivial ist. Ich möchte von einem µC z.B. ein Magnetventil, eine Pumpe, ein Motor, etc. steuern. Im einfachsten Fall per Relais lediglich ein/aus. Nun habe ich mir überlegt, wie schütze ich die Aktoren vor einer fehlerhaften Bedienung durch den µC, wenn dieser z.B. abstürzt, nicht richtig startet und entsprechend nicht richtig initialisiert wird, Spikes auf der Versorgungsspannung ihn aus dem Tritt bringen, usw... Ich möchte einfach vermeiden, dass ein Ausgang fälschlicherweise aktiviert wird und das sogar noch bleibt. (Beispiel Futterzufuhr für das Aquarium, Bewässerungssteuerung, Heizung, etc.) Bisher laufen Anwendungen von mir im kontrollierten Umfeld, so dass man so eine Fehlfunktion schnell erkennen würde. Wenn ich aber daran denke, sowas unbeaufsichtigt laufen zu lassen, erzeugt das schon deutlich höhere Anforderungen an Sicherheit. Ich hatte schon überlegt per Logikgatter an den Ausgängen nur bestimmte Bitmuster zum Schalten zuzulassen, aber das bringt auch nur die halbe Miete. Friert der Controller ein, bleiben die Ausgänge so stehen und der Garten ersäuft, bzw. die Fische werden überfüttert. Gibt es das sowas wie einen "Industriestandard" oder Best Practice, wie man sowas üblicherweise macht ? Oder löst man sowas nachgelagert (Zeitschalter, etc.) oder mache ich mir gerade zuviel Sorgen und sowas passiert einfach nicht ? Gruß, A.
Andreas P. schrieb: > Gibt es das sowas wie einen "Industriestandard" oder Best Practice, wie > man sowas üblicherweise macht ? Oder löst man sowas nachgelagert > (Zeitschalter, etc.) so ähnlich. Erst mal muss dein Programm 'fehlerfrei' funktionieren. Dann legt man einen Watchdog auf die Lauer, der vom µC in regelmässigen Zeitabständen zurückgepfiffen werden muss. Unterbleibt dieses Zurückpfeifen, dann ist die Annahme die, dass der µC aus welchen Gründen auch immer abgestürzt ist und nicht mehr korrekt arbeitet. Der Watchdog löst dann einen Reset des Systems aus, so dass der µC neu startet und erst mal alles wieder in eine geordnete Konfiguration bringt. Aber: Das darf nicht dazu führen sorglos zu programmieren. Die Sichtweise: "Ach da kann ich ja ein wenig schlampig programmieren, der Watchdog holt mein Programm ja eh wieder raus", das ist die falsche Sichtweise. Erst mal muss das Programm so fehlerfrei wie möglich sein. Der Watchdog ist nur noch die 'letzte Linie', die hoffentlich einspringt, wenn alles andere versagt. Auch ein Watchdog ist kein Allheilmittel.
Hallo! > Gibt es das sowas wie einen "Industriestandard" oder Best Practice, wie > man sowas üblicherweise macht ? Mehrkanalig homogen oder diversitär, evtl noch mit externem Watchdog.
Der Gedankengang ueberhaupt an sowas zu denken ist schon viel. Nennt sich Produktesicherheit, und muss vom der ersten Minute des Projektes eingeplant sein. Eigentlich noch vorher. Was geschieht wenn der Controller noch nicht programmiert wurde. Da darf natuerlich auch nichts geschehen. Wenn etwas schiefgeht, Software Absturz, Sensor defekt, Kabelbruch, usw, darf nie was schiefgehen. Immer muss das System in einen sicheren Zustand gehen. Bei der Entwicklung gilt das natuerlich nicht. Da muss man durch externe Massnahmen dafuer sorgen, dass nichts geschieht. Indem zB Temperaturen ueberwacht werden und ein Heizer manuell abgeschatet wird, usw. Falls das nicht moeglich ist. zB bei einer Seilbahnsteuerung, muss man das effektive externe System durch eine Simulation ersetzen, bis man absolut sicher ist, dass sich der Controller richtig verhaelt.
Vor allem muss du dir genau ansehen, welchen Zustand die I/Os von deinem uC im Reset annehmen und die Schaltung so auslegen, dass sie damit in einem sicheren Zustand ist. Sonst raucht dir beim ersten Start oder beim ersten Programmieren des uC die Schaltung ab. Idealerweise nutzt man die ISP-Pins der Programmierschnittstelle auch nicht für andere Funktionen, zumindest nicht für kritische Ausgänge. Mit freundlichen Grüßen Thorsten Ostermann
@Karl Heinz: Danke für den Tip, werde mich mal zum Watchdog schlau machen. Der fehlerfreie Ablauf des Programms steht völlig außer Frage. Mir geht es eher um externe ungeplante Einflüsse, die sich negativ auswirken und Zustände auf Ausgängen umschiessen oder sowas. Fiktives, noch nicht eingetretenes Beispiel wäre: Gartenbewässerung im Urlaub. Nachbar schweißt den Metallzaun von der anderen Seite und das elektrom.Feld bzw. Lichtbogen reißt den Controller um. Magnetventile auf und 14 Tage Wasser marsch. Sowas will ich vermeiden. Ich gehe jetzt mal davon aus, dass so ein WD im Controller vorhanden ist, oder ? Falls ja, wie ist denn sichergestellt, dass der noch läuft, wenn der µC bereits steht ? @Route66: Was ist denn mit "mehrkanalig diversitär" gemeint ? A.
> Nun habe ich mir überlegt, wie schütze ich die Aktoren vor einer > fehlerhaften Bedienung durch den µC, wenn dieser z.B. abstürzt, Zum einen durch die Verwendung eines Watchdogs und ueberlegten Einsatz desselben. Also geschickte Positionierung des Ruecksetzbefehls. Zum anderen durch Hardware. Steuer deine Aktoren ueber ein flankengetriggertes Monoflop an. Dann muss der Microcontroller dauerhaft Impulse ausgeben damit ein Ventil wirklich dauernd offen bleiben soll. Olaf
OK, gerade die beiden Beiträge in den Artikeln überflogen. Das ist in der Tat genau das, was ich suche. Nun ist nur noch die Frage. Funktioniert dieser WDT immer, auch wenn der Controller selbst hängt ?
Andreas P. schrieb: > @Karl Heinz: Danke für den Tip, werde mich mal zum Watchdog schlau > machen. Der fehlerfreie Ablauf des Programms steht völlig außer Frage. > Mir geht es eher um externe ungeplante Einflüsse, die sich negativ > auswirken und Zustände auf Ausgängen umschiessen oder sowas. Dann ist aber die elektronische/elektrische Auslegung fehlerhaft. > Fiktives, noch nicht eingetretenes Beispiel wäre: Gartenbewässerung im > Urlaub. Nachbar schweißt den Metallzaun von der anderen Seite und das > elektrom.Feld bzw. Lichtbogen reißt den Controller um. Sehr fiktiv: Denn so einfach geht das dann auch wieder nicht, das bei vernünftiger elektrischer Auslegung ein µC den Abgang macht. > Ich gehe jetzt mal davon aus, dass so ein WD im Controller vorhanden > ist, oder ? Falls ja, wie ist denn sichergestellt, dass der noch läuft, > wenn der µC bereits steht ? Das ist unabhängige Hardware. Die läuft immer mit. > @Route66: Was ist denn mit "mehrkanalig diversitär" gemeint ? nicht nur 1 System sonderen mehrere, die sich zb gegenseitig überwachen. Wenn 3 µC laufen und einer sagt 'Wasser marsch' und die anderen beiden kommen anhand ihrer Sensorwerte zu einem anderen Schluss, dann wird der eine überstimmt. (Ist jetzt nur ein Beispiel)
>> Mir geht es eher um externe ungeplante Einflüsse, die sich negativ > auswirken und Zustände auf Ausgängen umschiessen oder sowas. Sowas nennt sich EMV, und das muss man heute im Griff haben.
Tja und das ist der Schritt vom Basteln zum ernsthaften Entwickeln eines Produktes. Gerade dieser Teil nimmt oft mehr Zeit und Arbeit in Anspruch als das was das Produkt eigentlich machen soll. Wie man solche Entwicklungen betreibt ist in ISO Normen festgelegt. Für Automobilbereich heißt das Ding Iso26262 für andere Bereiche gibt es das Teil bestimmt auch, ich weiß jetzt nur die Nummer nicht. Vom Konzept her dürfte es da aber keine Unterschiede geben. http://de.wikipedia.org/wiki/ISO_26262 Darin ist auch beschrieben wie man analysieren kann welche Risiken es gibt, welche Auswirkungen sie haben, was man dagegen machen muss,....... Ist zum lesen ein sehr trockener Stoff, aber trifft genau den Kern deiner Frage. Die eigentliche Implementierung der Fehlererkennung und Behandlung ist danach "nur" noch handwerkliches Abarbeiten.
Andreas P. schrieb: > Ich hatte schon überlegt per Logikgatter an den Ausgängen nur bestimmte > Bitmuster zum Schalten zuzulassen, aber das bringt auch nur die halbe > Miete. Friert der Controller ein, bleiben die Ausgänge so stehen und der > Garten ersäuft, bzw. die Fische werden überfüttert. Du kannst die Einschaltdauer hardwaremäßig mit einem Monoflop wie 74HC4538 begrenzen. fchk
Andreas P. schrieb: > Ich gehe jetzt mal davon aus, dass so ein WD im Controller vorhanden > ist, oder ? Soetwas läßt sich einfach durch einen Blick ins Datenblatt klären. Meist ist einer drin, aber blindes Vertrauen kann daneben gehen.
Wenn Du keinen Wachhund im System hast kannst Du Dir ja einen bauen. Ein Timer erfüllt NOTFALLS auch diesen Zweck. Aber unter dem Strich helfen beide nix. Ein niedriger oder hoher Pegel an einem Anschluss ist ein niedriger oder hoher Pegel an einem Anschluss - und mehr nicht. Ob dieser vom Programm generiert wurde, oder durch das Grilllen der CPU entstand ist signaltechnisch gleichwertig. Eine Selbstüberwachung funktioniert nur, wenn das System auch funktioniert. Anders sieht das Ganze nur dann aus, wenn eine, völlig autarke, zweite Steuerung implementiert wird. Eigene Stromversorgung, maximale Trennung u.s.w. Nun hast Du nur noch das Problem, bei differierenden Signalen, zu entscheiden wer denn Recht hat.
Die Iso-Norm ist schon interessant, aber da ich in erster Linie nur meine private Bastelei absichern möchte, ist das schon ein wenig "drüber": Wenn ich das aber richtig zusammenfasse, dann sind "externe" Sicherungsmaßnahmen (Monoflop) außerhalb des Controllers durchaus üblich, genauso wie die interne Selbstüberwachung mittels Watchdog. Ich hatte mich nur gewundert, weil ich in vielen Schaltungsbeispielen sowas nicht gesehen habe. Aber dann weiß ich jetzt, was ich machen werde.
Frank K. schrieb: > > Du kannst die Einschaltdauer hardwaremäßig mit einem Monoflop wie > 74HC4538 begrenzen. > > fchk Das monoflop kann auch, insbesondere bei den oben beschrieben externen EMV Einflüssen, die Komponente sein die dann fehlerhaft reagiert.
Naja, Du machst eben Hardware-Verriegelungen. Wenn Du Ventile und Pumpen hast, geht's um Flüssigkeiten. Also baust Du einen Leckage-Sensor ein, der per Relais die Spannung für die ganzen Aktoren weg nimmt, sobald irgendwo etwas ausläuft. Das ganze kannst Du dann auch Zwei-Kanalig mit Selbst-Überwachung, Querschluss-, Kurzschluss- und Körperschluss-Erkennung machen, etc. Dann bist Du bei Industrie-Lösungen für die Prozess-Technik, wo mit unfreundlichen Flüssigkeiten gespielt wird.
Olaf schrieb: > Zum anderen durch Hardware. Steuer deine Aktoren ueber ein > flankengetriggertes Monoflop an. Frank K. schrieb: > Du kannst die Einschaltdauer hardwaremäßig mit einem Monoflop wie > 74HC4538 begrenzen. Als ich noch HW mit TTL gemacht habe, waren Monoflops verboten. Sie wurden als notorisch unzuverlässig eingestuft, da sie auf jeden Spike reagieren und daraus schöne lange Signale machen. Mir würde es also wiederstreben, ein Systems mit Monoflops sicher zu machen. MfG Klaus
Andreas P. schrieb: > Magnetventile auf > und 14 Tage Wasser marsch. Sowas will ich vermeiden. naja, eine Anlage sollte man scho so planen, daß sie beim Ausfall einzelner oder aller Komponenten in einen "fail-safe" Modus gelangt. Also sollte das Magnetventil im Ruhezustand geschlossen sein, und nur durch Steuerung durch den Controller auf gemacht werden etc.
Andreas P. schrieb: > Die Iso-Norm ist schon interessant, aber da ich in erster Linie nur > meine private Bastelei absichern möchte, ist das schon ein wenig > "drüber": Ja stimmt, aber darin findest du eine Anleitung wie man ein System sicher entwickeln kann. Zumindest Teile der Iso sind da für dich interessant. Insbesondere dieser Teil "Gefährdungsanalyse und Risikoabschätzung". Daraus lässt sich ableiten Was du Wie absichern musst. Du machst dann keine Absicherung nach Gefühl was sich lohnen könnte, sondern nach Bedarf. Die komplette Iso für ein solches Projekt umzusetzen ist weit außerhalb des möglichen und sinnvollen. Zum sicheren Abschalten: 1. externer Watchdog 2. SolidStateRelais in die Versorgungsleitung zu den Aktuatoren 3. µC triggert den Watchdog 4. Wenn Watchdog abläuft ohne getriggert zu werden, schaltet der WD das SolidStaterelais ab und resettet den µC 5. Damit sind alle geschalteten Aktuatoren stromlos. Du musst halt die Aktuatoren so Auswählen, das sie im stromlosen Zustand die sichere Position einnehmen. Zb das Ventil geschlossen ist
Das Maßnahmen ergriffen werden sollten, insbesondere wenn sie fast nichts kosten, wie Ventil zu wenn Baggerführer Willibald das Kabel erlegt hat, ist schon fast selbstverständlich. Für alles andere gilt aber: Je sicherer, desto aufwändiger, desto teurer. Und letztendlich jeder muss für sich entscheiden: Wie teuer bzw. sicher es werden darf.
Oder für mäßig gefährliche Dinge (wie dein Sprinkler) Standard-Transistor (NPN), Basis über ~5kOhm und 100nF Cap an den Port, Emitter an Masse, Collector über 1k Pullup an +5V und 1µF Elko an Masse. Dann zum Schalten den Port in Software getoggelt, wenn die Frequenz hoch genug ist (also der µC nicht hängt), dann ist am Collector nahezu Gnd, sonst +5 V. So hab ich z.B. mein Ladesystem für nen Power-Blitz gesichert und bis jetzt ging's gut.
Übliches Vorgehen ist eine Fehleranalyse. Also welchen Zustand kann dein System annehmen und was sind die Auswirkungen. dann kannst du nachdenken wie das "technisch" verhindert werden kann. das kann auch ein dickes Schild sein: "Achtung bei Urlaubsbeginn Stecker ziehen" ;). Es gibt oft keinen eindeutigen "Safety" Zustand. Beispiel die beliebten Schrittmotore manchmal ist der stromlose Zustand safe und manchmal brauchtst du ein Haltemoment für safe .. Oder bei einer Steuerung über mehrere überschneidende Achsen, wenn dein Schrittzähler nicht mehr stimmt weisst du nicht ob etwas im Weg ist oder nicht und eine Referenzfahrt geht dann auch nicht automatisch nach einem Restart. Bei Flüssigkeiten, Pumpen und Ventilen gibt es oft auch Überraschungen und es gibt im stromlosen Zustand oder bei Mehrwegventilen Überschwemmungen. Mir ist gerade kürzlich auch wieder so etwas privat passiert ... Regentonne 100 l ca. 1m hoch -> Pumpe auf dem Boden -> 1000 l Tank 1,7m hoch. Nachdem die Pumpe abgeschaltet hatte sank nach einiger Zeit der Wasserspiegel im Tank und ich suchte ein Leck ... nachdem mir aber aufgefallen war das sich die 100 l Tonne eigendlich schneller füllte, wie es bei dem Nieselregen sein sollte war mir klar, das das Wasser über die stromlose Pumpe zurück gelaufen war ... Den Schlauch im Tank nicht mehr so tief eingetaucht und gut wars ;)
In der Theorie sind mir die zu vermeidenden Betriebszustände meist klar. Stromlos schließende Magnetventile sind selbstverständlich. Der Differenzdruck ist auch ausreichend sie stromlos zu schließen usw. Das deckt die ganzen Fälle, wie Ausfall der Versorgungsspannung usw. ab. Mir ging es eher um die Fälle der aktiven Ansteuerung der Aktoren durch µC mit anschließendem weghängen in diesem Zustand. Hier habe ich jetzt zwischen den Zeilen verstanden, dass letztlich solche Lösungen immer individuell je Anwendungsfall sind, es sich aber als best practice durchsetzt, mit irgendeiner Art "Taktung" (also aktiven Statuswechseln) auf der µC Seite zu arbeiten um bei Stillstand dann den sicheren Zustand ansteuern zu können.
Nicht auf technische Lösungen versteifen, genau analysieren was passieren kann und was nicht.
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.