Wie industrielle Raspis mit einem externen Watchdog (WD) robuster gemacht werden können.

Einleitung.

Wenn das System ausfällt und einfriert (’sich aufhängt‘), sind Aufgaben wie ein Neustart erforderlich.
Es kann physisch schwierig sein, das System zu einem Zeitpunkt zurückzusetzen, zu dem es nicht von Menschen bedient werden kann, an einem Ort, an dem das System für Menschen nicht leicht zugänglich ist, oder möglicherweise aufgrund von Personalmangel, wo sich niemand findet, der sich um das Problem kümmert.
Da das System stillsteht, wird es schwierig, es aus der Ferne zu bedienen.

Hier kommt der Watchdog (WD) Mechanismus ins Spiel.

Die Rolle des WD ist einfach: Überwachung.
Die Rolle wird in der Regel regelmäßig überprüft, und wenn das System nicht mehr funktioniert, wird es zurückgesetzt.

Dieses Mal wurde der WD auf dem industriellen Raspi PL-R4 eingerichtet.
Die Unterschiede zwischen dem unabhängigen WD und dem in den Mikroprozessorchip integrierten WD werden hier so deutlich wie möglich zusammengefasst.

Dies ist eine der Funktionen, die in industriellen Anwendungen benötigt wird, da eine externe WD-Anordnung dafür sorgt, dass ein Reset durchgeführt wird.

Watchdog ist eine regelmäßige Überwachungsfunktion

WDs sind auch als WDTs (Watchdog Timer) bekannt. Das Wort ‚Watchdog‘ selbst bedeutet im Englischen ein Wachhund, und wenn nicht ein Hund, dann ein Wächter.

Das bedeutet, dass es sich um eine Funktion (einen Mechanismus) handelt, der regelmäßig einen bestimmten Ort überwacht. Sie beobachten also wie ein Wachhund.

Der Watchdog-Timer überwacht, ob das System ordnungsgemäß funktioniert.

Es gibt zwei Arten von Festplatten: eine wird extern als IC-Komponente installiert, die andere ist in den Mikroprozessorchip eingebaut.
Viele gängige PCs sind jetzt in das Produkt eingebaut. In den alten Tagen der Mikrocomputer (PC-98, 88) war ein Reset-Knopf offen an der Haupteinheit angebracht, und eine Person musste den Reset-Knopf drücken, um das System im Falle einer Anomalie wiederherzustellen.
WD ist ein System, das ständig auf Anomalien überwacht und sich im Falle einer Anomalie automatisch zurücksetzt.

Vorteile der externen WD

Der kommerzielle Raspberry Pi hat einen WD im Mikroprozessorchip eingebaut. Dies ist eine Methode, die über eine Konfigurationsdatei gesteuert werden kann.

Andererseits ist der WD im industriellen Raspi PL-R4 als externer WD implementiert; er ist auch so konzipiert, dass die Aktivierung/Deaktivierung der WD-Funktionen über DIP-Schalter gesteuert werden kann.

Der größte Vorteil der externen Platzierung ist, dass der WD zuverlässig funktioniert, solange der Strom eingeschaltet ist.

Das liegt daran, dass sich der interne WD im Mikroprozessorchip befindet. Wenn also der WD-Timer selbst anhält, werden auch die WD-Zählungen, die auf ihm laufen, angehalten, was zu einem nicht funktionierenden Muster führt.
Das bedeutet, dass das System nicht zurückgesetzt werden kann und nur durch menschlichen Zugriff auf das Gerät selbst behoben werden kann.

Externe WDs sind notwendig, um diese Situation bei industriellen Anwendungen zu vermeiden, bei denen einige Gerätestandorte möglicherweise nicht leicht zugänglich sind.

Die externe Montage von WD auf einem handelsüblichen Raspberry Pi kann mit einem Erweiterungs-HAT oder ähnlichem erreicht werden, aber die Installation auf der Hauptplatine ist aufgrund von Problemen mit der Platinengröße und höheren Kosten schwierig.

