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 das Statistik ExpressVi, um aus einem Signal Maximum und Zeit des Maximums zu extrahieren.
Nun möchte ich die erhaltenen Daten auswerten und einmal den Zeitabstand zwischen 2 Maxima berechnen, den zweiten in der Tabelle und einem mit kleinerer Amplitude.
Jetzt habe ich aber gemerkt, daß das VI überhaupt nicht die richtigen Zeitwerte in die Tabelle schreibt, sondern je nach Verzögerung der while Schleife und Abtastrate einen Wert.
Ist es möglich, unabhängig von der Abtastrate und Schleifenverzögerung den tatsächlichen Zeitwert in Sekunden zu berechnen?
dein Vorhaben hat, meiner Meinung nach, zwei Grundsätzliche Probleme....
1. verwendest du in deinem VI das Element Warten (ms), besser wäre hier ein Metronom (bis zum nächsten vielfachen warten) zu verwenden. Den Unterschied findest du im angehängten Bild.
2. Wahrscheinlich lässt du dieses VI auf einem windowsbasiertem Rechner laufen...?!?! auch wenn du einen Rechner mit 4 Prozessoren hast pfuschen immer (vorallem bei Schleifendurchlaufzeiten unter 300ms) Windows Tasks dazwischen... hieraus ergeben sich unterschiedliche Schleifendurchlaufzeiten...
Ad NoD zum Unterschied Meronom & Warten: das stimmt doch nicht. Wenn Du das Warten nicht künstlich sequenziert hast laufen der Messprozess und der Warteprozess paralell und die Exekutionszeit ist das Maximum aus beiden - oder?
Ich weis nicht genau...
Hab bei NI die beiden LV-Basic kurse besucht und der zuständige typ von NI hat mir das so erklärt....
Kann sein.... kannst du das vielleicht noch genauer erklären? mit bild oder so....
Ich möchte nicht die absolute Zeit haben, sondern die relative Zeit seit Aufruf der Schleife. Diese aber in Sekunden und nicht abhängig vom CPu Takt oder sonstigen Einstellungen im Programm.
mfg, andi
04.09.2009, 18:10 (Dieser Beitrag wurde zuletzt bearbeitet: 04.09.2009 18:11 von jg.)
@NoD:
Genau, ich stimme gottfried zu, eine Wait-Funktion wartet ab Aufruf der Funktion die eingestellte ms-Zeit. Da bei Nichtsequenzierung von LV-Befehlen diese quasi parallel abgearbeitet werden, wird eine Wait-Funktion nicht zur Ausführungszeit parallel laufender VIs hinzugefügt, so wie es dein Screenshot impliziert.
Im Prinzip arbeitet die Metronom-Funktion genauso, aber sie wartet nicht die eingestellte Zeit, sondern solange, bis der interne ms-Timer des Computers ein ganzzahliges Vielfaches des eingestellten Wertes erreicht hat. Erst dann geht es weiter. Somit kann ein erster Aufruf in einer Schleife eine deutlich kürzere Wartezeit bedeuten.
' schrieb:Ist es möglich, unabhängig von der Abtastrate und Schleifenverzögerung den tatsächlichen Zeitwert in Sekunden zu berechnen?
Kann das überhaupt nicht besätigen, bei mir schreibt Dein Programm (das Zweite VI) die richtigen Werte in die Tabelle, und zwar unabhängig von der Wartezeit, die hier ohnehin keinen Sinn macht.
Express-VI: Frequenz ist 10.1 Hz, als muß es alle knapp 100ms ein Maximum geben. Wa soll darin falsch sein?
Ergänzung: Zur Funktionsweise des Express-VI "Signal simulieren". Es ist auf kontinuerliche Erzeugung eingestellt. D.h die Sinuskurve wird inklusive Zeitstempeln bei jedem neuen Aufruf genau an der Stelle fortgesetzt, bei der sie beim letzten Aufruf beendet wurde. Dabei macht es keinen Unterschied, ob zwischen den beiden Aufrufe 1ns oder 1 Stunde gewartet wurde. Der Wert das äußeren Timers geht überhauot nicht in die simulierte Ausgabe ein, und natürlich geht auch nicht ein, ob der wie eine Taschenuhr oder wie ein Metronom aussieht. Das Simulations-VI verwendet ausschließlich simulierte Zeiten, und keine Zeiten aus der realen Welt der Schleife, in der er sich befindet.