So... Danke für eure Hilfe... das ist ja nicht selbstverständlich!
In meinem VI hab ich jetzt einfach die Skalierung des Diagramms in eine andere Whileschleife verlegt. Datenaustausch erfolgt via Queue.
Hab mir das immer Etwas komplizierter vorgestellt...aber ging doch ganz gut.
Aber mal so eine Frage am Rande, nimmt diese Queue-Funktion weniger Ressourcen in Anspruch als eine Lokale Variable? Oder bemerkt man das beim heutigen Stand der Computer einfach nicht mehr?
Noch was zum Beispiel mit der Farbänderung des Plots: Clever einfach zwei Plots übereinander zu legen! Das hilft mir aber leider nicht, da mein Eingangssignal zum Signalverlaufsdiagramm in WDT (Wafeform Data Typ) vorliegt... das kann ich nicht bündeln.
' schrieb:Aber mal so eine Frage am Rande, nimmt diese Queue-Funktion weniger Ressourcen in Anspruch als eine Lokale Variable?
Wohl nicht. Allerdings kann man beide wohl nicht direkt vergleichen. Aber: Man verwendet keine Lokalen Variablen.
Zitat:Oder bemerkt man das beim heutigen Stand der Computer einfach nicht mehr?
So ist es.
' schrieb:Man verwendet keine Lokalen Variablen.
OK.... aber wie realisierst du eine Kommunikation über zwei (oder mehr) parallel laufende Whileschleifen??? Immer mit Queue?
' schrieb:OK.... aber wie realisierst du eine Kommunikation über zwei (oder mehr) parallel laufende Whileschleifen??? Immer mit Queue?
Immer mit Queue. Oder mit Melder. Eben je nach dem.
Eine Queue verwende ich, wenn ich eine
Aufgabe vergebe, die
genau einmal abgearbeitet werden
muss. Eine bestimmte Aufgabe darf ja eben nur genau einmal gemacht werden: Init, Create etc. Einmal aus der Queue herausen, gilt die Aufgabe als erledigt. Queue-Inhalte kann man (per Definition) nicht überschreiben.
Ein Melder verwende ich, wenn ich
Daten für die Allgemeinheit so mal eben
in den Raum stellen will. Wen die Melderdaten nicht interessieren, der muss sie ja nicht ansehen. Wer sie brauchst, hat - per Definition - immer die aktuellen Daten. Daten, sie aus einem Melder gelesen werden, bleiben im Melder erhalten, sodass sie von mehreren gelesen werden können. Melder-Inhalte können überschrieben werden.
Man kann zwischen unabhängigen While-Schleifen Daten auch per Lokaler (innerhalb VI) oder Globaler (zwischen verschiedenen VIs) Variablen übertragen. Das geht zwar schneller zu programmieren, hat aber prinzpielle Nachteile: Race-Condition! (<= mach dich mal schlau, wichtiger Punkt in Datenfluß (wie auch in textbasiert)).
Gegen mal eben schnell eine Lokale Variable - so z.B. Stopp - hab ich ja nix einzuwenden - außer den Styleguide.
' schrieb:Aber mal so eine Frage am Rande, nimmt diese Queue-Funktion weniger Ressourcen in Anspruch als eine Lokale Variable? Oder bemerkt man das beim heutigen Stand der Computer einfach nicht mehr?
Wie schon gesagt, spielt das Preformance-Unterschied in der Regel überhaupt kein Rolle. Die Unterschiede liegen woanders:
Vorteil lokale Variable: Die erstellst sie mit der rechten Maustaste, fertig. Bei Queues oder Meldern brauchst Du mehrere Funktionen, um erst einmal so weit zu kommen. Wenn sich eine Aufgabe mit einer Lokalen Variablen sauber lösen läßt, würde ich niemals auf die Idee kommen, nur um der reinen Lehre willen Melder oder Queues verwenden.
Vorteil Melder/Queues: a) Es funktioneit VI-übergreifend, so wie globale Variablen. b) Das Allerwichtigste ist aber: Die Übergabe eines Wertes vom Sender zum Empfänger erfolgt mit so einer Art Handshaking. Sender und Empfängerschleife synchronisieren sich von selbst. Der Melde-/Queue- Empfänger wartet, bis bis ein neuer Wert ankommt. Bei lokalen oder globalen Variablem weiß man auf der Empfängerseite hingegen überhaupt nicht, ob ein aus der lokalen Variablen gelesener Wet neu ist, ob es immer noch der alte ist, oder ob seit Programmstart überhaupt noch kein Schreibvogang in die Variable stattgefunden hat.
Zitat:Noch was zum Beispiel mit der Farbänderung des Plots: Clever einfach zwei Plots übereinander zu legen! Das hilft mir aber leider nicht, da mein Eingangssignal zum Signalverlaufsdiagramm in WDT (Wafeform Data Typ) vorliegt... das kann ich nicht bündeln.
Ich würde eher sagen, das vereinfacht die Sache, siehe dieses einfache Beispiel
[
attachment=14067]
' schrieb:siehe dieses einfache Beispiel
Kann es sein, dass das noch LV Version 8.2 ist? Kann es leider nicht öffnen!?
Hab's Dir runtergespeichert.
Probier's mal.
[
attachment=14068]
Gruß Markus
' schrieb:Kann es sein, dass das noch LV Version 8.2 ist? Kann es leider nicht öffnen!?
Nochmal danke für die Hilfe!
Da ich ja jetzt Queues benutze, kommt ab und zu diese Warnmeldung:
[
attachment=14075]
Kan mir jemand sagen wie diese beheben kann?
' schrieb:Kann es sein, dass das noch LV Version 8.2 ist? Kann es leider nicht öffnen!?
Entschuldigung, habe es oben editiert, ich hoffe daß es jetzt 80 ist.
' schrieb:Kan mir jemand sagen wie diese beheben kann?
Hm. Schwieriger Fall. Der Fehler trat erst auf, als du die Queue intergriert hast? Ich tippe mal darauf, dass der Handle der Queue verloren gegangen ist.
Häng an den Fehlerausgang von "Element einfügen" mal eine Sonde und kuck was da drinnen steht. Nebenher kuckst du noch den Queue-Handle an.