Da es sich um einen industriellen Raspi handelt, wird der WD auch im Außenbereich installiert, so dass eine nahezu störungsfreie Umgebung gewährleistet ist.

Rolle und Funktion des Watchdogs

Es ist etwas schwierig zu sagen, was WD eigentlich tut, aber man kann sagen, dass es einfach ein festes Intervall in Form eines Zählers (Zeit) misst.

Um eine sehr abstrakte Analogie zu geben, stellen Sie sich vor, dass Sie an eine Tür klopfen und diese nach einer Sekunde antwortet. Stellen Sie sich vor, Sie klopfen regelmäßig an diese Tür und irgendwann, nach zwei oder drei Sekunden, kommt keine Antwort. Nach fünf Sekunden erkennen Sie dies als eine abnormale Situation und weisen die Tür an, geöffnet zu werden (neu zu starten).

WDs führen wie WDTs (Watchdog Timer) in regelmäßigen Abständen einen Zähler (Timer) und einen Prozess zum Zurücksetzen des Zählers durch.

Dies ist dasselbe wie die Bestätigung der Sicherheit einer Person.
Wie geht es Ihnen?“ und besuchen Sie sie in regelmäßigen Abständen.
Normalerweise antwortet die Person, aber heute, egal wie viele Minuten man wartet, antwortet sie nicht. Das ist beunruhigend, nicht wahr?

WD ist die Rolle und Funktion eines ungewöhnlichen Zustands, d.h. die Feststellung, dass es sich um eine anormale Situation handelt.

Der Timer des externen WD im industriellen Raspi PL-R4 ist wie folgt.

① ist die Zeit, die das WD wartet, wenn das System hochfährt. Wie die Angabe ’60 180′ zeigt, gibt es eine leichte Schwankung, die von 1 bis 3 Minuten reicht.
In der Praxis dauert es etwa 2 Minuten (120 Sekunden), bis der WD zu arbeiten beginnt.
Die „1 3“ in Teil ② ist die Anzahl der Sekunden, die das Zurücksetzen dauert. Auch hier gibt es eine gewisse Schwankungsbreite, die von 1 bis 3 Sekunden reicht.
In der Praxis dauert das Zurücksetzen des Systems etwa 2 Sekunden.

Um Ausnahmen zu vermeiden und einen zuverlässigen Betrieb zu gewährleisten, wird bei der Programmierung von weniger als 60 Sekunden bzw. weniger als 1 Sekunde ausgegangen.

Er ist dafür verantwortlich, den normalen Betrieb fortzusetzen, indem er den WD-Zähler kontinuierlich in einer Zeit zurücksetzt, die kürzer ist als die Zeit, die das System zum Zurücksetzen benötigt.

Wenn die WD-Zähler aufgrund einer Anomalie nicht zurückgesetzt werden, wird das System zurückgesetzt (neu gebootet).

WD-Einstellungen (für PL-R4)

Die folgende Konfigurationsmethode unterscheidet sich von der des kommerziell erhältlichen Raspberry Pi. Dies ist die Einstellung für den PL-R4.

Der im Raspberry Pi OS vorinstallierte WD ist ein Software-Watchdog im Mikroprozessor-Chip. Er ist in diesem Fall nicht direkt relevant.
Für den ‚PL-R4‘ ist Folgendes erforderlich.

  • Dip-Schalter Umschaltung
  • Bearbeiten Sie config.txt.
  • Führen Sie Ihre eigenen Programme durch

Dip-Schalter Umschaltung

Die WD-Funktion wird aktiviert, indem Sie den ersten der beiden Dip-Schalter auf der Platine auf die Seite ON stellen.
Die genauen Standorte sind auf dem Bild zu sehen.

Die Umschaltung allein ermöglicht keine WD.
Ändern Sie dann die config.txt und richten Sie Ihr eigenes Python-Programm ein, das automatisch ausgeführt wird.

