Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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: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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
19.08.2008, 16:21 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2008 18:49 von jg.)
' 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
' schrieb:Kann es sein, dass das noch LV Version 8.2 ist? Kann es leider nicht öffnen!?
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).