LabVIEWForum.de
Resourcen schonende Kommunikation - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Resourcen schonende Kommunikation (/Thread-Resourcen-schonende-Kommunikation)

Seiten: 1 2 3 4


Resourcen schonende Kommunikation - LV-New - 06.04.2020 12:13

Hallo LAbview Forum,
Als “Neuling” besser gesagt Wiedereinsteiger in Labview (Programmiererfahrung aus Praktikum) benötige ich eure Hilfe.
Es sind mehre Dinge die ich für eine gute Kommunikation zwischen Schleifen bräuchte, aber starten wir erstmal mit dieser Frage hier:
Ich habe mehre Schleifen, die miteinander kommunizieren sollen (exemplarisches Beispiel im Anhang), dies soll möglichst PC-Resourcen schonen erfolgen. D.h: Die Schleife soll eigentlich wie immer durchlaufen und nur wenn besondere Ereignisse eintreten dann auch einen speziellen Zustand einnehmen.
Also dachte ich mir ich benutze eine Erzeugnisstruktur dafür. Leider reagiert diese aber nur auf wirklich Knopf drücke des Benutzers und nicht auf „programmieret Knopfdrücke“. Jemand eine Idee für einen „Workaround“? Eine FGV will ich nicht nehmen, weil diese ja ständig abgefragt würde und nicht nur bei bestimmten Veränderungen.


Soweit erstmal….


RE: Resourcen schonende Kommunikation - Freddy - 06.04.2020 12:43

Hallo LV-NEW,
dass sieht nach einer klassischen Queue Verarbeitung aus.

Wenn Du das Prinzip sehen möchtest, starte ein neues Projekt und wähle die Vorlage "Handler für Nachrichten-Queues" aus.

Gruß
Freddy


RE: Resourcen schonende Kommunikation - LV-New - 06.04.2020 14:14

An Queues hatte ich schon gedacht....
Die Herausforderung ist dass die Queues aus unterschiedliche Schleife kommen /ausgehen und das finde ich extrem unübersichtlich. Mit dieser Ereignisstruktur ist es wirklich schön übersichtlich...


RE: Resourcen schonende Kommunikation - Freddy - 06.04.2020 15:06

Jetzt habe ich mal das VI angeschaut.
Das geht nicht.
Pro VI nur eine Ereignisstruktur und auch nur wenn die VI's MODAL sind.

Eigentlich für ein Programm nur eine Ereignisstruktur verwenden.

Gruß
Freddy


RE: Resourcen schonende Kommunikation - NoWay - 06.04.2020 15:19

(06.04.2020 14:14 )LV-New schrieb:  An Queues hatte ich schon gedacht....
Die Herausforderung ist dass die Queues aus unterschiedliche Schleife kommen /ausgehen und das finde ich extrem unübersichtlich. Mit dieser Ereignisstruktur ist es wirklich schön übersichtlich...

ein Cluster schafft eventuell Abhilfe. Das bringt Übersicht ins Queue Gewusel. Anbei ein Beispiel.

Gruß
NoWay


RE: Resourcen schonende Kommunikation - LV-New - 06.04.2020 15:21

Das Interessante ist aber dass es beim "Emergency"-Knopf funktioniert....
Wäre halt wirklich genial wenn ich mittels einem Eigenschaftswert o.ä. auch die anderen Ereignisstrukturen so bearbeiten könnte.
Gibt es denn da wirklich kein Workaround?
Mit Queues habe ich es ausprobiert geht natürlich, aber ist eben unübersichtlich als mit mehreren Queues die ständig irgendwo da rein und rausgehen...
(Im echten Programm werden es wohl 5 Prozesse/Schleifen die untereinander kommunizieren sollen/müssen).

Gibt es noch andere Varianten außer Queues? FGV fallen raus, da diese ständig abgefragt werden.

@NoWay: Cluster ist ne schöne Lösung, muss ich mir mal anschauen... sind wie gesagt 5 Schleifen die teilweise 4 unterschiedliche "Datentypen" austauschen sollen....


RE: Resourcen schonende Kommunikation - Freddy - 06.04.2020 15:21

