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 möchte gerne die Drehzahl eines Motors darstellen. Wenn der Motor allerdings stehenbleibt, bekomme ich immer die letzte gemessene Frequenz angezeigt. Ich möchte aber dass beim Stillstand auch die Frequenz Null angezeigt wird. Mein gedankengang war folgender: Ich vergleiche mit einem Schieberegister den aktuellen mit der aus der vorherigen Interation. Dann sind allerdings beide werte mal gleich und mal nicht. Die Anzeige springt dann willkürlich mal auf Null und mal auf die gemessene Frequenz. Ich habe dann noch eine Sequenz eingefügt mit der ich eine Sekunde warte und dann den Wert der alten Iteration weitergebe. Dann wird allerdings die Anzeige auch nur jede Sekunde aktualisiert.
Ja, sorg dafür das bei Stillstand die Frequenz "Null" ausgegeben wird.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
' schrieb:@seBa ist dir langweilig?? hoffe deine beiträge sind nicht alle so geistreich...
Nein. Ich hab das ernst gemeint...
Warum wird die letzte erfasste Frequenz angezeigt und die ist nicht 0 wenn der Motor steht?
Da du nichts darüber sagtest woher du die Frequenz bekommst, ging ich davon aus, dass du das selbst programmiert hast.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
23.01.2010, 03:04 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2010 03:06 von cheeze.)
der motor hat einen ausgang in dem abhängig von der drehzahl ein sinus dargestellt wird. je höher die drehzahl desto höher die sinusfrequenz.
mit hilfe eines schieberegisters messe ich die zeitdifferenz zwischen den nulldurchgängen (bzw wegen rauschen im stillstand bei 0,25V).
zum verständnis füge die frequenzmessung bei. da die periodendauer im case(true) berechnet wird und im stillstand der casestruktur nicht mehr in true wechelt, wird immer der letzte wert im true angezeigt.
wie wäre es damit, einen "Timeout" beim Einlesen Deines Analogen Wertes zu generieren? Wenn der vorbei ist, also kein Sinussignal nach einer gewissen Zeit mehr kommt, weißt Du, dass Du im Stillstand bist...
Die Sequenz ist übrigens Überflüssig, der Schleifentimer m.E. auch, da der nur Einfluss auf die äußere Schleife hat und die innere ja unendlich weiter läuft...
Hast Du Dir mal die Beispiele von NI zur Frequenzerfassung auf RT-Targets angeschaut? Prinzipiell machst Du ja genau das und da ist das glaub ich ein bisschen eleganter gelöst.
Wenn Du außerdem noch Platz für Hardware hast: Bau einen Schmitt-Trigger zwischen den Ausgang und einen digitalen Eingangskanal der Karte - dann kannst Du einfach bei einer steigenden Flanke einen Counter inkrementieren und in einer parallelen Schleife definiert den Counter auslesen, Rücksetzen etc. Führt zur höchstmöglichen Genauigkeit (die Hysterese vom Trigger mal abgesehen) und gleichzeitig einer Aktualisierungsrate der Anzeige, die frei einstellbar ist...
' schrieb:mit hilfe eines schieberegisters messe ich die zeitdifferenz zwischen den nulldurchgängen (bzw wegen rauschen im stillstand bei 0,25V).
Alleine durch diesen Algorithmus ist es möglich auch Stillstand festzustellen. Nämlich dann, wenn die Zeitdifferenz zwischen zwei Nulldurchgängen größer als eine Sekunde werden würde.
Zitat:zum verständnis füge die frequenzmessung bei. da die periodendauer im case(true) berechnet wird und im stillstand der casestruktur nicht mehr in true wechelt, wird immer der letzte wert im true angezeigt.
Warum verwendest du dann nicht den False-Case als Timeout?
Lass im False-Case einen (nachtriggerbaren) Timer laufen, der den ganzen Messvorgang abbricht, wenn für mindestens eine Sekunde kein neuer Nulldurchgang erkannt wurde.
Hinweis:
Das "Grundrauschen" im Nulldurchgang, das zu Problem beim Erkennen des Timeout führen würde, hast du ja bereits beachtet.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).