Dieser Artikel beschreibt eine mögliche Implementierung eines automatisierten Systems zum Verwalten von Hardwareressourcen (am Beispiel elektromagnetischer Relais) in Bezug auf die absolute Zeit. Ein solches System kann sehr nĂŒtzlich sein, um das Problem der Testautomatisierung verschiedener GerĂ€te zu lösen.
In einigen Testlabors besteht beispielsweise die Notwendigkeit, das ZurĂŒcksetzen der Stromversorgung der untersuchten / getesteten GerĂ€te zu genau festgelegten Zeitpunkten in Bezug auf die absolute Skala (beispielsweise am Montag um 10:00 Uhr morgens) zu automatisieren. Die Aufgabe wird jedoch dadurch erschwert, dass die Entscheidung ĂŒber die Möglichkeit der DurchfĂŒhrung eines Energieverwaltungsvorgangs vom aktuellen Status anderer Hardwareressourcen des untersuchten GerĂ€ts abhĂ€ngt (z. B. die eine oder andere Ebene auf der Ausgangs-GPIO-Leitung).
Letzterer Umstand erschwert die Lösung etwas und lĂ€sst uns darĂŒber nachdenken, ein externes Hardwaremodul zu verwenden, in dem die erforderlichen Hardwareressourcen zur Lösung eines solchen Problems unterstĂŒtzt werden, nĂ€mlich Relais, Echtzeituhren, GPIO-Eingangsleitungen.
Die ersten Experimente haben wir mit der Arduino-Plattform durchgefĂŒhrt. Als es jedoch notwendig wurde, diese Lösung in groĂen Mengen mit stabiler QualitĂ€t zu kopieren, begannen sie, nach vorgefertigten Lösungen zu suchen. Aus diesem Grund haben wir das System mithilfe eines externen Laurent-5-Hardwaremoduls angepasst, mit dem der Steuerungsprozess ĂŒber Ethernet ĂŒberwacht werden kann.

Aus GrĂŒnden der Genauigkeit mussten wir die Stromversorgung des getesteten GerĂ€ts jeden Tag um 07:00 Uhr morgens kurz zurĂŒcksetzen. Ein Reset sollte jedoch niemals durchgefĂŒhrt werden, wenn das GerĂ€t weiterhin kritische VorgĂ€nge ausfĂŒhrt. In diesem Fall wird ein hoher Logikpegel (+3,3 V) an der GPIO-Leitung des Digitalausgangs des GerĂ€ts eingestellt.
Das Laurent-5-Modul wurde wie folgt an das TestgerĂ€t angeschlossen. Das GerĂ€tebereitschaftssignal wurde auf die diskrete Eingangsleitung IO_1 gelegt. Die Stromversorgung des GerĂ€ts wurde ĂŒber normalerweise geschlossene Kontakte des Relais RELE_1 weitergeleitet. Wenn das Relais eingeschaltet ist, wird die Stromversorgung des PrĂŒflings unterbrochen.

Um das System zu konfigurieren, mĂŒssen Sie zunĂ€chst die Richtung fĂŒr das GPIO IO_1 des Laurent-5-Moduls âam Eingangâ Ă€ndern. Am einfachsten lĂ€sst sich die Konfiguration ĂŒber die Webschnittstelle vornehmen (die Standardadresse lautet 192.168.0.101). Wir gehen zum Abschnitt "General Lines IO1 - IO8" auf dem Hauptbedienfeld.

Wir klicken auf den Pfeil in Zeile IO_1 und Ă€ndern die Richtung dieser GPIO-Zeile in den Status âEinâ, um den Status der Bereitschaftszeile des getesteten GerĂ€ts zu analysieren.

Als NĂ€chstes erstellen wir logische CAT-Regeln, die der Automatisierung der Analyse der Bereitschaftslinie und der Steuerung des Relais dienen.
Wir gehen in den CAT-Bereich und klicken auf die SchaltflÀche "Neues Ereignis erstellen". Es erscheint ein Fenster, in dem der neuen logischen Regel die ID = 1 zugewiesen wird.

WĂ€hlen Sie den Typ des RTC-Ereignisses aus. Die Aufgabe wird zum angegebenen Zeitpunkt abgeschlossen.

In den Ereigniseinstellungen geben wir die Antwortzeit an - jeden Tag um 07:00 Uhr morgens.