Wenn Du alle Ereignisaufrufe in eine Struktur schreibst funktioniert es.

Ein weiterer Punkt. Mit dem True zum Beenden der While Schleife wird die entsprechende Ereignisstruktur in der While Schleife nicht mehr verwendet.
Man beendet erst am Ende eines Programms diese Schleife. Dafür gibt es einige Möglichkeiten.
Dein End All wird kein Ereignis aufrufen. Dazu verwendet man "Wert (Signalisierend)".

Gruß
Freddy


Zitat:Das Interessante ist aber dass es beim "Emergency"-Knopf funktioniert....
Interessant dabei ist das Emergency am schnellsten war. Alle anderen Ereignisstrukturen kommen nicht zum Einsatz.

Gruß
Freddy


RE: Resourcen schonende Kommunikation - jg - 06.04.2020 16:34

(06.04.2020 15:06 )Freddy schrieb:  Jetzt habe ich mal das VI angeschaut.
Das geht nicht.
Pro VI nur eine Ereignisstruktur und auch nur wenn die VI's MODAL sind.

Eigentlich für ein Programm nur eine Ereignisstruktur verwenden.

Gruß
Freddy

Dem widerspreche ich: Max. eine Eventstruktur pro VI, damit kommt LabVIEW gut zu Rande.
Ich mach sowas immer wieder, z.B. wenn ich VIs in Subpanels lade und dann parallel zum Haupt-VI auf Events reagiere.
Klappt super.

Gruß, Jens


RE: Resourcen schonende Kommunikation - IchSelbst - 06.04.2020 16:42

(06.04.2020 12:13 )LV-New schrieb:  „programmieret Knopfdrücke“.
Das Teil heißt "Benutzerereignis". Damit kann man VI-Übergreifend Ereignisse auslösen, die von Eventcases abgearbeitet werden können.


RE: Resourcen schonende Kommunikation - jg - 06.04.2020 16:55

(06.04.2020 12:13 )LV-New schrieb:  Hallo LAbview Forum,
Als “Neuling” besser gesagt Wiedereinsteiger in Labview (Programmiererfahrung aus Praktikum) benötige ich eure Hilfe.
Es sind mehre Dinge die ich für eine gute Kommunikation zwischen Schleifen bräuchte, aber starten wir erstmal mit dieser Frage hier:
Ich habe mehre Schleifen, die miteinander kommunizieren sollen (exemplarisches Beispiel im Anhang), dies soll möglichst PC-Resourcen schonen erfolgen. D.h: Die Schleife soll eigentlich wie immer durchlaufen und nur wenn besondere Ereignisse eintreten dann auch einen speziellen Zustand einnehmen.
Also dachte ich mir ich benutze eine Erzeugnisstruktur dafür. Leider reagiert diese aber nur auf wirklich Knopf drücke des Benutzers und nicht auf „programmieret Knopfdrücke“. Jemand eine Idee für einen „Workaround“? Eine FGV will ich nicht nehmen, weil diese ja ständig abgefragt würde und nicht nur bei bestimmten Veränderungen.


Soweit erstmal….

Wie meine Vorredner kann auch ich nur dringend von der Verwendung von mehreren Ereignisstrukturen innerhalb eines VI abraten. Die LabVIEW-Hilfe sagt zwar, dein Beispiel-Konstrukt geht so in Ordnung, die Erfahrung zeigt es anders. Das geht fast immer schief !!!

Außerdem kannst du so nicht modular programmieren, du musst ja immer alles in einem VI halten, um Events in anderen Schleifen auszulösen (ok, stimmt nicht ganz, es gibt benutzerdefinierte Events und man kann Controls aus anderen VIs für die Eventverarbeitung registrieren). Trotzdem, das Gelbe vom Ei ist das nicht, da ist ein Vorgehen mit Queues zu bevorzugen.

Übrigens, wenn du unbedingt ein Event programmatisch auslösen willst, dann musst du die PropertyNode "Value (Signaling)" verwenden, nur die löst Events programmatisch aus. Aber sieh diesen Hinweis bitte nicht als Erlaubnis dafür, mit dieser Struktur weiterzumachen...

Gruß, Jens