hi, interessanter lösungsansatz. ich glaube ich habe vergessen zu erwähnen dass es sich um ein fpga-vi handelt bei meiner frequezmessung. habe bis jetzt nie richtig property nodes verwendet und kenn mich noch nicht so aus. kann man nicht einen timeout für die false-zeit definieren indem einfach ein wert erzwungen wird?
@cheeze:
, LVF-Regeln lesen und beachten. Bitte nicht alles klein schreiben.
Gruß, Jens
Hi...
' schrieb:ich glaube ich habe vergessen zu erwähnen dass es sich um ein fpga-vi handelt bei meiner frequezmessung.
Das sieht man aber im Zweifelsfall...
Es gibt glaube ich die Option, die Single Cycle Loop mit einem Timeout zu versehen, bin ich mir aber nicht ganz sicher. Ansonsten sieht der Ansatz von IchSelbst aber doch gut machbar aus...
ch
Korrigiert mich wenn ich mich Irre:
Ich verstehe dass VIi so:
Bei True ist die Differenz der Zeiten "0", und die Schleife wir nie abgebrochen.
Bei False wird die Differenz beider Zeiten grösser, wenn sie grösser als 2000ms ist, wird die Schleife abgebrochen.
Verständnisfrage:
Ich weiss dass es funktioniert, habs nachgebaut. Aber ich verstehe nicht warum sich da eine Zeitdifferenz bildet. Laufen beide Timer nicht gleich? Oder was passiert genau mit dem Schieberegister? Wird die Zeit einmal gelesen und mit dem Schieberegister immer wieder neu eingelesen oder wie? Stehe auf dem Schlauch
Zur Frequenzmessung:
Die Messung soll eigentlich nicht abgebrochen werden wenn der Motor im Stillstand ist. Es soll zwar die Null angezeigt werden, aber wenn der Motor läuft, wieder die aktuelle Zeitdifferenz, ohne eine erneute Ausführung des VI. (Deshalb der Hinweis dass es sich dabei um ein FPGA-VI handelt)
' schrieb:Laufen beide Timer nicht gleich?
Welche
beiden Timer?
Der eine Timer sitzt außerhalb der Schleife, der andere innerhalb. "Laufen" tut eigenlich nur ein Timer - der innerhalb der Schleife. Der außerhalb ist nur dazu da, das Schieberegister - respektive den ganzen Algorithmus - zu initialisieren. Er schreibt ein einziges Mal einen Wert in das Schieberegister. Danach hat dieser Timer nichts mehr zu sagen.
(Das andere Element, Metronom, ist einer Verzögerungszeit, also kein Timer, der kontinuierlich läuft).
Zitat:Oder was passiert genau mit dem Schieberegister?
Ein Schieberegister ist ein Datenkonstrukt, das es erlaubt einen Datenwert vom Ende eines Datenflusses an den Anfang zu bringen. Normalerweise geht sowas nämlich nicht - außer eben mit einem Schieberegister. Das Schieberegister bekommt seinen Startwert (ggf.) links außerhalb der Schleife. Innerhalb der Schleife
muss das Schieberegister am rechten Rand einen - ggf. neuen - Wert bekommen. Dieser "neue" Wert erscheint dann links am Anfang des Datenflusses. Soviel zur Theorie.
Hier gilt:
Der Wert des Schieberegisters bleibt solange erhalten, wie TRIGGER auf False steht (der Wert vom Anfang wird wieder reingeschrieben). Da der Timer hochläuft und das Schieberegister gleich bleibt, entsteht eine hochlaufende Differenz (bis 2000, dann Abbruch). Wird TRIGGER einmal auf True gesetzt, so wird der eben festgestellte Timer-Wert in das Schieberegister geschrieben (der alte Wert ist verloren, jetzt steht ein neuer Wert drinn) => Die Differenz wird resettet, beginnt also wieder bei Null.
Zitat:Wird die Zeit einmal gelesen und mit dem Schieberegister immer wieder neu eingelesen oder wie?
Im Schieberegister steht praktisch der Startzeitpunkt. Der bleibt immer gleich - solange Trigger=false. (Bei Trigger=true gilt: neuer Startzeitpunkt.) Verglichen wird der Schieberegisterwert mit dem aktuellen Timer.