Hallo an alle,
kurze Frage. Wie berechne ich meinen Speicherbedarf?
Habe einen Sensor der pro Umdrehung 5000 Impulse liefert
Bei einer Drehzahl von 6000 U/min und die Dauer beträgt 5s
(5000 6000 5)/60 = 5 MB
Ist das so richtig oder muss ich noch irgendetwas beachten?
AJ schrieb:> Wie berechne ich meinen Speicherbedarf?
WAS willst du speichern?
Wenn du Umdrehungen zählen willst, dann brauchst du nur eine genügend
große Zahl und keinen Speicherbereich.
AJ schrieb:> Habe einen Sensor der pro Umdrehung 5000 Impulse liefert> Bei einer Drehzahl von 6000 U/min und die Dauer beträgt 5s>> (5000 × 6000 × 5) ÷ 60 = 5 MB>> Ist das so richtig
Das ist noch nicht mal zahlenmäßig richtig gerechnet. Woher du die
Einheit "Byte" nimmst, ist auch schleierhaft. Auf der linken Seite der
Gleichung kommt jedenfalls nirgendwo ein Byte vor. Und warum teilst du
durch 60?
> Wie berechne ich meinen Speicherbedarf?
Gegenfrage: wofür sollte ein Sensor, der Impulse liefert, überhaupt
Speicherbedarf haben? Impulse werden üblicherweise nur gezählt
Ups tut mir leid..
ich speichere bei jeder Flanke die Auftritt, einen Zeitstempel ab.
Daraus berechne ich mir später dann die Geschwindigkeit.
Dafür benutze ich einen 32-Bit Timer.
6000 U/min x 5000 Impulse x 4 Bytes = 120 MByte/min
120 MByte/min / 60s x 5s = 10 MByte
Du kannst die Daten aber eventuell auf weniger Bits komprimieren, indem
du nicht die absoluten Zeitpunkte, sondern die Differenz zwischen
aufeinander folgenden Zahlen speicherst.
> Daraus berechne ich mir später dann die Geschwindigkeit.
Die kannst du auch während der Messung berechnen und ausgeben. Ich nehme
mal stark an, dass du die ermittelte Geschwindigkeit nicht 5000 mal pro
Umdrehung aktualisieren musst. Wenn doch, würde mich mal brennend
interessieren, was das für eine Raketenwissenschaft ist.
Gurgl schrieb:> was passiert mit den Impulsen?
Die Lösen sich in Luft auf. Mal ehrlich, was soll diese blöde Frage?
Willst du jetzt den Mathe-Lehrer raushängen lassen und uns erklären, wie
man korrekt mit Einheiten umgeht? Bitte, mach nur!
AJ schrieb:> ich speichere bei jeder Flanke die Auftritt, einen Zeitstempel ab.> Daraus berechne ich mir später dann die Geschwindigkeit.
Ich vermute dir geht es darum, einen Graph über 5s zu zeichnen, der
einen Geschwindigkeitsverlauf (z.B. Beschleunigung, Gleichlaufverhalten,
Abbremsen) darstellt.
Abspeichern eines Timerwertes bei jedem Impuls hat die Schwierigkeit,
dass der Timer überlaufen kann, wenn der Motor sehr langsam dreht oder
steht.
Alternative wäre, in sinnvollen Zeitabständen die Impulsanzahl
(=Momentangeschwindigkeit) abzuspeichern. Das lässt sich dann auch
direkt in einen Graphen umwandeln.
Wenn die zeitliche Auflösung z.B. 1 ms ist, hättest du für die 5s nur
noch 5000 Messwerte (Impulsanzahl) zu speichern.
Bei 6000 U/min treten in einer ms ca. 500 Impulse auf, du kämst also mit
16-bit Werten aus, macht 10 KB Speicherbedarf.
Vielen Dank Stefanus, das passt so.
Joe das würde nach meiner Berechnung erst nach 72s Überlaufen.
Und der Timer zählt erst, wenn die erste Flanke auftritt.
Und ja es wird danach ein Graph dargestellt, ich hau im Matlab einfach
meine ganzen Zeitstempel rein und das Programm erledigt den Rest.
AJ schrieb:> Und ja es wird danach ein Graph dargestellt, ich hau im Matlab einfach> meine ganzen Zeitstempel rein und das Programm erledigt den Rest.
Tja, das ist die heutige Generation Ingenieurskunst.
Für die gleiche Aufgabe sind statt 10 KB Daten auch 10 MB Daten okay,
Mathlab erledigt den Rest, und wenn das Reinzoomen in den 2500000
Punkte-Graph zu langsam wird, kauft man einen schnelleren Rechner.
Ehrlich jetzt?
Stefanus F. schrieb:> Willst du jetzt den Mathe-Lehrer raushängen lassen und uns erklären,> wie man korrekt mit Einheiten umgeht?
Ne ich dachte eigentlich du kommst da vielleicht selbst drauf!
Gurgl schrieb:> @axel: das sind die 60 Sekunden pro Minute
Mift. Irgendwie war ich bei 5 Minuten Meßzeit hängen geblieben. Es sind
aber nur 5 Sekunden. Die Rechnung stimmt trotzdem nicht. Weder von den
Zahlenwerten noch von den Einheiten.
Gurgl schrieb:> Stefanus F. schrieb:>> 6000 U/min x 5000 Impulse x 4 Bytes = 120 MByte/min>> Das haut so noch nicht hin, was passiert mit den Impulsen?
Guter Einwand. Aber einfach zu beheben. Denn es muß "4 Bytes / Impuls"
heißen und dann kürzen sich die Impulse auch ordnungsgemäß raus.
Joe F. schrieb:> Abspeichern eines Timerwertes bei jedem Impuls hat die Schwierigkeit,> dass der Timer überlaufen kann, wenn der Motor sehr langsam dreht oder> steht.
Bei 6000 1/min wird das bestimmt nicht passieren.
Je nach dem, was man als "langsam" klassifiziert, wird selbst bei eine
Umdrehung pro Minute immer noch alle 12 Millisekunden ein Impuls kommen.
Joe F. schrieb:> Bei Motoren rechne ich da prinzipiell mit 0 U/min.
Geht aber hier laut Eröffnungspost an der Fragestellung vorbei, i.e. der
Fall interessiert hier wohl überhaupt nicht.
Bei einem 32-Bit Zähler und 16MHz Takt, nur um mal irgendwelche Zahlen
zu nennen, besteht erst unterhalb von 0,00005 1/min die Gefahr eines
unbemerkten Überlaufs. Das wirst auch DU kaum noch als Drehung
wahrnehmen.
Wolfgang schrieb:> Bei einem 32-Bit Zähler und 16MHz Takt, nur um mal irgendwelche Zahlen> zu nennen, besteht erst unterhalb von 0,00005 1/min die Gefahr eines> unbemerkten Überlaufs. Das wirst auch DU kaum noch als Drehung> wahrnehmen.
...dachte sich der Programmierer bei Boeing...
Nein, natürlich kann man auch einen Schwellwert festlegen, unterhalb
dessen die Geschwindigkeit als 0 gilt etc.
Ich finde halt nur die Vorgehensweise Geschwindigkeitsmessungen in
diskreten Zeitabschnitten vorzunehmen deutlich praktikabler, und sie
deckt auch den Fall 0 U/min problemlos ab.
AJ schrieb:> Habe einen Sensor der pro Umdrehung 5000 Impulse liefert> Bei einer Drehzahl von 6000 U/min und die Dauer beträgt 5s
Wenn nur Umdrehungen gezählt werden müssen,
dann würde ich nur jeden 5000 Impuls zählen.
Das ergibt bei 6000U/min 100 Impulse / sec.
Bei 5 sec Messdauer würden das 500 Impulse sein.
Bei einem Integer (2 bzw. 4 Byte) würde sich der Sensor zerlegen bevor
es einen Überlauf gäbe.
Bei 4 Byte alle 5 sec ergeben sich 720 Byte / Stunde,
17280 Byte / Tag
6,3072 MByte / Jahr