LabVIEWForum.de - Messung zusätzlich per Timer starten

LabVIEWForum.de

Normale Version: Messung zusätzlich per Timer starten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Servus zusammen, ich muss mich mal wieder mit einer echten Kleinigkeit melden.

Ich sag gleich, es ist mit sicherheit eine grundlegende Sache, aber ich komme einfach nicht dahinter.

Es geht um Folgendes:
Ich will meine DAQ-Karte, bzw. meine Messung per Timer, z.B. alle 3s auslösen.

Dazu hab ich im ni-forum ein bsp. gefunden (linke schleife).
Jetzt fängt das erste Problem an, ich weiß nämlich nicht genau wie es funktioniert - sicher die Bedienung ist mir klar, aber die genaue (!!) Funktion vor allem mit den Schieberegistern versteh ich nicht. Klar, es übergibt einen wert zurück - aber warum wird das benötigt?
Gibt es keinen simplen Timer bei dem ich Impuls-und Pausenzeiten einstellen kann?
Wenn hier jemand eine Erklärung zu hätte wäre es klasse.

Das nächste ist, dass der boolsche Wert nur IN der Schleife sich verändert.
Sobald ich über Tunnel meine Messung mittels DAQ-karte starten möchte funktioniert das nicht, und was zusätzlich dazu kommt ist, dass noch nicht mal der händische Tastendruck funktioniert?

Nungut dachte ich, IN der Timer schleife scheint der sich der Wert zu ändern, also wird die Schleife von der Messung in die Timer-schleife gebaut, funktioniert genauso wenig.

Womit hat das zu tun, ich komm nicht drauf. Bin mir aber sicher es kann nur eine Kleinigkeit sein.

Vielen Dank für die Hilfe


LV 8.6 Student
Mal schnell geantwortet:

Du solltest dich mit dem Prinzip des Datenflusses noch einmal beschäftigen.
Deine rechte Schleife wartet solange, bis die linke beendet wurde und sie somit den letzten Wert aus dem Schieberegister bekommt.
Deshalb funktioniert auch der "Handstart" nicht. weil die rechte Schleife noch nicht ausgeführt wird.

Das Schieberegister sorgt einfach nur dafür, dass ein True an den Reset-Eingang des Timers gemeldet wird, nachdem dieser abgelaufen war und er somit neu startet.

Du könntest beispielsweise in der linken Schleife einen Melder setzen, auf den du in der rechten wartest und dann dort entsprechend deine Messung starten.
OK, warum das schieberegister von Nöten ist leuchtet ein!

Dass die zweite Schleife wartet bis die Erste Schleife beendet ist hab ich jetzt auch verstanden.
Aber wie genau soll das mit einem Merker funktionieren, bzw. hab ich deine Formulation zwar verstanden, aber wie ich in der Praxis das tue ist mir nicht ganz klar.

Wie kann ich mir einen "merker" vorstellen? Hab zwar einen Artikel bei google.books drüber gefunden, weitergebracht hats nicht.

Prinzip des Datenflusses... ich weiß was es bedeutet, aber in LV hab ich einfach zu wenig Erfahrung... leider. Aber mit einer Schulstunde die Woche kann man eben keine Bäume ausreißen...

Vll könnte mir da jemand unter die Arme greifen, kann ja nichts großes sein. Merci!
Stichwort Datenfluss:
Der Datenfluss in LV ist eigentlich ganz leicht zu verstehen, da er immer den sichtbaren Verbindungen folgt und jedes Element solange mit der Ausführung seines Codes wartet, bis alle erwarteten Signale geliefert wurden.

Jetzt fragst du dich sicherlich: Aber wie kann ich Daten von einer While-Schleife in eine andere parallele Schleife übertragen, wenn die erste While-Schleife doch erst nach Beendigung Werte über ihre Tunnel weitergibt?

Das geht mit einer Queue oder einem Notifier, evtl auch mit einem Event, aber auch mit lokalen und globalen Variablen.

Ich persönlich vermeide globale Variablen wo immer es geht und nutze in den meisten Fällen Melder, Queues und wo es angebracht ist auch Events und wenn es nicht anders geht auch lokale Variablen.

In deinem Fall würde ich zu einem Melder greifen, da du bei solch trivialen Problemen keine Eventstruktur benötigst und ich annehme, dass deine Messung schneller abläuft als dein Timer.
Ich habe mal einen Screenshot gemacht, der zeigt wie du die Melder händeln kannst. Das Wait in deiner oberen (bzw linken) Schleife ist überflüssig, da dein Express-VI schon dafür sorgt, dass deine Prozessorlasst nicht bei 100% liegt. Ebenfalls die Anzeige für Impuls kannst du dir im normalen Betrieb schenken, da du so schnell nicht gucken kannst wie die an und aus geht. Ich habe sie daher nur zur Veranschaulichung im Debugmodus beibehalten.
Die Case-Struktur in der unteren Schleife dient lediglich dazu, dass die Schleife bei Beendigung des Programmes nicht erst noch die Sequenz durchläuft, sondern direkt die Schleife beendet. Die Sequenz innerhalb der Case-Struktur sorgt in dem Beispiel dafür, den Indikator nach 1,5 s wieder auf FALSE zu setzen (mittels einer lokalen Variablen). Die Abbruchbedingung der unteren Schleife ist direkt mit dem Errorausgang des WaitOnNotifier-Elements verbunden, da dies einen Fehler ausgibt, sobald der Melder nach beenden der oberen Schleife zerstört wird und somit die untere Schleife ebenfalls beendet wird.

[attachment=24276]

Ich hoffe, ich habe jetzt nicht nur deine Hausaufgaben gemacht, sondern du hast auch etwas dabei gelernt!:PNaja, programmieren musst du es ja dennoch selbst, da ich ja nur eine Möglichkeit aufzeige, wie es gemacht werden kann.
Ach ja, wurde noch gar nicht gesagt: ExpressVIs sind nicht unsere Freunde!:)Die sind nur gut um mal schnell eine exemplarische Lösung zu bekommen, sollten aber in "richtigen" Programmen durch effektiveren Code (zu Fuß) ersetzt werden, da sich dieser im Fehlerfall auch analysieren lässt.
Falls ich später noch Zeit (und Lust) habe, zeige ich evtl noch wie deine Problemlösung ohne ExpressVI aussehen kann.

Vielleicht hat aber auch jemand anderes Lust (und Zeit) dazu?!

Beste Grüße aus dem schönen Schweden,
Tobias

PS: Solltet ihr denken, dass ich öfters mal y und z vertausche: das liegt daran, dass ich mit deutschem Tatsturtreiber an einer schwedischen Tastatur arbeite und die Fehler kommen immer dann, wenn ich mal wieder beim tippen auf die Tasten schaue... Blush
Offtopic2
' schrieb:...
PS: Solltet ihr denken, dass ich öfters mal y und z vertausche: das liegt daran, dass ich mit deutschem Tatsturtreiber an einer schwedischen Tastatur arbeite und die Fehler kommen immer dann, wenn ich mal wieder beim tippen auf die Tasten schaue... Blush

:DTausch doch die Tasten Rofl2

Gruß SeBa
' schrieb:Offtopic2
:DTausch doch die Tasten Rofl2

Gruß SeBa
Scherzkeks! Ich werde mir im April eine deutsche Tastatur importieren! Klimper
Referenz-URLs