Bearbeiten Sie config.txt.

[all]Wenn WD/CSI im Abschnitt config.txt auskommentiert ist, entfernen Sie die Markierung und aktivieren Sie sie. Dies ist eine exklusive Verwendung mit dem CSI des Kameramoduls.

sudo nano /boot/config.txt

Die vorzunehmenden Änderungen betreffen die folgenden Bereiche.
Prüfen Sie, wo sie aktiviert und nicht auskommentiert ist.

[all]

dtparam=i2c0_baudrate=400000
dtoverlay=i2c0,pins_0_1

#WD/CSI select
#dtparam=i2c1_baudrate=400000
#dtoverlay=i2c1,pins_44_45

#dtoverlay=imx708

Dies ist im Allgemeinen das Gegenteil der Verwendung des CSI-Ports im Kameramodul.

Programmbeispiel

Das letzte, was Sie brauchen, ist ein Programm zum regelmäßigen Zurücksetzen des externen WD.

Wie zu Beginn dieses Abschnitts erwähnt, geht es darum, zu messen, ob ein bestimmter Timer zählt.
Dieses Testprogramm verwendet die GPIOs 44 und 45, um den WD periodisch zurückzusetzen.

Beispiel für ein Python-Programm:

import RPi.GPIO as GPIO
import time

WDEPIN = 44
WDRPIN = 45

GPIO.setwarnings(False)

GPIO.setmode( GPIO.BCM )
GPIO.setup( WDEPIN, GPIO.OUT )
GPIO.setup( WDRPIN, GPIO.OUT )


while 1:
        GPIO.output( WDEPIN, False )
        GPIO.output( WDRPIN, True )
        time.sleep( 1.0 )
        GPIO.output( WDRPIN, False )
        time.sleep( 1.0 )

In der Praxis ist es notwendig, sie z.B. in proprietäre Anwendungen einzubinden.

wdrst.pyZu Testzwecken wird die obige Datei beim Start ausgeführt./etc/rc.localDie Beschreibung befindet sich im folgenden Abschnitt.
Wenn WD hingegen nicht verwendet wird, sollte die Beschreibung in rc.local auskommentiert oder gelöscht werden, damit sie nicht automatisch gestartet wird.

Ergänzungen zu rc.local:

#WD
python /home/pi/wdrst.py

exit 0

Hier ausgelassen: rc.local ist eine Möglichkeit, Programme zu schreiben, die automatisch vom Raspberry Pi ausgeführt werden.
Das Anhängen an rc.local ist eine Form des Schreibens vor exit0, das von Anfang an vorhanden ist.

Die WD-Funktion ist jetzt nach dem Neustart aktiviert.
Überprüfen Sie den Betrieb so bald wie möglich.

Bestätigung des WD-Betriebs

Eine Möglichkeit zu überprüfen, ob der WD nach einem Neustart funktioniert, ist, das System tatsächlich aufzuhängen, um zu sehen, ob es automatisch neu startet.

Um sich künstlich aufzuhängen, verwenden Sie Befehle, die forkbomb ausführen oder eine Kernel-Panik auslösen.

Gabelbombe

Formbomben ermöglichen es, Prozesse nacheinander zu replizieren, so dass die Gesamtzahl der Prozesse riesig ist und kein Platz mehr für andere Prozesse bleibt.
Sie werden feststellen, dass das gesamte System ab dem Moment, in dem Sie es starten, langsamer wird.
Wenn Sie eine Verbindung über SSH herstellen, wird auch SSH bald nicht mehr funktionieren.

Forkbomb Shell-Befehl:

:(){ :|:& };:

Nach der Ausführung wird die folgende Meldung im Terminal angezeigt.
In dieser Umgebung wurde das System nach 10 bis 15 Sekunden neu gestartet. Erfolg.

-bash: fork: retry: リソースが一時的に利用できません*1
-bash: fork: メモリを確保できません*2
-bash: fork: retry: リソースが一時的に利用できません*1
(続く)

