pdm Geschrieben December 10, 2018 at 13:01 Geschrieben December 10, 2018 at 13:01 Hallo zusammen, ich möchte gerne mit folgendem Aufbau Vibrationen/Schwingungen messen mit einer hohen Genauigkeit. Hierzu möchte ich mit einer Frequenz bis 1000Hz also einem Speicherinterval von 1ms loggen. Aufbau zu Testzwecken: Tower: Red Brick 1.0 Master Brick 2.1 Bricklets: Accelerometer 1.1 Ich habe alles am Pc via Usb angeschlossen und lasse es über Brick Viewer 2.3.16 laufen (Alle Komponenten Up to date). Dort unter Data Logger zeichne ich Testweise auf. Parametriert habe ich das Accelerometer unter Devices mit (siehe Anhang): Acceleration: 1 Milliseconds Options: Datarate: 1600Hz Full Scale: 8g Filter Bandwidth 800Hz Wenn ich den Aufbau Testweise laufen lasse werden die Daten wie im Anhang mit einem inkonstanten delta t aufgezeichnet. Also die Datenrate ist nicht konstant. Woran kann das liegen? Ich habe schon unterschiedliche Brickletkabel probiert um das auszuschliessen. Außerdem habe ich unterschiedliche Parameter probiert was auch keine konstanteren Ergebnisse geliefert hat. Ich freue mich über jede Idee und Anregung um das Problem zu lösen.config1.jsonlogger_data_1544433502.xlsx Zitieren
borg Geschrieben December 10, 2018 at 15:06 Geschrieben December 10, 2018 at 15:06 Die hohen Sprünge im 2 Sekunden-Takt liegen am verwendeten RED Brick Image. Dort gab es einen Kernel-Prozess der alle 2 Sekunden viel CPU-Zeit geklaut hat. Im neuesten Image (1.13) ist das gefixt. Könntest du zum testen einfach einmal den Master Brick direkt per USB am PC anschließen? Wie verhält es sich dann mit dem delta-t? Zitieren
pdm Geschrieben December 11, 2018 at 09:05 Autor Geschrieben December 11, 2018 at 09:05 Vielen Dank für die Hilfe, ich aktualisiere das Image des RED Brick gleich und melde mich dann nochmal. In der Zwischenzeit habe ich ein paar Testläufe mit dem Master Brick gemacht. Die Parameter sind bis auf die Acceleration immer gleich geblieben: Data Rate: 1600Hz Full Scale: 8g Filter Bandwodth: 800Hz Ergebnisübersicht siehe Anhang. Falls mehr Details nötig sind kann ich die gerne Nachreichen. Leider gibt es auch in dieser Konfiguration immernoch Sprünge.Vergleich_unterschiedlicher_Tastraten_nur_Master_+_Acc.pdf Zitieren
borg Geschrieben December 11, 2018 at 09:57 Geschrieben December 11, 2018 at 09:57 Also prinzipiell schafft das Bricklet die vollen 1000 Nachrichten pro Sekunde, gerade mit folgendem Python-Skript getestet: #!/usr/bin/env python # -*- coding: utf-8 -*- import time HOST = "localhost" PORT = 4223 UID = "3cnLyG" # Change to the UID of your Accelerometer Bricklet from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_accelerometer import BrickletAccelerometer count = 0 def cb_acceleration(x, y, z): global count count += 1 if __name__ == "__main__": ipcon = IPConnection() a = BrickletAccelerometer(UID, ipcon) ipcon.connect(HOST, PORT) a.set_configuration(a.DATA_RATE_1600HZ, a.FULL_SCALE_8G, a.FILTER_BANDWIDTH_800HZ) a.register_callback(a.CALLBACK_ACCELERATION, cb_acceleration) a.set_acceleration_callback_period(1) while True: time.sleep(1) print('{0} messages per second'.format(count)) count = 0 raw_input("Press key to exit\n") # Use input() in Python 3 ipcon.disconnect() Ausgabe: olaf@pc2:~/build20/python$ python example_callback.py 1002 messages per second 1001 messages per second 1001 messages per second 1000 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1000 messages per second 1002 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1001 messages per second 1000 messages per second 1001 messages per second 1000 messages per second 1001 messages per second 1001 messages per second Wenn ich das bei mir auf dem PC mit dem Logger im Brick Viewer versuche, kommt dieser mit dem Loggen nicht hinterher und die Daten fangen an sich aufzustauen. Vielleicht passiert das auch bei dir? Der Logger ist leider nicht wirklich darauf ausgelegt riesige Datenmengen zu loggen. Zitieren
pdm Geschrieben December 11, 2018 at 13:09 Autor Geschrieben December 11, 2018 at 13:09 Aha, danke für's testen. Das ist aber jetzt schlecht für mein Vorhaben. Gibt es evtl. eine andere Möglichkeit in der Größenordnung um 1000Hz zu loggen? Wie man meinem vorherigen Post entnehmen kann ist ja nicht einmal bei 20Hz ein 100%iges Ergebnis möglich. Zitieren
borg Geschrieben December 11, 2018 at 13:14 Geschrieben December 11, 2018 at 13:14 Hattest du denn vor ein eigenes Programm zu schreiben oder nur den Logger zu nutzen? Mein Beispiel oben wäre ja bereits ein guter Einstieg. Es erhebt die Daten bereits mit den vollen 1000Hz, es fehlt nur das schreiben in eine Datei. Zitieren
pdm Geschrieben December 11, 2018 at 13:26 Autor Geschrieben December 11, 2018 at 13:26 Das Programm ist bereits geschrieben. Aber es besteht das gleiche Problem wie am Brickviewer. Die geloggten Daten werden inkonstant abgespeichert. Ich benutze dafür zusätzlich zum Master Brick und Accelerometer Bricklet noch ein RED Brick, ein Stepdown Power Supply, ein OLED 128,64 Bricklet, ein GPS Bricklet und einen Rotary Encoder Bricklet. Per USB Stick am RED Brick werden die Daten geloggt. So wie du schreibst verstehe ich das Problem Hardwareseitig? Liegt das vielleicht am USB? Zitieren
borg Geschrieben December 11, 2018 at 13:37 Geschrieben December 11, 2018 at 13:37 Es gibt hier denke ich kein Hardwareseitiges Problem. Als ersten Schritt sollten wir erstmal in deinem Programm die vollen 1000Hz erreichen. Wenn du nur Master Brick + Accelerometer Bricklet anschließt und in deinem Programm einfach nur die Daten loggst (oder sogar nur zählst erstmal), dann solltest du auf jeden Fall auf 1000Hz kommen. Wenn das funktioniert müssen wir von da aus schauen wie wir den Rest der Hardware einbinden. Dabei ist wichtig: 1000 Nachrichten pro Sekunde sind die maximale Anzahl an Nachrichten die über einen USB-Anschluss laufen können bei uns im System. Wenn du z.B. einen Getter verwendest wird eine Anfrage zum Bricklet geschickt und eine Antwort wieder zurück. Das sind dann bereits zwei Nachrichten. D.h. Callbacks sind in deiner Anwendung definitiv notwendig (die erzeugen nur eine Nachricht, da es die Anfrage nicht gibt). Wenn du mehrere Bricklets verwendest teilen sich diese die Anzahl der Nachrichten. Wenn du also die 1000 Nachrichten/Sekunde von dem Accelerometer Bricklet benötigst, wirst du einen Stapel benötigen der nur aus Master + Accelerometer besteht und einen weiteren für die restlichen Module. Alternativ wenn die Aufzeichnung "schubweise" stattfinden soll kann man es auch so bauen das die anderen Bricklets nicht angesprochen werden während die Aufzeichnung läuft. Wie soll dein Aufbau später aussehen? Standalone irgendwo in einer kleinen Box oder ist er immer am PC angeschlossen? Zitieren
pdm Geschrieben December 11, 2018 at 13:43 Autor Geschrieben December 11, 2018 at 13:43 Standalone in einer kleinen Box. Ich würde sagen ich schicke dir mal das Program. Dann siehst du genau wie das gelöst wurde. Zitieren
pdm Geschrieben December 11, 2018 at 13:49 Autor Geschrieben December 11, 2018 at 13:49 Ok PN ist nicht möglich mit Anhang. Dann hier im Anhang.record.pyfind_folder.py Zitieren
borg Geschrieben December 11, 2018 at 14:05 Geschrieben December 11, 2018 at 14:05 Grob kannst du bei jedem Getter mit 2ms und bei jedem Setter mit 1ms Laufzeit rechnen. Du hast in deiner Schleife 4 getter und 8 Setter. Das entspricht also 16ms pro Schleifendurchgang, ich würde in dem Programm also in etwa mit einem Durchsatz von maximal 1000/16 = 62 Beschleunigungsdaten pro Sekunde rechnen. Ich würde versuchen das so umzustellen das du deine Aufzeichnung der Daten per Callback machst (z.B. für 500ms), diese speicherst und danach darstellst. Nach dem darstellen wieder die nächste Aufzeichnung starten etc. Zitieren
pdm Geschrieben December 11, 2018 at 14:08 Autor Geschrieben December 11, 2018 at 14:08 Alles klar, Vielen Dank für den Support! Ich werde berichten wenn sich was tut. Zitieren
pdm Geschrieben December 13, 2018 at 09:23 Autor Geschrieben December 13, 2018 at 09:23 Hallo zusammen, wir haben jetzt mal noch weiter rumprobiert und kommen leider auf keinen grünen Zweig. Ich hänge das Skript, mit dem wir versucht haben, es so minimalistisch wie möglich zu halten, mal an. Es wird komplett auf USB verzichtet und direkt auf dem RED Brick geschrieben. Das Ergebnis hänge ich ebenfalls an. Es zeigt sich jedoch, dass wir nur knapp 400 Nachrichten pro Sekunde schreiben können und diese auch sehr inkonstant (Die Zeilen sind jeweils kommentiert mit "#"). Gibt es noch Ideen wie wir die Rate erhöhen können?record.pytest_acc3.txt Zitieren
borg Geschrieben December 13, 2018 at 10:36 Geschrieben December 13, 2018 at 10:36 Bei mir auf dem PC läuft dein Programm gut: # 1004 messages per second15446972611976 0.015 -0.025 0.982 15446972611986 -0.007 -0.022 1.003 15446972612000 0.024 -0.014 1.001 15446972612006 0.011 -0.019 0.977 15446972612016 0.015 -0.017 0.988 15446972612025 0.001 -0.023 1.001 15446972612035 -0.001 -0.03 0.974 15446972612045 -0.017 -0.018 1.003 15446972612055 -0.001 -0.008 0.992 15446972612066 0.017 -0.018 0.965 15446972612091 0.012 -0.036 0.976 15446972612092 -0.004 -0.031 0.975 15446972612095 0.027 -0.015 0.987 15446972612105 0.006 -0.033 0.974 15446972612115 -0.003 -0.029 0.986 15446972612125 0.002 -0.025 0.977 15446972612136 -0.001 -0.022 0.986 15446972612145 -0.015 -0.019 0.996 15446972612155 0.015 -0.008 0.962 15446972612166 0.0 -0.02 1.011 15446972612176 0.009 -0.023 0.986 15446972612186 0.024 -0.028 0.988 15446972612196 0.021 -0.019 0.986 15446972612205 -0.003 -0.035 0.97 15446972612216 -0.006 -0.011 0.965 15446972612226 0.009 -0.032 0.974 15446972612236 -0.006 -0.034 0.98 15446972612247 0.009 -0.023 0.985 15446972612256 -0.001 -0.03 1.008 15446972612266 0.034 -0.026 1.006 15446972612275 0.001 -0.026 0.994 15446972612286 0.013 -0.041 0.971 15446972612295 0.002 -0.036 0.983 15446972612306 0.0 -0.015 0.992 15446972612316 0.0 -0.035 0.989 15446972612326 0.006 -0.036 0.986 15446972612336 -0.004 -0.018 0.994 15446972612351 0.002 -0.032 0.983 15446972612356 -0.006 -0.017 1.004 15446972612366 -0.007 -0.018 0.988 15446972612376 0.0 -0.023 0.977 15446972612387 0.003 -0.028 0.979 15446972612396 0.002 -0.013 1.011 15446972612406 0.007 -0.022 0.992 15446972612416 0.002 -0.035 0.983 15446972612426 -0.01 -0.023 0.998 15446972612436 0.0 -0.027 1.011 15446972612446 -0.007 -0.021 0.984 15446972612456 0.014 -0.031 0.996 15446972612466 0.013 -0.022 0.98 15446972612476 -0.001 -0.04 0.984 15446972612486 -0.01 -0.016 0.988 15446972612496 0.0 -0.036 0.985 15446972612506 0.021 -0.018 0.987 15446972612516 -0.014 -0.029 0.981 15446972612526 -0.004 -0.019 0.984 15446972612536 0.009 -0.018 1.001 15446972612546 -0.007 -0.024 0.995 15446972612555 0.006 -0.024 0.986 15446972612566 -0.001 -0.015 0.999 15446972612576 0.007 -0.019 1.007 15446972612586 0.004 -0.031 0.984 15446972612596 -0.002 -0.026 0.96 15446972612606 0.0 -0.019 0.972 15446972612617 0.023 -0.032 1.0 15446972612626 0.019 -0.031 0.973 15446972612636 0.006 -0.027 0.979 15446972612647 -0.002 -0.029 1.001 15446972612657 0.013 -0.023 0.987 15446972612669 -0.001 -0.032 0.983 15446972612677 -0.008 -0.023 0.992 15446972612688 0.018 -0.026 1.017 15446972612697 0.008 -0.023 0.988 15446972612709 0.018 -0.015 0.976 15446972612718 0.002 -0.023 0.977 15446972612727 -0.019 -0.041 0.97 15446972612737 0.011 -0.017 0.99 15446972612748 0.006 -0.029 0.998 15446972612759 0.009 -0.025 0.966 15446972612768 0.016 -0.034 1.005 15446972612778 0.009 -0.036 0.985 15446972612788 0.017 -0.038 1.006 15446972612798 0.002 -0.029 0.978 15446972612808 -0.007 -0.03 0.979 15446972612822 -0.015 -0.025 0.991 15446972612831 0.0 -0.013 0.99 15446972612837 0.002 -0.018 0.967 15446972612847 0.012 -0.025 0.999 15446972612857 0.001 -0.023 0.991 15446972612867 0.009 -0.027 0.964 15446972612879 0.004 -0.015 0.991 15446972612888 -0.006 -0.024 0.977 15446972612897 0.014 -0.025 0.972 15446972612908 0.005 -0.027 0.969 15446972612919 0.006 -0.018 0.997 15446972612927 -0.011 -0.025 0.98 15446972612937 -0.002 -0.012 0.975 15446972612947 0.019 -0.021 0.989 15446972612957 0.004 -0.023 0.999 15446972612967 0.017 -0.024 0.979 15446972612977 -0.003 -0.031 0.987 15446972612987 0.0 -0.029 0.955 15446972612996 0.006 -0.042 1.002 15446972613007 0.003 -0.021 0.993 15446972613018 0.009 -0.028 0.982 15446972613027 0.013 -0.037 0.987 15446972613037 -0.021 -0.037 1.007 15446972613048 0.001 -0.02 0.997 15446972613058 0.006 -0.039 0.97 15446972613071 0.01 -0.028 0.97 15446972613078 -0.009 -0.026 0.992 15446972613086 0.003 -0.015 0.982 15446972613102 0.0 -0.027 0.988 15446972613106 0.004 -0.032 0.99 15446972613117 -0.013 -0.026 0.998 15446972613127 0.004 -0.03 0.988 15446972613136 -0.004 -0.022 0.983 15446972613146 0.024 -0.023 0.97 15446972613156 0.014 -0.029 0.984 15446972613167 -0.008 -0.012 0.992 15446972613189 -0.007 -0.03 0.975 15446972613190 -0.009 -0.032 1.005 15446972613198 0.009 -0.025 1.01 15446972613208 0.012 -0.025 0.97 15446972613217 -0.001 -0.033 0.976 15446972613228 0.019 -0.015 1.011 15446972613237 0.011 -0.024 0.981 15446972613247 0.009 -0.022 1.006 15446972613257 0.013 -0.037 0.989 15446972613268 0.009 -0.024 0.986 15446972613278 -0.007 -0.024 0.985 15446972613287 -0.016 -0.03 0.991 15446972613296 0.02 -0.013 0.978 15446972613307 0.022 -0.017 1.03 15446972613325 0.004 -0.016 0.985 15446972613328 -0.015 -0.046 0.982 15446972613337 0.003 -0.021 0.998 15446972613347 -0.006 -0.031 0.99 15446972613356 0.006 -0.023 0.993 15446972613368 0.008 -0.029 0.973 15446972613378 -0.001 -0.013 0.997 15446972613387 0.016 -0.034 0.975 15446972613397 0.015 -0.016 0.989 15446972613419 -0.003 -0.03 0.972 15446972613419 0.013 -0.036 0.973 15446972613427 0.009 -0.029 0.981 15446972613438 -0.005 -0.022 0.984 15446972613448 -0.014 -0.022 0.976 15446972613457 0.015 -0.027 1.001 15446972613468 0.002 -0.031 1.005 15446972613478 0.002 -0.023 1.021 15446972613488 -0.01 -0.02 0.975 15446972613497 -0.006 -0.028 0.994 15446972613508 -0.002 -0.03 0.986 15446972613524 0.015 -0.026 1.011 15446972613528 0.018 -0.032 0.998 15446972613538 0.001 -0.026 0.988 15446972613548 -0.005 -0.032 0.973 15446972613557 0.0 -0.027 0.973 15446972613568 -0.002 -0.025 0.987 15446972613579 0.003 -0.022 0.987 15446972613588 0.011 -0.013 0.968 15446972613597 0.014 -0.019 0.999 15446972613608 -0.004 -0.024 0.996 15446972613620 -0.004 -0.033 0.97 15446972613627 0.0 -0.023 0.977 15446972613636 0.018 -0.027 0.961 15446972613646 -0.002 -0.032 0.972 15446972613656 0.0 -0.009 0.965 15446972613667 -0.011 -0.029 0.992 15446972613677 0.0 -0.029 0.995 15446972613688 0.002 -0.015 0.982 15446972613697 0.023 -0.023 0.984 15446972613713 -0.026 -0.029 0.981 15446972613716 -0.01 -0.026 1.006 15446972613728 -0.003 -0.023 0.964 15446972613737 0.0 -0.026 1.0 15446972613747 0.012 -0.028 0.983 15446972613757 0.012 -0.032 0.977 15446972613768 -0.006 -0.026 0.994 15446972613777 -0.017 -0.031 0.97 15446972613787 -0.006 -0.024 0.965 15446972613798 0.012 -0.026 0.988 15446972613807 0.006 -0.037 0.994 15446972613818 0.009 -0.021 0.977 15446972613828 -0.011 -0.019 1.014 15446972613838 0.005 -0.031 0.993 15446972613847 0.014 -0.019 0.972 15446972613857 0.021 -0.029 0.997 15446972613867 0.006 -0.022 0.993 15446972613877 -0.023 -0.017 0.95 15446972613887 0.0 -0.027 1.005 15446972613898 -0.009 -0.025 1.011 15446972613906 0.012 -0.025 0.973 15446972613916 -0.005 -0.023 0.977 15446972613926 0.013 -0.032 0.972 15446972613937 -0.014 -0.015 0.998 15446972613947 0.001 -0.026 0.999 15446972613958 0.012 -0.01 1.0 15446972613966 0.007 -0.019 0.971 15446972613977 0.008 -0.023 0.97 15446972613987 0.009 -0.019 0.99 15446972613996 0.009 -0.02 0.988 15446972614006 0.004 -0.015 0.982 15446972614017 -0.014 -0.038 1.001 15446972614027 0.01 -0.024 0.978 15446972614037 0.017 -0.017 0.988 15446972614047 -0.002 -0.03 0.982 15446972614093 0.007 -0.028 0.983 15446972614094 0.027 -0.017 0.98 15446972614094 0.001 -0.032 1.013 15446972614095 0.005 -0.027 0.987 15446972614115 0.008 -0.028 0.985 15446972614137 0.003 -0.033 0.957 15446972614138 -0.01 -0.04 0.978 15446972614139 0.017 -0.015 0.989 15446972614143 0.021 -0.028 1.006 15446972614163 0.004 -0.033 0.983 15446972614170 0.012 -0.022 0.983 15446972614171 0.007 -0.026 0.991 15446972614179 0.0 -0.017 0.997 15446972614185 -0.012 -0.021 0.956 15446972614196 0.018 -0.027 0.997 15446972614207 -0.009 -0.026 0.983 15446972614216 0.019 -0.046 0.989 15446972614246 0.0 -0.026 0.986 15446972614247 0.003 -0.019 1.022 15446972614247 0.0 -0.02 0.998 15446972614256 0.018 -0.034 0.981 15446972614266 0.011 -0.028 1.006 15446972614276 0.014 -0.027 1.003 15446972614286 0.008 -0.022 0.995 15446972614297 0.008 -0.008 1.002 15446972614306 -0.002 -0.02 0.982 15446972614316 0.001 -0.021 1.0 15446972614327 0.015 -0.024 0.999 15446972614337 0.008 -0.021 0.972 15446972614347 0.016 -0.033 0.982 15446972614356 0.005 -0.021 1.002 15446972614367 0.007 -0.029 0.977 15446972614377 0.013 -0.021 0.96 15446972614387 -0.004 -0.017 0.988 15446972614397 0.011 -0.015 1.009 15446972614406 0.005 -0.023 1.022 15446972614417 0.007 -0.022 0.976 15446972614427 0.0 -0.017 0.993 15446972614436 0.001 -0.013 1.009 15446972614448 0.0 -0.009 0.994 15446972614456 0.009 -0.03 0.987 15446972614466 0.005 -0.03 0.995 15446972614476 0.014 -0.02 0.99 15446972614486 0.02 -0.025 0.99 RED Brick probiere ich gleich aus. Zitieren
borg Geschrieben December 13, 2018 at 10:47 Geschrieben December 13, 2018 at 10:47 Wenn ich den RED Brick per USB anschließe und das über den PC laufen lasse komme ich auf ~900 Nachrichten, das könnte man eventuell noch etwas tweaken um auf die vollen 1000 zu kommen. Wenn ich das ganze über einen WLAN-Stick über WLAN mache komm ich auf 600. Wenn ich die record.py auf dem RED Brick ausführe (GPU, webserver, etc bereits alles ausgestellt) komme ich auf ~550 Nachrichten pro Sekunde. Leider vergleichsweise weit weg von den vollen 1000. Sieht also so aus als wäre der Flaschenhals auf dem RED Brick entweder das eigentliche schreiben auf die SD Karte oder die zusätzliche CPU-Last die dadurch erzeugt wird. Zitieren
pdm Geschrieben December 13, 2018 at 12:04 Autor Geschrieben December 13, 2018 at 12:04 Alles klar. Dann wissen wir Bescheid. Vielen Dank für die Hilfe und das Ausprobieren. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.