LabVIEWForum.de
Ereignis Struktur - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Ereignis Struktur (/Thread-Ereignis-Struktur)



Ereignis Struktur - 911tom - 20.12.2017 12:46

HI,

hab hier ein kleines Bespiel gebaut um die Ereignis Struktur zu verstehn.
Vielleicht gibt es auch eine einfachere Lösung.
Kurz zum Programm.
Es werden Zahlen zeilenweise ausgelesen.
Dann wird eine Zahl um 1 erhöht bis =10, dann kommt die nächste Zeile.
Abgebrochen werden soll sofort per Stop Taster.

Ich möchte realisieren dass der Benutzer eine Datei auswählen muss und dann mit Start
das Programm starten kann und per Stop beenden.
Also ein einfaches Bedienpanel dass jeder Bedienen kann.


RE: Ereignis Struktur - Freddy - 20.12.2017 13:16

Hallo 911tom,
das ist eine While-Schleife und keine Ereignisstruktur.

Die Auswahl der Datei ist nur vor dem Start des VI möglich.

Für Ereignisse musst Du in eine While - Schleife eine Ereignis - Struktur legen.
Schau mal in die Hilfe.

Gruß
Freddy


RE: Ereignis Struktur - 911tom - 20.12.2017 13:31

Falsche Datei. Angel_not


RE: Ereignis Struktur - Freddy - 20.12.2017 13:39

Eine While - Schleife, die mit einer Errormeldung beendet wird, wird definitiv erst beendet wenn ein Error auftritt.
Ich will damit sagen, entweder den File gibt es nicht oder du kommst aus der Schleife nicht mehr raus.
Aus diesem Grunde wird es auch kein weiteres Ereignis geben.

Im Ereignis "Start" die Äußere While Schleife entfernen.

Gruß
Freddy


RE: Ereignis Struktur - GerdW - 20.12.2017 13:52

Hallo,

Zitat:Eine While - Schleife, die mit einer Errormeldung beendet wird, wird definitiv erst beendet wenn ein Error auftritt.
Ich will damit sagen, entweder den File gibt es nicht oder du kommst aus der Schleife nicht mehr raus.
Aus diesem Grunde wird es auch kein weiteres Ereignis geben.
Nun ja: je nach Länge der gelesenen Datei kann es sehr lange dauern, bis das Event abgearbeitet ist!
Pro Iteration der äußeren Loop wird eine Zeile gelesen, deren Wert solange inkrementiert wird, bis der Wert 10 erreicht wird - mit je 500ms dazwischen. Und das für jede Zeile...

- Es fehlt jegliches Erorhandling!
- Was passiert, wenn der Startwert für die innere Loop 10 oder größer ist? Auch hier fehlt eine Fehlerüberwachung!
- Event-Cases sollten immer sehr schnell abgearbeitet werden (<=100ms)! Hast du dir mal die LabVIEW-Hilfe dazu durchgelesen?

Zitat:Ich möchte realisieren dass der Benutzer erst (Ergänzung von mir) eine Datei auswählen muss und dann mit Start das Programm starten kann und per Stop beenden.
Nichts davon hast du programmiert!
In deinem VI sind "Start" und Datei wählen" genau anders herum gelöst. Ein gleichzeitiges Beenden per "Stop" ist NICHT möglich!


RE: Ereignis Struktur - 911tom - 20.12.2017 16:34

@Freddy
Die wird doch beendet wenn keine Zeile mehr da ist, also wenn die Liste abgearbeitet ist.
Vorher kann ich es doch mit dem Stop Button beenden.

@GerdW
Es soll egal sein wie lang er braucht um die Liste abzuarbeiten. Kann auch 5sek dauern.
Wie sollte ich sowas denn lösen ?
Kann ja ein größer gleich reinsetzen aber der Inhalt was in der Schleife gemacht wird ist egal.
Dient nur als Beispiel das etwas gemacht wird, was paar Sekunden dauert.
Habe mir die Hilfe angesehen aber daraus werde ich nicht schlau. 2hands


RE: Ereignis Struktur - GerdW - 20.12.2017 17:01

Hallo tom,

Zitat:Vorher kann ich es doch mit dem Stop Button beenden.
Nein, kannst du nicht.
Das Stop-Event wird erst abgearbeitet, wenn das Start-Event beendet ist. Mittendrin stoppen geht NICHT!

Zitat:Es soll egal sein wie lang er braucht um die Liste abzuarbeiten. Kann auch 5sek dauern. Wie sollte ich sowas denn lösen ?
Producer-Consumer?
(Queue-driven) state machine?
Allgemein: eine Event-Struktur sollte möglichst sofort auf ein Event reagieren können!

Zitat:Kann ja ein größer gleich reinsetzen
Das wollte ich damit anregen: (nur) auf "Gleichheit" prüfen hat so seine Tücken…


RE: Ereignis Struktur - 911tom - 20.12.2017 18:49

Ahso, das ist blöd. Wie realisier ich denn dass ich auch das Programm stoppen kann wenn man
in der While Schleife ist ? Quasi ein NOT AUS ?


RE: Ereignis Struktur - jg - 20.12.2017 20:14

Indem du eine andere Programmstruktur wählst, z.B. eine Event-driven Master-Slave Architektur. Und vergiss nicht das Datenfluss-Prinzip von LabVIEW dabei...

Gruß, Jens


RE: Ereignis Struktur - GerdW - 20.12.2017 20:57

Hallo tom,

Zitat:Habe mir die Hilfe angesehen aber daraus werde ich nicht schlau.
Also die Hilfe zur Event-Struktur sagt:
Zitat:Before you configure events for the Event structure to handle, review the caveats and recommendations for using events in LabVIEW.
Folgt man dem Link zu den "caveats and recommendations", dann ist der ERSTE Punkt dort:
Zitat:Ensure that Event structures can handle events whenever events occur.

Was daran ist missverständlich? Hmm