In Reaktion auf das Auftreten dieses Ereignisses mit Ke-Befehlen aktivieren wir die Operation der CAT-Ereignisse 2,3 und 4, die wir weiter erstellen werden. Es werden zusĂ€tzliche logische Regeln benötigt, um die Signalbereitschaft des GerĂ€ts zu analysieren und ein ZurĂŒcksetzen der Stromversorgung zu vermeiden, wenn es dafĂŒr nicht bereit ist.

Geben wir dieser logischen Regel zur Verdeutlichung einen symbolischen Namen.

Als Ergebnis wird ein neues Ereignis mit der ID = 1 in der Liste der logischen Regeln angezeigt:

FĂŒgen Sie die folgende logische Regel mit ID = 2 hinzu, die fĂŒr einen Timer mit einer HĂ€ufigkeit von 1 Mal pro Sekunde ausgefĂŒhrt wird.


Wir geben eine zusĂ€tzliche Bedingung an, die erfĂŒllt sein muss, damit die logische Regel funktioniert. Wir geben nĂ€mlich an IO_1 die Notwendigkeit eines niedrigen logischen Pegels an, wodurch signalisiert wird, dass das GerĂ€t fĂŒr ein ZurĂŒcksetzen der Stromversorgung bereit ist.

Wenn alle Bedingungen erfĂŒllt sind, schalten Sie die Ereignisse 2, 3 und 4 aus. Wir setzen den AntwortzĂ€hler fĂŒr Ereignis 3 (siehe unten) zurĂŒck und schalten das Relais RELE_1 fĂŒr 4 Sekunden ein, wonach es automatisch in seinen ursprĂŒnglichen (Aus) Zustand zurĂŒckkehrt.

Was kann ich jedoch tun, wenn das GerĂ€t âeinfriertâ und der Alarm die ganze Zeit ertönt? Dazu verwenden wir Ereignisse mit der ID = 3 und 4, bei denen wir den Anschein eines Watchdog-Timers mit dem Senden einer Alarmmeldung implementieren, wenn das GerĂ€t innerhalb einer festgelegten Zeit die Bereitschaft fĂŒr einen Hardware-Reset nicht signalisiert hat.
Erstellen wir ein Ereignis mit der ID = 3 gemÀà dem ĂŒblichen Zeitgeber mit einer Antwortfrequenz von einmal alle 1 Sekunde. Dieses Ereignis fĂŒhrt eigentlich zu nichts. Senden Sie einfach einen leeren $ KE-Befehl. Mit jeder Operation erhöht sich jedoch der BetriebszĂ€hler dieses Ereignisses. Mit einer logischen Regel mit der ID = 4 ĂŒberwachen wir diesen Wert. Wenn er einen bestimmten Schwellenwert ĂŒberschreitet (z. B. 300 Operationen, was 5 Minuten entspricht), stoppen wir die Operation und erhöhen den Wert der Programmvariablen VAR_1 fĂŒr die nachfolgende Analyse der Anzahl der fehlgeschlagenen Operationen.
Insgesamt sieht ein Satz logischer Regeln wie folgt aus. Um das gesamte System zu starten, reicht es aus, die Ereignisverarbeitung mit der ID = 1 zu aktivieren.

Und dann wird es folgendes geben: Jeden Tag um 07:00 Uhr morgens wird eine logische Regel mit der ID = 1 ausgelöst. In diesem Fall wird die Ereignisverarbeitung mit den IDs 2, 3 und 4 als Reaktion eingeschlossen Signalleitung) - Im Rahmen der Regel-ID = 2 wird die Verarbeitung der Ereignisse 2-4 abgeschaltet, der BetriebszĂ€hler fĂŒr die 3. Regel fĂŒr einen Zufallsfall zurĂŒckgesetzt und das GerĂ€t durch kurzes Einschalten des Relais zurĂŒckgesetzt.
Parallel dazu starten wir den Guard-Timer, der einmal pro Sekunde mit einer Uhr herunterzĂ€hlt. Indem wir den Wert des Watchdog-Timers im Rahmen der ID = 4-Regel ĂŒberprĂŒfen, können wir das Warten zum Absturz bringen und den Ausfall der gesamten Operation an diesem Tag durch Inkrementieren der Programmvariablen VAR_1 signalisieren, deren Wert dann ĂŒber TCP / HTTP fĂŒr die nachfolgende Analyse angefordert werden kann.