*1 Ressource vorübergehend nicht verfügbar
*2 Speicher kann nicht zugewiesen werden
Andere Prozesse hingen sich auf, weil ihnen die Ressourcen ausgingen, und das System musste neu gestartet werden, weil eine bestimmte Anzahl von Prozessen überschritten wurde, die regelmäßig von WD überprüft wurde.

Kernel-Panik

Kernel-Paniken können auch einen Systemstillstand aufgrund einer Anomalie reproduzieren.

Kernel-Panics, die Windows-Benutzern nicht bekannt sind, treten auf, wenn ein interner fataler Fehler auftritt.
Ich habe dieses Problem auch schon ein paar Mal mit dem Raspberry Pi 3 und 4 erlebt.

Dies kann entweder software- oder hardwareseitig geschehen, aber wir haben dieses Phänomen auf dem Raspberry Pi aufgrund einer Beschädigung der microSD-Karte festgestellt. Dies kann durch übermäßiges Wiederbeschreiben passieren. Wir wissen nicht genau, wie oft das passiert ist, aber wir haben es schon 3 bis 4 Mal mit viel Pech erlebt.

sudo suDie folgenden Befehle können nur mit Root-Rechten ausgeführt werden. Werden Sie daher vorübergehend Superuser und führen Sie sie aus.

Befehle, die Kernel-Paniken verursachen:

sudo su
echo c > /proc/sysrq-trigger

In beiden Fällen wurde bestätigt, dass das System in etwa der eingestellten Anzahl von Sekunden neu startet.

Wenn der WD nicht funktioniert, bleibt das System hängen und kann nur durch physisches Entfernen des Netzteils neu gestartet werden.
Außerdem verzögert sich die Wiederherstellung, wenn der Zeitpunkt des Fehlers nicht bekannt ist, und das System wird einige Zeit lang nicht betriebsbereit sein.

Ein Neustart des Systems bietet eine minimale Wiederherstellungsreaktion.

Auswahl des richtigen Geräts für die Umgebung, in der es betrieben werden soll.

WD überwacht das System wie ein echter Wachhund, um sicherzustellen, dass es ordnungsgemäß funktioniert.

Die meisten Dinge, einschließlich dieses WD, können auf einem handelsüblichen Raspberry Pi ausprobiert werden.
Für die Verwendung des Raspberry Pi in industriellen Anwendungen ist jedoch ein robusteres System erforderlich.
Das liegt daran, dass sich einige Anlagen in heißen, unzugänglichen Gebieten und in unterschiedlichen Umgebungen befinden.

Während der Überprüfung des WD-Betriebs hatten wir den Eindruck, dass ein extern implementierter WD eine sichere Sache ist, wenn Sie eine Systemumgebung wünschen, die plötzliche Probleme vermeidet.
Im Gegensatz zum kommerziell erhältlichen Raspberry Pi könnte dies als einer der Gründe verstanden werden, warum der PL-R4 für industrielle Anwendungen bestimmt ist.

Obwohl die Methode sich von dieser unterscheidet, kann der intern konfigurierte WD auch auf einem kommerziellen Raspberry Pi verwendet werden.
Wenn bei einem internen WD der Mikroprozessor-Chip ausfällt, wird auch das WD gestoppt, was dazu führen kann, dass es nicht mehr neu gestartet werden kann.
Sie werden feststellen, dass Sie beim Ausprobieren etwas unsicherer sind.

Schließlich ist ein externes WD ein zuverlässiges System. Für ein System, das sich nicht aufhängt, ist der industrielle Raspi eine zuverlässige Wahl.


Artikel beigetragen von Raspida

Raspberry Pi-Informationsseite, die auch von Nicht-Ingenieuren genutzt werden kann. raspida.com Raspida betreibt raspida.com, eine Raspberry Pi-Informationsseite, die auch für Nicht-Ingenieure interessant ist. Trägt zur PiLink-Website über den Raspberry Pi für den industriellen Einsatz bei.