INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Priorität zweier While-Schleifen oder Alternativvorschlag



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!

22.06.2009, 16:26
Beitrag #1

Siebenstein Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Mar 2009

8.6
2008
de

12345
Deutschland
Priorität zweier While-Schleifen oder Alternativvorschlag
Hallo liebe LabVIEW-Nutzer,

ich habe ein Programm (LV8.6 )geschrieben welches aus zwei while-schleifen besteht. Die eine Schleife ist zur Datenerfassung (Sound Input Read) und die andere zur Weiterverarbeitung. Die Übergabe der Daten erfolgt mit einem Melder.

Nun ist es so, dass die Verarbeitung - je nach Inhalt der erfassten Daten - sehr viel Prozessorleistung benötigt. In der Erfassung kann es im ungünstigsten Fall dann zu Aussetzern kommen. Ich möchte aber dass auf JEDEN FALL die Daten weiter zuverlässig erfasst werden. Die Verarbeitung ist hingegen nicht so wichtig und darf in einem solchen Fall rühig etwas länger brauchen und ein Soundintervall (am Melder) verpasst.

Wie kann ich dies Umsetzen? Gibt es eine Möglichkeit der einen Schleife eine höhere Priorität zuzuweisen, so dass diese kuntinuierlich abgearbeitet wird und nur in den Leerlaufphasen (z.B. beim Warten auf den nächsten Soundabschnitt) die andere abgearbeitet wird? Oder ist hier eine Zeitgesteuerte Whileschleife sinnvoll?

Für Tipps bedank ich mich im Voraus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.06.2009, 16:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2009 16:34 von eg.)
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Priorität zweier While-Schleifen oder Alternativvorschlag
Du kannst statt Melder eine Queue benutzen, somit ist erstens Datenverlust weg. Zweitens, du kannst eine minimale Wartezeit in die Schleife mit niedriger Priorität einfügen. Drittens, du kannst die Verarbeitung auf einen anderen Prozessor übertragen (geht mit Zeitgesteuerten Schleifen). Viertens, wenn dein PC so schwach ist, musst du dir ein besseres zulegen. Fünftens, versuche deine Verarbeitung zu optimieren, damit sie nicht so viel CPU frisst.
CPU Auslastung von mehr als 10% deutet auf schlechte Programmierweise, oder das Programm ist wirklich so komplex, dann ist halt der PC dazu ungeeignet.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2009, 19:52 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2009 19:54 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Priorität zweier While-Schleifen oder Alternativvorschlag
Hier gibt es ein gute Nachricht: Heute haben auch die billigsten PC einen Doppelkern-Prozesser, und bei so einer Struktur wie Du sie hast, werden die beiden Schleifen in der Regel in verschiedenen Kernen ausgeführt. Ein Rechen-Engpass in der einen Schleife behindert also nicht unbedingt die Auführung in der anderen Schleife.
Von der Einführung von Waits würde ich unbedingt abraten. Man hat ja bereits zwei Waits:
In der Erzeugerschleife ist es das Warten auf neue Daten, z.B im DAQmx Read.
In der Verbraucherschleife ist es das Warten, bis wieder neue Daten in der Queue oder im Melder sind.
Es ist ein häufiger Fehler von Anfängern, daß sie darüber nicht richtig Bescheid wissen und glauben, in eine Schleife mit DAQmx Read oder in in eine Schleife für das Lesen aus einer Queue gehöre noch eine Waitfunktion hinein. Fange gar nicht erst damit an.

In der Verbraucherschleife, wenn die Rechenleistung nicht ausreicht, mußt Du dich für eine dieser Mögölichkeiten entscheiden müssen:[list]
[*]Benutzung einer Queue ganz normal:
Das ist dann sinnvoll, wenn im Durchschnitt die Rechenleitung ausreichend ist, und nur bei manchen Schleifendurchgängen die Zeit nicht aureicht. Dann füllt sich die Queue temporär an, es kommt aber auf Dauer nicht zum Puffer-Überlauf.<>
[*]Bei jedem Durchgang Entfernen aller Elemente aus der Queue, und, falls es wegen Zeitverzug mehrere sind, Verarbeitung aller Elemente in einer Iteration.<>
[*]Es wird immer nur das jüngste Element verarbeitet, ältere noch nicht verarbeitete Datenelemente werden weggeworfen.<>
[st]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Zeiterfassung zweier Lichtschranken Dsans 12 5.299 26.10.2022 12:10
Letzter Beitrag: Dsans
  Vergleich zweier Zahlen LabViewPete 13 10.445 27.10.2020 12:52
Letzter Beitrag: THL
  Windows Priorität für LabVIEW ändern ahebauer 1 2.828 28.07.2019 20:51
Letzter Beitrag: BNT
  Ansteuerung zweier Heizer mittels PID-Regler Christoph1993 2 2.910 25.11.2018 19:53
Letzter Beitrag: Christoph1993
  Kopplung zweier Ereignisse TTT 4 3.913 25.07.2018 15:49
Letzter Beitrag: TTT
  Vergleich und Neusortierung zweier Arrays domdom 6 4.964 30.11.2016 09:13
Letzter Beitrag: domdom

Gehe zu: