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!
Hallo.
Ich habe einen klitzekleinen Fortschritt gemacht. Ich hätte den Channelnamen nicht benennen dürfen.
Nur habe ich noch ein Timingproblem.
Ich möchte gerne eine Anzeige der Drehzahl in 1/s.
Da ich alle 50ms die aktuelle Flankenzahl abfrage, dachte ich, dass ich diesen wert
einfach mal 20 nehme und dann habe ich den Wert für 1s.
Aber so richtig korrekt ist das nicht.
Ich könnte auch jede Sekunde die Schleife neu durchlaufen, allerdings ist der angezeigte Wert dann nur für diese eine Sekunde aktuell, also auch keine Lösung,
da die Anzeige dann sehr träge ist.
Gibt es eine bessere Lösung oder ein Stichwort wonach ich suchen kann?
Hallo,
also der Sensor kann 60 Signale pro Umdrehung ausgeben und das tut er auch.
Die zu erwartende Drehzahl ist 1400 1/min
Das heißt, die Frequenz wäre 1400Hz. (Abtastfrequenz müsste dann 2400Hz sein, was ich aber nicht beeinflussen kann
Ich hab nochmal bei anderen ähnlichen Programmen abgeguckt bei denen die Zeit anders mit dem Schieberegister "berechnet" wird. Allerdings passt bei mir diese "globale" Zeit nicht, da steht ein riesiger Wert, weshalb die restliche Berechnung natürlich auch falsch ist.
Steffi
10.12.2014, 16:26 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2014 16:26 von GerdW.)
Zitat:Allerdings passt bei mir diese "globale" Zeit nicht, da steht ein riesiger Wert,
In der LabVIEW-Hilfe steht auch, was dieser "riesige Wert" für eine Bedeutung hat…
Außerdem bildest du eine Differenz von zweien dieser Werte - und diese Differenz sollte deutlich geringer sein!
Zitat:weshalb die restliche Berechnung natürlich auch falsch ist
Kannst du diese Aussage mal mit ein paar Werten belegen?
Was ich momentan vermisse, ist die Umrechnung deiner Zeitdifferenz in Sekunden bzw. Minuten, um eine Drehzahlangabe mit der Einheit "1/min" zu erhalten…
Die Abtastfrequenz muss doppelt so hoch sein wie die zu messende Frequenz (Nyquist-Frequenz) damit keine Fehler entstehen, hab ich zumindest so in Messtechnik gelernt.
Allerdings muss diese Frequenz ja das NI-Modul einstellen, was ich aber leider nicht beeinflussen kann.
Woher der riesige Wert kommt hab ich auch in der Hilfe gelesen und dass man diese Funktion eigentlich nicht für Vergleiche nehmen sollte. Da es aber andere Beispiele hier mit dieser Funktion gibt wollte ich diese also auch verwenden und zu irgendwas muss sie ja gut sein.
Die Umrechung in 1/min hab ich noch nicht implementiert, da ich erstmal mit 1/s zufrieden wäre.
Der Bezug zur vergangenen Zeit ist mir noch ein Rätsel. Wenn ich das richtig verstehe, misst der Timer(wenn er denn richtig funktioniere) die verstrichene Zeit und ziehe von dieser die Schleifendauer ab. Dann habe ich die Zeit für das Flankendelta, richtig?
10.12.2014, 17:20 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2014 17:21 von GerdW.)
Zitat:Die Abtastfrequenz muss doppelt so hoch sein wie die zu messende Frequenz (Nyquist-Frequenz) damit keine Fehler entstehen, hab ich zumindest so in Messtechnik gelernt.
Du tastet hier aber nichts ab - du fragst nur regelmäßig einen Zählerstand ab…
Die USB6009 kann mit bis zu 10MHz zählen, steht jedenfalls im Manual.
Zitat:Der Bezug zur vergangenen Zeit ist mir noch ein Rätsel.
Wait und TickCount geben dir einen Zeitzähler in Millisekunden seit Rechnerstart. Steht so in der Hilfe…
Wenn man die Differenz zweier solcher Angaben bildet, bekommst man die Zeit in Millisekunden zwischen den beiden Abfragen. Und die wiederum benötigst du, um deine Drehzahl zu berechnen: "n = dPulse/dt".
Ich hab jetzt außerhalb und innerhalb der Schleife tick count eingefügt damit ich wenigstens gleiche funktionen benutze. Die Differenz daraus wird durch 1000 geteilt um den Wert in sekunden zu erhalten.
Hab jetzt auch die "Umrechnung" in 1/min drin aber das ergebnis ist immernoch nicht richtig.
Wenn ich eine Schleifendauer angebe, dann ist mein Drehzahlergebnis stark davon abhängig. Das soll es aber nicht.
Ist es eine Lösung die Schleifendauer auf 1ms zu setzen und dann das endergebnis durch 1000 zu teilen?
Ich kann leider nicht richtig nachvollziehen welche Drehzahl ich tatsächlich eingebe um so die richtigkeit des Programms zu überprüfen.
Zum Testen stelle ich die Skalierung der Anzeige auf 0-1 1/min. Das bekommt man ja hin wenn man mit der Hand dreht.
Nun springt mein Anzeigebalken aber und füllt im sekundentakt den ganzen Balken aus und wächst nicht eben nicht kontinuierlich wie man das von so einer Anzeige erwarten würde. Also irgendwas ist da noch im Busch.
11.12.2014, 09:46 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2014 09:48 von GerdW.)
Zitat:Hab jetzt auch die "Umrechnung" in 1/min drin
Wo?
Zitat:das ergebnis ist immernoch nicht richtig.
Inwiefern?
Zitat:Wenn ich eine Schleifendauer angebe, dann ist mein Drehzahlergebnis stark davon abhängig.
Inwiefern?
Kleinere Wartezeiten bewirken stärkere Schwankungen im Rechenergebnis, größere Zeiten führen zu einer Mittelung. Du darfst dir jetzt aussuchen, was für dich passender ist.
Zitat:Das soll es aber nicht.
Was soll es dann?
Die USB6009 bietet nur begrenzte Optionen - irgendwo muss sich der Preis ja niederschlagen. Also musst du den CTR software-getimed abfragen - und das macht man nun einmal mit einer Wartezeit in der Abfrageschleife!
Und manchmal soll es ja auch hilfreich sein, auf CoercionDots zu achten bzw. diese zu vermeiden. Sowas soll ja auch Auswirkungen auf die Genauigkeit der angezeigten Werte haben…
Zitat: Zitat:Hab jetzt auch die "Umrechnung" in 1/min drin
Wo?
Sorry, hab nicht das richtige Bild angehängt.
Zitat:Das Ergebnis ist immernch nicht richtig.
Weil, wenn ich die Schleifendauer verändere, kommen unterschiedliche Ergebnisse raus:
Bsp a: Schleifendauer 50ms (Ergebnis wird durch 20 geteilt um auf eine sekunde hochzurechnen)
bei einer Skalierung bis 100 1/min bewegt sich der Füllstand innerhalb der Anzeige.
Bsp b: Schleifendauer 500ms (Ergegnis durch 2 teilen)
bei gleicher Skalierung wird die Anzeige regelmäßig kurz komplett gefüllt
11.12.2014, 12:44 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2014 12:58 von GerdW.)
Zitat:Weil, wenn ich die Schleifendauer verändere, kommen unterschiedliche Ergebnisse raus
Erstelle doch bitte mal ein Diagramm, wo du den CTR-Wert über die Zeit aufträgst (also komplett one irgendwelche Skalierungen).
Einfach eine Schleife, die im 50ms-Takt den CTR-Wert abfragt, und dann bei mittlerem Durchfluß mal 10s lang messen…