Den PC gegen SW-Abstürz usw. überwachen, mit dem das Arduino angeschlossen ist?

Moin zusammen,

ich würde gerne den PC, mit dem Arduino über USB angeschlossen ist, überwachen. Undzwar Wenn der PC gefroren, abgestürzt oder aus irgendwelchem Grund nicht mehr reagiert, soll Arduino handeln und TTL's ausgeben.

Interrupts? Aber wie? und was sind das?

Aber auch allgemein, irgendwie über USB Port per irgendwas abfragen?

Danke voraus für jede Meinung, Äußerung, Hinweis.

s.

Naja die kleinen Problemchen die nen PC haben kann sind ja vielfältig.

Der kann einfach ausgehen, dann reicht es wenn du auf dem PC was laufen hast, was dem Arduino alle x sekunden was schickt und der Arduino reagiert sobald nix mehr kommt. Vorrausgesetzt er hängt net am PC mit Saft.

Komplizierter ist es, wenn der PC einfriert. Da muss net immer alles hängen bleiben, im blödesten Fall läuft eine Sache net mehr und dein Prozess der den Arduino anfeuert läuft weiter.

=> Dann müsstest du ein Programm haben, dass Funktionen des PC´s checkt und das dem Arduino schickt und der dann halt gezielt was macht sobald gewisse Sachen net mehr gehen.

Wenn du sowas am PC nicht selber programmieren kannst, solltest du vll mal noch Software suchen, die das kann und eben Log-Dateien ausgibt. Mit Processing oder Java kann man die regelmäßig checken und das an den Arduino weitergeben.

MSI-AFterburner oder CPU-Z können z.B. Temperatur live in ne txt schreiben und die könntest du recht einfach denke ich öffnen und auf überhöhte Werte checken.

Wenn der PC beim Abflug den Reset des Arduino auslöst wird der Arduino nicht mehr viel von sich geben. Wenn der PC die USB Schnittstelle nicht mehr mit Strom versorgt genauso.

Was genau willst Du bei dem PC überwachen und warum?

Nebenbei: eine sehr beliebte Lösung um irgendwelche Kisten billig und effizient zu überwachen ist Nagios. http://www.nagios.org/. Das Teil ist open source und man kann es (wenn man das noch nie gemacht hat) in einem halben Tag bis einem Tag aufsetzen. Dann hat man auch gleich die üblichen Funktionen wie Mail Benachrichtigung, Eskalationsregeln oder Statistiken auch noch gleich mit dabei.

danke für die Meinungen..

Der PC, den das Arduino steuert, steuert auch über installierte Software (Windowsplattform- ja ich weiss :cold_sweat:) andere externe Hardwarekomponenten wie z.B: Galvos, Kamera, Leistungsgenerator usw.

Deswegen wäre es nicht schön bzw. fatal, wenn der PC und die Software abstürzen würde und die Komponenten die er steuert das nicht mitbekomen würden.

Deswegen soll das Arduino-Board das erkennen und entsprechende Maßnahmen einleiten.

Ich dachte, über USB könnte man irgendwie eine Funktion nutzen/bauen, dass bestimmte Funktionen des PC's überwacht werden könnte? So eine Art Nachricht, die Arduino zum PC schickt und auf die Antwort wartet, wenn keine in bestimmter Zeit zurückkommt, heisst es PC ist nicht in Ordnung und muss was gemacht werden.. Oder so..

@Udo Klein
Wie kann es denn sein, dass der PC beim Abflug den Reset des Arduino auslöst? Die Stromversorgung wird immer extern sein, damit man genau den zweiten Fall ausklammert.

Also ein Wachhund (Watchdog), lass auf dem PC ein kleines Programm laufen, das z.B. jede Minute einen Text an den Arduino schickt.
Wenn der Arduino 5 Minuten nichts bekommt, dann drückt der Arduino auf den Resetknopf des PC's. (Via Relais, Transistor oder FET)

Nur mit dem 1 minütigen Signal werden schon mal Bluescreens und USB-Aufhänger abgefangen.
Du kannst jetzt noch weitere Tests in dein Programm einbauen, sei das ein Datumsvergleich des letzten Kamerabildes, eine Datei anlegen und wieder löschen oder ein Unterprogramm aufrufen und wieder beenden, alles was bei einem Absturz blockiert werden würde.

Sonst auch direkt mit dem Arduino den Ausgang des Leistungsgenerator messen und überprüfen oder er sich ändert.

Oder mit einem Ethernet-Shield den PC anpingen, usw.

