LabVIEWForum.de - Zählen bestimmter Ereignisse

LabVIEWForum.de

Normale Version: Zählen bestimmter Ereignisse
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein kleines VI (LabVIEW 8.5) entwickelt, dass einfach nur zählt, wie oft ein bestimmtes Ereignis (aktivieren eines Hebels (Boolesch)) vorkommt.
Als Erweiterung wird dieser Zähler jedes Mal wieder auf 0 gesetzt, wenn er größer 5 ist.

Nun meine 1. Frage: Ist diese Umsetzung so in Ordnung? Oder kann man es einfacher erledigen?

2. Das Beenden der Schleife durch den Stopp Knopf funktioniert nur eingeschränkt, nachdem ich Stopp betätigt habe, muss ich erst den Hebel auf Wahr stellen, damit sich das Programm beendet. Wie kann ich erreichen, dass Stop den kompletten Ablauf abbricht?

Danke im Voraus.
' schrieb:Nun meine 1. Frage: Ist diese Umsetzung so in Ordnung? Oder kann man es einfacher erledigen?

Du kannst ein ShiftRegister an der ausseren Whileschleife machen und im Event BoolChange ein +1 machen.

' schrieb:2. Das Beenden der Schleife durch den Stopp Knopf funktioniert nur eingeschränkt, nachdem ich Stopp betätigt habe, muss ich erst den Hebel auf Wahr stellen, damit sich das Programm beendet. Wie kann ich erreichen, dass Stop den kompletten Ablauf abbricht?

Für den Taster Exit auch ein Event machen.
oder den Timeouteingang an der EventStructur anschliessen, ansonnsten warten diese ewig auf einen Event, deshalb geht es auch nach dem Taster betätigen.

EDIT: noch ein Bild dazu
' schrieb:Du kannst ein ShiftRegister an der ausseren Whileschleife machen und im Event BoolChange ein +1 machen.
Für den Taster Exit auch ein Event machen.
oder den Timeouteingang an der EventStructur anschliessen, ansonnsten warten diese ewig auf einen Event, deshalb geht es auch nach dem Taster betätigen.

Danke, habe es noch so angepasst, dass nur von False -> True gezählt wird. Somit spare ich mir also 2 komplexere Cases und die Verwendung von lokalen Variablen.
So sollte es nun passen:
' schrieb:Danke, habe es noch so angepasst, dass nur von False -> True gezählt wird. Somit spare ich mir also 2 komplexere Cases und die Verwendung von lokalen Variablen.
So sollte es nun passen:

Also, den Exit Taster würde ich schon als Event machen. So wie du es jetzt hast, macht es alle 1ms den "Timeout Event",wenn schon so dann 100ms.
' schrieb:Also, den Exit Taster würde ich schon als Event machen. So wie du es jetzt hast, macht es alle 1ms den "Timeout Event",wenn schon so dann 100ms.

Das wäre eine zu hohe CPU Last, die 1ms?

Leider weiss ich grad keinen Ansatz, den Exit Taster als Event zu machen, dass er dass andere Event abbricht...
' schrieb:Das wäre eine zu hohe CPU Last, die 1ms?
Ja, ob zu hoch, jedenfalls sinnlos. Mach den Taster als Event und nicht den Timeout.

' schrieb:Leider weiss ich grad keinen Ansatz, den Exit Taster als Event zu machen, dass er dass andere Event abbricht...

Hää, machst du genau gleich wie du bereits den Umschalttaster gemacht hast.

Die Eventstruktur wartet (unsichtbar im Hintergrund) auf einen Befehel (Taster) und führt den definierten Event 1x aus inkl. die umgebende While-Schlaufe (Lebensschlaufe)
Ah, nun habe ich verstanden, wie es gemeint war. Sorry -_-

Nun klappt (fast) alles, wie ich es mir gedacht hab.

Noch eine Frage habe ich, die Ereignisstruktur funktioniert nur mit Frontpanel-Eingabefeldern? Zum Beispiel bei einer LED/Diode, wenn ich da deren Status überwache, tut sich nichts...

Trotzdem Danke,
Mat.
' schrieb:Ah, nun habe ich verstanden, wie es gemeint war. Sorry -_-

Nun klappt (fast) alles, wie ich es mir gedacht hab.

Noch eine Frage habe ich, die Ereignisstruktur funktioniert nur mit Frontpanel-Eingabefeldern? Zum Beispiel bei einer LED/Diode, wenn ich da deren Status überwache, tut sich nichts...

Trotzdem Danke,
Mat.
Jein, man kann auch programmatisch Events für die Event-Struktur auslösen:

Dann muss man die Property Node "Value (Signaling)" zum Setzen einen neuen Wertes verwenden, dann bekommt sowas die Event-Struktur mit.

Und dann gibt es noch die Möglichkeit benutzerdefinierter Events, dazu empfehle ich mal die entsprechenden Beispiele im NI-Examplefinder.

MfG, Jens
' schrieb:Jein, man kann auch programmatisch Events für die Event-Struktur auslösen:

Dann muss man die Property Node "Value (Signaling)" zum Setzen einen neuen Wertes verwenden, dann bekommt sowas die Event-Struktur mit.

Und dann gibt es noch die Möglichkeit benutzerdefinierter Events, dazu empfehle ich mal die entsprechenden Beispiele im NI-Examplefinder.

MfG, Jens

Danke, ich werde mich da mal durchhangeln.
Statt dem Überwachen einer LED wäre es bestimmt besser, direkt den entsprechenden Booleschen Ausgang zu überwachen, und jedes Mal, wenn die Flanke von False auf True wechselt, einen bestimmten Wert zu inkrementieren. Das muss doch irgendwie gehen ...
Referenz-URLs