Hallo zusammen,
ich nutze aktuell den RevPi3 mit 3 DIO und 5 AIO Modulen. Die DIO Module sind links vom Core3 und die AIO Module rechts angeordnet.
Aktuell nehme ich damit Messwerte für Kraft (AIO Module 4-20mA) und Weg (DIO Module mit je Encodern, ca. 900 Impulse / Sekunde pro Encoder) auf. Insgesamt 20 Kraftwerte und 10 Wegwerte pro Abfrage. Ich frage die Werte zyklisch mit meinem Python Programm mittels RevPiModIo2 ab (alle 200ms).
Ich hatte die Messungen zuvor in einem einfachen Aufbau getestet und es kamen super Werte raus (ein RevPi Core3 + 1DIO + 1AIO).
Bei dem "großen" Aufbau kommt es nun zu Verzögerungen bei der Messwertaufnahme (siehe Bild im Anhang). Änderungen der Kraft und des Weges werden teilweise falsch bzw. verzögert dargestellt. Meine Vermutung ist, dass es an der erhöhten Zykluszeit vom Prozessor und piBridge liegt:
- piBrige: zuvor = 6ms, aktuell = 27ms
- Prozessor: zuvor = 50ms, aktuell kommen Fehlermeldungen daher habe ich sie zum Testen auf 60ms erhöht
Hat vielleicht jemand eine Idee wie ich die Werte wieder flüssiger protokollieren kann? Die Diagramme sollten linear sein (Kraft-Weg-Diagramm im elastischen Bereich).
Viele Grüße!
Kristian
Optimierungsvorschläge zur Messwertspeicherung
- krambambuli
- Posts: 70
- Joined: 18 Jun 2018, 09:56
Optimierungsvorschläge zur Messwertspeicherung
- Attachments
-
- Messwerte.PNG (33.59 KiB) Viewed 5675 times
- RevPiModIO
- KUNBUS
- Posts: 335
- Joined: 20 Jan 2017, 08:44
- Contact:
Re: Optimierungsvorschläge zur Messwertspeicherung
Hmmmmm
Da würde mich mal interessieren, ob du einen eigenen Loop zum protokollieren hast oder den .cycleloop aus RevPiModIO verwendest... Mit "Zykluszeit vom Prozessor" meinst du die .cycletime vom RevPiModIO?
Gruß, Sven
Da würde mich mal interessieren, ob du einen eigenen Loop zum protokollieren hast oder den .cycleloop aus RevPiModIO verwendest... Mit "Zykluszeit vom Prozessor" meinst du die .cycletime vom RevPiModIO?
Gruß, Sven
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
- krambambuli
- Posts: 70
- Joined: 18 Jun 2018, 09:56
Re: Optimierungsvorschläge zur Messwertspeicherung
Das Programm läuft mittels kivy GUI, also dauerhaft. Ich nutze RevPiModIO2 und ja ich meine die .cycletime mit Prozessorzeit Autorefresh = True wurde beim Starten der App initialisiert und Abgefragt werden die Werte dann immer einfach wenn ich sie brauche. Das heißt, wenn eine Messaufgabe gestartet wird, startet ein neuer Thread mit Timer der alle 200ms die Daten an z.B. rpi.io.I_1, I_2, ... abfragt.
Beste Grüße!
Beste Grüße!
- krambambuli
- Posts: 70
- Joined: 18 Jun 2018, 09:56
Re: Optimierungsvorschläge zur Messwertspeicherung
Ich denke ich habe eine erste Verbesserung gefunden. Die Threads zum Auslesen der Daten haben in while Schleifen die Werte abgefragt. Damit diese Schleifen nun nicht dauerhaft laufen werden sie jetzt nach jedem Durchlauf für 100ms angehalten. Jetzt läuft die Messwertaufnahme schon deutlich besser und die Warnung zur überschreiten der Zykluszeit kommt nur noch sporadisch Diagramme sehen nun annähernd linear aus.