Optimierungsvorschläge zur Messwertspeicherung

Rund um die Software von Revolution Pi
Post Reply
User avatar
krambambuli
Posts: 68
Joined: 18 Jun 2018, 09:56
Answers: 0

Optimierungsvorschläge zur Messwertspeicherung

Post by krambambuli »

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
Attachments
Messwerte.PNG
Messwerte.PNG (33.59 KiB) Viewed 3961 times
User avatar
RevPiModIO
KUNBUS
Posts: 322
Joined: 20 Jan 2017, 08:44
Answers: 0
Contact:

Re: Optimierungsvorschläge zur Messwertspeicherung

Post by RevPiModIO »

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
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
User avatar
krambambuli
Posts: 68
Joined: 18 Jun 2018, 09:56
Answers: 0

Re: Optimierungsvorschläge zur Messwertspeicherung

Post by krambambuli »

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!
User avatar
krambambuli
Posts: 68
Joined: 18 Jun 2018, 09:56
Answers: 0

Re: Optimierungsvorschläge zur Messwertspeicherung

Post by krambambuli »

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.
Post Reply