Ob er gleich Reset auslöst oder dich einfach mit einen Piep-Piep anlockt, über Ethernet twittert oder mit GSM-Shield eine SMS schickt musst du entscheiden.

Mach aber unbedingt eine lange Pause nach dem Reset, nicht das der PC defragmentiert und dann der Arduino auf Reset drückt.

@Transwrap
danke für die detaillierte Nachricht.

Wo finde ich so einen Wachhund/Watchdog. Da der PC schon sehr kritische Elemente steuert, wäre die ideale Lösung, wenn ich innerhalb 100µs-1000µs (1ms) man einen Fehlerzustand des PC's erkennt werden könnte und dann somit der ganze Prozess (welchen der PC ja steuert) abgebrochen werden könnte. Ob danach Arduino den PC per Reset-Taste neustartet oder mir eine SMS schreibt, sind nächste Aufgaben und Überlegungen. :grin:

Wichtig ist, dass Arduino den Freezee-Zustand / Software-Hardware-Ausfall/ Bluescreen, so schnell wie möglich erkennt und weitere Maßnahmen einleitet. und das am besten unter 1ms.

Interessant ist es, wie der PC über USB Arduino zufällig einfach so resetten könnte? Ich dachte, es geht nur der Hard-Reset über den Knopf auf der Platine?

Der PC kann bei einem Standard Arduino immer einen Reset über USB auslösen. Was ich nicht verstehe: wieso ist es so kritisch innerhalb 1ms einen Ausfall zu erkennen, dann aber aktzeptabel den PC zu reseten? Der Reset dauert doch garantiert länger als 10s bis das System wieder da ist???

Ich würde sowas jedenfalls nicht per Arduino sondern per Raspi + Nagios abfackeln.

Danke für eure Rückmeldungen. :slight_smile:

Der PC muss gar nicht resettet werden. Es geht nicht darum den PC zu resetten sondern den Rest des Gesamtsystems zu stoppen. Der PC ist nur eine quasi Steuerzentrale, aber die anderen Komponenten haben auch einen sogen. "Fehlereingang", welche man mit einem TTL Signal auch ausschalten kann.

PC-Resetten ist gar nicht wichtig! Ich will nur schnell wie möglich erkennen können, wenn PC Mist baut / erzeugt / abstürzt , und damit ich die anderen Komponenten schnell wie möglich ( per Arduino ) ausschalten kann.

Deswegen sind auch meine andere Frage über die Reaktionszeit von Arduino , wenn möglich unter 10µs.

Ich glaube Du verrennst Dich in ein Problem und ein Problemlösung das keines ist.
grüße Uwe

Hmm..

ich meine, Arduino soll mehrere Komponenten überwachen, unter anderen auch einen PC. Wie soll er es bei einem PC erkennen, dass der PC abgestürzt ist, oder nicht mehr reagiert? So was ist mit Arduino nicht realisierbar, meint ihr? :frowning:

Wie soll er es bei einem PC erkennen, dass der PC abgestürzt ist,

Genau das ist der Knackpunkt. Willst Du ein Programm überwachen, willst Du überwachen ob der PC noch läuft unabhängig ob eines der vielen Programme blockiert, geschlossen oder von der AntivirusSW als böse erkannt wurde? Du kannst schon ein Programm schreiben das allle x µS etwas über die seriele Schnittstelle an Arduino schickt, aber das sagt dann nichts aus ob ein anderes paralell laufenes Programm richtig arbeitet.
Grüße Uwe

Also Du fragst hier in zwei Threads (siehe "Reaktionszeit Arduino")sehr merkwürdige Sachen ab und verrätst uns einfach nicht was für ein System das eigentlich sein soll. Irgendwelche Komponenten die über einen Fehlereingang innerhalb von 10us abgestellt werden müssen und von einem PC aus gesteuert werden. Alles ganz kritisch und wichtig und dann soll das von einem Arduino überwacht werden???

Ich glaube, Du verstehst entweder Dein Problem nicht richtig oder Du verstehst es und willst gerade auf Kosten der Community eine billige Lösung bekommen ohne dafür etwas zu teilen. Soll heißen: solange Du nicht aufdeckst was Du genau vorhast kann Dir keiner wirklich helfen. Dafür verbrätst Du aber die Zeit anderer Leute. Das finde ich nicht besonders nett.

Was genau hast Du vor? Beschreib Dein System, warum es kritisch ist, was genau das gewünschte Verhalten ist und vieleicht kann man Dir helfen. Ansonsten: professionelle Hilfe kann man auch kaufen.