Forum: Mikrocontroller und Digitale Elektronik Anzusteuernde Komponenten vor µC-Fehlfunktion schützen ?


von Andreas P. (andreasp)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Route_66 H. (route_66)


Lesenswert?

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.

von Hop Triceratop (Gast)


Lesenswert?

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.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

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

von Andreas P. (andreasp)


Lesenswert?

@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.

von Olaf (Gast)


Lesenswert?

> 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

von Andreas P. (andreasp)


Lesenswert?

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 ?

von Karl H. (kbuchegg)


Lesenswert?

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)

von Hopp Triceratop (Gast)


Lesenswert?

>> 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.

von Ralph (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von Michael A. (Gast)


Lesenswert?

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.

von amateur (Gast)


Lesenswert?

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.

von Andreas P. (andreasp)


Lesenswert?

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.

von kaputt (Gast)


Lesenswert?

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.

von Regenexperte (Gast)


Lesenswert?

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.

von Klaus (Gast)


Lesenswert?

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

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

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.

von Ralph (Gast)


Lesenswert?

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

von amateur (Gast)


Lesenswert?

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.

von Max D. (max_d)


Lesenswert?

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.

von Hans-Georg L. (h-g-l)


Lesenswert?

Ü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 ;)

von Andreas P. (andreasp)


Lesenswert?

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.

von feda (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.