LabVIEWForum.de - Aufbau einer Schaltung mit Event Structures

LabVIEWForum.de

Normale Version: Aufbau einer Schaltung mit Event Structures
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen

Ich habe ein grundsätzliches Verständnisproblem bei der Anwendung von Event Structures. Und zwar würde mich interessieren, wie man diese Event Structures korrekt einsetzen muss, wenn man quasi ein Hauptpragramm hat, welches ständig laufen soll und bei speziellen Ereignissen (z.B. Tastendrücke oder Seitenwechsel eines TabControl) eben diese Events (wie ein Interrupt) ausgeführt werden sollen.
In einem ersten Programm habe ich es wie folgt gelöst:

[attachment=5655]

Dies hat auch ohne gross darüber nachzudenken funktioniert. In einem zweiten Programm habe ich den selben Aufbau verwendet und da funktioniert das ganze nicht. Deshalb habe ich mich gefragt, ob man das überhaupt so machen darf. Eigentlich müssten so ja zwei (Endlos)schleifen parallel laufen, geht das überhaupt? Wenn ja, wie werden diese dann abgearbeitet, etwa abwechslungsweise?

Oder wie sieht es mit folgendem Aufbau aus:

[attachment=5672]

Wäre sowas besser? (funktioniert bei mir irgendwie auch nicht)


(Ich verwende übrigens die Timeout-Funktion der Event Structures nicht, vieleicht hat es auch damit etwas zu tun?)

Ach ja, dann noch etwas ganz anderes, bezüglich Sequenz-Strukturen. Kann man immer davon ausgehen, dass eine Seite (Sequenz) einer Sequenz-Struktur am Stück (ohne Unterbruch) abgearbeitet wird?

Vielen Dank schon mal!

Gruss Oli
Das erste ist fast richtig, nur dürfen die Whileschleifen miteinander NICHT verbunden sein. Die müssen unabhängig voneinander laufen.

Gruss, Eugen
' schrieb:Das erste ist fast richtig, nur dürfen die Whileschleifen miteinander NICHT verbunden sein. Die müssen unabhängig voneinander laufen.

Gruss, Eugen

Hallo Eugen

Vielen Dank für deine Antwort, so funktionierts! Ich versteh zwar nicht ganz wieso! ;-)

Bei allen Events neben dem Abbruch-Event ist so der Wert der Abbruchbedingung der Schleife um die Event Structure ja eigentlich nicht explizit definiert, wird dieser Wert dann immer default auf false gesetzt, damit die Schleife nicht beendet wird?

Gruss Oli
' schrieb:Hallo Eugen

Vielen Dank für deine Antwort, so funktionierts! Ich versteh zwar nicht ganz wieso! ;-)

Bei allen Events neben dem Abbruch-Event ist so der Wert der Abbruchbedingung der Schleife um die Event Structure ja eigentlich nicht explizit definiert, wird dieser Wert dann immer default auf false gesetzt, damit die Schleife nicht beendet wird?

Gruss Oli


So ist es.

Was verstehst du denn nicht?
' schrieb:So ist es.

Was verstehst du denn nicht?

Ich versteh nicht genau wieso es nicht funktioniert, wenn die beiden Schleifen (also die Abbruchbedingungen) miteinander verbunden sind. So sollten die Schleifen doch auch miteinander beendet werden.

Gruss Oli
' schrieb:Ich versteh nicht genau wieso es nicht funktioniert, wenn die beiden Schleifen (also die Abbruchbedingungen) miteinander verbunden sind. So sollten die Schleifen doch auch miteinander beendet werden.

Gruss Oli


Weil eine Schleife von der anderen dadurch sequentiell abhängt. Du könntest mal googlen, was Datenflussprinzip bedeutet. Dann wird es dir auch klar.

Eugen

P.S. du könntest auch die gelbe Lampe (Highlighting) einschalten und genau anschauen wo im BD was und in welcher Reihenfolge passiert.
' schrieb:Eigentlich müssten so ja zwei (Endlos)schleifen parallel laufen, geht das überhaupt? Wenn ja, wie werden diese dann abgearbeitet, etwa abwechslungsweise?


Um die Ausführung abzusichern, kannst du Semaphore verwenden. Ansonsten hast du Recht, die werden abwechslungsweise abgearbeitet.

Gruss, Eugen
Hi,

dein zweiter Gedanke - nur eine Schleife mit Eventstruktur - ist auch gut! Du benötitgst nicht unbedingt eine zweite Schleife! Damit die eine Schleife aber durchlaufen kann, musst du an der Eventstruktur eine Timeoutzeit angeben. Nach dieser wird die Schleife auf jeden Fall durchlaufen. Viele platzieren den eigentlichen Code dann im Timeout-Case, aber dass ist evtl. ein bisschen fragwürdig. Du kannst deinen Code einfach so in die Schleife packen...am besten verwendet man dann ne State Machine, d.h. eine Case-Struktur in einer While-Schleife, (mit-)gesteuert durch eine Eventstruktur. Dazu gibts hier im Forum jede Menge Beispiele...

http://www.LabVIEWforum.de/index.php...mp;p=15729&

Gruss
Achim
' schrieb:Ach ja, dann noch etwas ganz anderes, bezüglich Sequenz-Strukturen. Kann man immer davon ausgehen, dass eine Seite (Sequenz) einer Sequenz-Struktur am Stück (ohne Unterbruch) abgearbeitet wird?

Gruss Oli


Ich nehme an, du meinst "ohne Unterbrechung", hm?Wink

Ja, das ist so...eine Sequenz läuft komplett durch, es sei denn du hast in der Sequenz irgendwo das VI "Quit LV" eingebaut! Ansonsten ist es nicht möglich, eine Sequenz abzubrechen, genausowenig wie einen Schritt zurückzugehen! Das könnte man wiederum mit einer State Machine realisieren!

A.
Ich danke euch viel mal, jetzt ist mir einiges klar!

Übrigens, die "Highlighting"-Funktion ist ziemlich cool und in einigen Fällen extrem hilfreich! Leider kannte ich diese bis jetzt noch nicht!

Gruss Oli
Seiten: 1 2
Referenz-URLs