LabVIEWForum.de
Ansatz fuer einen Zustandsautomaten kombiniert mit "Unter"-VIs - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Ansatz fuer einen Zustandsautomaten kombiniert mit "Unter"-VIs (/Thread-Ansatz-fuer-einen-Zustandsautomaten-kombiniert-mit-Unter-VIs)



Ansatz fuer einen Zustandsautomaten kombiniert mit "Unter"-VIs - Hasenfuss - 26.03.2013 00:57

Ich möchte ein Konzept für einen Zustandsautomaten vorstellen und würde mich freuen, wenn Ihr mir an der einen oder anderen Stelle ein paar Tipps oder Hinweise geben könntet, wenn etwas an dem Ansatz nicht glücklich gelöst ist.

Stellen wir uns eine Maschine vor, die mehrere Sensoren hat und ein Steuergerät besitzt.

Die LabView-Bedienoberfläche soll mehrere Aufgaben erfüllen - zum einen das Steuern des Steuergerätes (hauptsächlich Eiin- und Ausschalten), zum anderen sollen die Messwerte der Sensoren erfasst, auf dem Bildschirm angezeigt und gespeichert werden.

Mein Ansatz sieht wie folgt aus

Mehrere "Unter"-VI
- zum Bedienen des Steuergerätes
- zum Aufzeichnen der Messwerte aus Sensor 1
- zum Anzeigen der Messwerte von Sensor 2 in einem Graph

In diesen "Unter"-VIs hängen Melder/Queues, mit denen aus dem Basis-VI die einzelnen Prozesse gestartet oder beendet werden können.

Mein Ansatz für den Zustandsautomaten sieht so aus, dass ich im Initialisierungsprozess die drei "Unter"-VIs starte und in separaten Threads laufen (es könnten auch separate while-Schleifen innerhalb des Basis-VI sein, die nicht im Zustandsautomaten sind). Wird z.B. die Taste "Aufzeichnung starten" gedrückt, dann wird der Melder "Aufzeichnung starten" auf TRUE gesetzt. Bei Aufzeichnung beenden analog der Wert auf FALSE.

Das angefügte Bild soll ein "Entwurfsmuster" eines solchen "Unter"-VI darstellen.

Würdet Ihr das mit verschiedenen Prozessen ähnlich handhaben?


RE: Ansatz fuer einen Zustandsautomaten kombiniert mit "Unter"-VIs - GerdW - 26.03.2013 09:09

Hallo Hasenfuss,

dein Konzept ist (ohne weitere Wertung) machbar. Es spricht nichts dagegen, eine übergeordnete Statemachine (die den allgemeinen Systemzustand überwacht) und mehrere untergeordenete Statemachines (die einzelne Geräte etc. überwachen) zu verwenden.

Ich verwende dies auch oft in meiner Software: Eine Bedienebene (Systemüberwachung) und viele verschiedene "Module" (DAQmx, Serieller Port, ..., Logging, Messwertüberwachung für NOTAUS, ...), die allesamt in ihren eigenen Routinen/Statemachines laufen. Die Kommunikation mit dem HauptVI läuft dabei über verschiedene Wege, von FGVs bis Queues ist da vieles dabei. Melder sind dann problematisch, wenn nicht sichergestellt ist, dass man diese schnell genug abfragt und keine Meldung verpasst...