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!
ich verwende eine Queue die in einer ersten Schleife mit Daten gefüllt wird, und in einer Zweiten Zeitgesteuerte Schleife ausgelesen wird.
Nach einigen Stunden erzeugt die Queue den Fehler 2 = Speicher ist voll.
In der Ersten Schleife verwende ich die Komponenten "Queue Anfordern", "Queue Status", "Element einfügen"
in der Zweiten Schleife verwende ich die Komponenten "Queue Anfordern", "Queue Status", Element aus Queue Entfernen".
Die queue wird erst beim schließen von der VI freigegeben.
Muß die Queue zwischen durch freigegeben werden ?. Oder ist es besser die Queue referenz von einer Schleife zur andere zu übergeben ?.
Oder liegt dieses speicherproblem irgendwo anderst ?
schau Dir mal das angehängte VI an.
Wenn Du nicht die Speicherfunktion der Queues benötigst, kannst Du statt dessen auch die Notifier (Melder) verwenden.
schau Dir mal das angehängte VI an.
Wenn Du nicht die Speicherfunktion der Queues benötigst, kannst Du statt dessen auch die Notifier (Melder) verwenden.
Gruß,
Marko
Hallo Marko,
danke für deine schnelle Antwort.
Ich brauche schon die Speicher Funktionen von der Queue.
Ich habe Sie auch wie in deinem Beispiel verwendet....
Einzieger unterschied ist das ich meine Schleife nicht beende wenn der Fehler auftritt.
Falls Du es genauso gemacht hast wie Marko, dann wundert es mich nicht, daß es nicht funktioniert. Ursache für den Überlauf wird der zweite Timer in der unteren Schleife sein, er ist überflüssig wie ein Kropf am Hals. Denn das VI "Element aus Queue entfernen" wartet geduldig, solange die Schlange leer ist, die zweite Schleife synchronisiert sich mithin von selbst mit der ersten.
Also, wie schon gesagt wurde, muss in der Schleife, die die Queue ausliest nicht warten, dafür gibt es Timeouteingang in dem VI Dequeue. Das ist das Hauptproblem in deinem VI.
Zweitens musst du das VI Obtain Queue aus der obigen Schleife rausholen. Das Erstellen der Queue muss nur einmal passieren.
' schrieb:Falls Du es genauso gemacht hast wie Marko, dann wundert es mich nicht, daß es nicht funktioniert. Ursache für den Überlauf wird der zweite Timer in der unteren Schleife sein, er ist überflüssig wie ein Kropf am Hals. Denn das VI "Element aus Queue entfernen" wartet geduldig, solange die Schlange leer ist, die zweite Schleife synchronisiert sich mithin von selbst mit der ersten.
@Lucki
Du hast natürlich recht, der 2. Timer ist wirklich überflüssig und kann zu Problemen führen. Vielen Dank für den Hinweis, ist wohl beim kopieren passiert. Richtig problematisch wird die Sache wenn der 2. Timer länger wartet als der erste.
@woully
In Deinem Beispiel benutzt Du die Funktion "Obtain Queue" in der While-Schleife, dadurch wird jedesmal eine neue Referenz erzeugt. Der Arbeitsspeicher wird sich langsam kontinuierlich füllen.
Ansonsten verstehe ich das ganze noch nicht so richtig. Warum löschst Du in der oberen und in der unteren Schleife das letzte Element? In dem Beispiel hast Du ja nie mehr als ein Element in der Queue.
' schrieb:@Lucki
Du hast natürlich recht, der 2. Timer ist wirklich überflüssig und kann zu Problemen führen. Vielen Dank für den Hinweis, ist wohl beim kopieren passiert. Richtig problematisch wird die Sache wenn der 2. Timer länger wartet als der erste.
@woully
In Deinem Beispiel benutzt Du die Funktion "Obtain Queue" in der While-Schleife, dadurch wird jedesmal eine neue Referenz erzeugt. Der Arbeitsspeicher wird sich langsam kontinuierlich füllen.
Ansonsten verstehe ich das ganze noch nicht so richtig. Warum löschst Du in der oberen und in der unteren Schleife das letzte Element? In dem Beispiel hast Du ja nie mehr als ein Element in der Queue.
Gruß,
Marko
Hi,
ok, ich werde die Obtain queue aus der Schleife entfernen.
Zum verständnis von dem Beispiel : In der oberen Schleife entferne ich des älteste Element wenn die Queue 299 Einträge hat.
Wird warscheinlich nie vorkommen. Ist nur als sicherheit.
ok, ich werde die Obtain queue aus der Schleife entfernen.
Zum verständnis von dem Beispiel : In der oberen Schleife entferne ich des älteste Element wenn die Queue 299 Einträge hat.
Wird warscheinlich nie vorkommen. Ist nur als sicherheit.