steinadler Geschrieben 23. März 2007 Geschrieben 23. März 2007 Hallo zusammen, ich taste in meinem Programm in bestimmten Zeitabständen Werte eines Sensors ab. Diese "zappeln" jetzt... wie das bei einem Sensor halt üblich ist. Wie kann man die Werte denn jetzt am besten glätten? Zwei Sachen fallen mir da auf Anhieb ein: 1. Gleitender Mittelwert 2. (letzter gemessener Wert - erster gemessener Wert) / Zeitabstand Gibt es denn noch was besseres? Zitieren
Klotzkopp Geschrieben 23. März 2007 Geschrieben 23. März 2007 Zu welchem Zweck willst du sie denn glätten? Geht es nur um die Anzeige, oder um weitere Verarbeitung? Zitieren
steinadler Geschrieben 23. März 2007 Autor Geschrieben 23. März 2007 Zu welchem Zweck willst du sie denn glätten? Geht es nur um die Anzeige, oder um weitere Verarbeitung? Eigentlich um beides. Aber vorrangig um weitere Verarbeitung. Auf deutsch gesagt: Von einem Lüfter soll die Drehzahl per Zähler ausgewertet werden. Dieser Wert schwank ziemlich sehr... warum auch immer. Jetzt möchte ich den glätten, um dann die Drehzahl in Abhängigkeit von der Spannung zu regeln. Das Problem mit der Mittelwertbildung ist, dass, wenn ich ein halbwegs ordentliches (gleichmäßiges) Ergebnis haben möchte, ca. 40 Werte gesampelt werden müssen. Allerdings werden hierbei Drehzahländerungen erst ne ganze Zeit später erkannt (logischerweise)... Und das ist für ne Regelung ja nicht sonderlich gut. Drehzahl hoch -> Entgegenreglung ... obwohl die Drehzahl vor zwei Sekunden hoch war und mittlerweile aber sich schon wieder (warum auch immer) eingepegelt hat... Zitieren
AndyDD Geschrieben 23. März 2007 Geschrieben 23. März 2007 Hallo zusammen, Diese "zappeln" jetzt... wie das bei einem Sensor halt üblich ist. Wie kann man die Werte denn jetzt am besten glätten? Zwei Sachen fallen mir da auf Anhieb ein: 1. Gleitender Mittelwert 2. (letzter gemessener Wert - erster gemessener Wert) / Zeitabstand Gibt es denn noch was besseres? Definier mal zappeln. Wenn die Abweichungen über die üblichen 2*Sigma drüber rausgehen ist Mittelwertbildung sehr fehlerbehaftet. Genauso ist es, wenn positive und negative Werte in der Ergebnismenge sind. Handelt es sich bei Dir um Rauschanteile? Dann könnte auch Averaging was bringen. EDIT: da war ich wohl etwas zu langsam. Aber was Du im letzten Post beschreibst ist nicht unbedingt ein Problem Deiner Messwerte. Du musst in diesem Fall auch über eine Totzeit Deiner Regelstrecke nachdenken, damit die nicht anfängt zu schwingen. Zitieren
steinadler Geschrieben 23. März 2007 Autor Geschrieben 23. März 2007 Du musst in diesem Fall auch über eine Totzeit Deiner Regelstrecke nachdenken, damit die nicht anfängt zu schwingen. Ja schon, aber ich dachte es gibt was, wo ich meine Werte etwas glätten kann, aber auch Änderungen ziemlich zeitnah mitbekomme. Bei einer Abtastrate von 250ms schwankt es um +/-1 Impuls. Das sind 4 Impulse in der Sekunde und demnach 240 Impulse in der Minute. Also wären das ca. 120 Umdrehungen/Minute Schwankung. Und das ist eigentlich zuviel. Und das, wenn der Lüfter mit ner konstanten Spannung betrieben wird. Zitieren
Der Kleine Geschrieben 23. März 2007 Geschrieben 23. März 2007 die üblichen 2*Sigma Kannst du mir die üblichen 2 Sigma mal definieren? Zitieren
AndyDD Geschrieben 23. März 2007 Geschrieben 23. März 2007 Kannst du mir die üblichen 2 Sigma mal definieren? Ich dachte die Grundlagen der Fehlerrechnung wären bekannt. Gehen wir mal von einem normalverteilten Wertevorrat aus. Man berechnet den Mittelwert und die Varianz oder Standardabweichung. Letztere wird als Sigma bezeichnet. Alles was sich in einem Bereich um +/-Sigma um den Mittelwert gruppiert (deshalb 2-Sigma-Umgebung) sollte statistisch sicher sein. Somit sind erst mal die extrem abweichenden Werte eliminiert. Natürlich darf Sigma nicht beliebig groß werden. 120 Umdrehungen als Schwankungen? +/- 1 Impuls? Das klingt mir nach digitalem Restfehler, den hast du doch immer. Klar wenn du summierst potenzieren sich die Fehler. Aber was machst du nochmal ganz genau? Zitieren
Klotzkopp Geschrieben 23. März 2007 Geschrieben 23. März 2007 Also wären das ca. 120 Umdrehungen/Minute Schwankung. Und das ist eigentlich zuviel.Selbst wenn die Geschwindigkeit konstant ist, kann die Anzahl der Impulse um 1 schwanken, je nachdem, wie das Messintervall liegt. Und 120 rpm ist die kleinstmögliche Abweichung, die du bei deinem Messintervall überhaupt bekommen kannst, also quasi die Auflösung deiner Messung. Das ist ein grundsätzliches Problem: Je kleiner dein Messintervall, desto ungenauer die Messung. Du könntest Abweichungen um 1 gegenüber dem vorherigen Wert ignorieren, wenn sie die entgegengesetzte Richtung der letzen Änderung hat. Zitieren
Der Kleine Geschrieben 23. März 2007 Geschrieben 23. März 2007 Ich dachte die Grundlagen der Fehlerrechnung wären bekannt. Gehen wir mal von einem normalverteilten Wertevorrat aus. Man berechnet den Mittelwert und die Varianz oder Standardabweichung. Letztere wird als Sigma bezeichnet. Alles was sich in einem Bereich um +/-Sigma um den Mittelwert gruppiert (deshalb 2-Sigma-Umgebung) sollte statistisch sicher sein. Somit sind erst mal die extrem abweichenden Werte eliminiert. Natürlich darf Sigma nicht beliebig groß werden.Du verwechselst hierbei aber einiges. Es geht nicht um Fehlerrechnung, das ist etwas ganz anderes. Es geht um statistische Kontrolle. Erste Frage: Kann man bei dem vorliegenden Prozess wirklich von einer Normalverteilung ausgehen? Es mag den Anschein haben, ist jedoch aufgrund der Messergebnisse nachzuweisen. Dann sind Mittelwert und Standardabweichungen aber eindeutig ermittelbar (aus der vorhandenen Stichprobe). Zweite Frage: Ist die 2-Sigma- Umgebung mit einem Anteil von 68,27 % der Messwerte wirklich aussagefähig? In der Industrie nimmt man häufig die 6 Sigma Umgebung (+/- 3 Sigma), damit man zumindest 99,73 % der Messwerte erfasst hat. Eliminiert sind damit noch keine Werte, sondern man hat einen relativ genau eingegrenzten Bereich. Um eine ganz saubere statistische Lösung hinzubekommen, sind die Methoden der statistischen Prozesskontrolle (SPC) anzusetzen. Sie definieren anhand von Vorlaufwerten, welche die Parameter Mittelwert und Standardabweichung festlegen, un die Klassifizieren, ob es sich wirklich um eine Normalverteilung handelt, sogenannte Regelkarten, in denen jeweils untere und obere Warngrenzen und Eingriffsgrenzen berechnet werden. Ein Überschreiten der Warngrenzen fordert eine Beobachtung des Prozesses, ein Überschreiten der Eingriffsgrenzen fordert ein Eingreifen in den Prozess. Ob man damit aber mit Kanonen auf Spatzen schiesst, oder ob für den Threadersteller die saubere Lösung von Nöten ist, kann ich nicht beurteilen. Eine Glättung der Werte läßt maximal ein Abgleiten des Prozesses erkennen. Dieses kann ausreichend sein, entweder über den gleitenden Mittelwert oder über einen gewichteten gleitenden Mittelwert. Wenn der Prozess wichtig für die Firma ist, würde ich aber zur sauberen Lösung raten. Zitieren
.vash Geschrieben 24. März 2007 Geschrieben 24. März 2007 Ich würde einen Zeitraum definieren z.B. 30 Sekunden, jede Sekunde einemal messen - je nach Anwendung muss das natürlich sinnvoll angepass sein. Darüber nen Mittelwert bilden und daraufhin reagieren wenn er z.B. mehr als drei mal hintereinander den Grenzwert berührt, unter oder überschreitet. Zitieren
steinadler Geschrieben 25. März 2007 Autor Geschrieben 25. März 2007 Ich würde einen Zeitraum definieren z.B. 30 Sekunden, jede Sekunde einemal messen - je nach Anwendung muss das natürlich sinnvoll angepass sein. Darüber nen Mittelwert bilden und daraufhin reagieren wenn er z.B. mehr als drei mal hintereinander den Grenzwert berührt, unter oder überschreitet. Hm... das ist das Problem. Ich möchte ziemlich schnell auf die Änderung reagieren, also brauch ich auch nen kleinen Zeitraum. So wie du es meinst, hab ichs ja schon: Abtastung alle 400ms und Zeitraum 10 Werte. Also 4 Sek. Zitieren
steinadler Geschrieben 25. März 2007 Autor Geschrieben 25. März 2007 Du könntest Abweichungen um 1 gegenüber dem vorherigen Wert ignorieren, wenn sie die entgegengesetzte Richtung der letzen Änderung hat. Könntest du mir das mal als Beispiel aufschreiben? Hab mal bissel rumprobiert, aber ich kapier das nicht so ganz. Meine Zählerwerte sind jetzt mal als Beispiel diese: Zählerwerte/Angestrebte Werte: 000 000 022 020 040 040 059 060 082 080 102 100 120 120 141 140 die größte Abweichung ist hier +/-2. Wie meinst du das jetzt mit dem Ignorieren? Zitieren
Bubble Geschrieben 25. März 2007 Geschrieben 25. März 2007 Was hast Du bei den Beispielwerten denn groß auszusetzen? Ich möchte ziemlich schnell auf die Änderung reagieren, also brauch ich auch nen kleinen Zeitraum. Dann brauchst Du im Idealfall eben eine höhere zeitliche Auflösung. Zitieren
steinadler Geschrieben 26. März 2007 Autor Geschrieben 26. März 2007 Was hast Du bei den Beispielwerten denn groß auszusetzen? Dann brauchst Du im Idealfall eben eine höhere zeitliche Auflösung. Naja, bei einer höheren zeitlichen Auflösung - also angenommen 10 Sekunden - wenn ich dann die Lüfterdrehzahl ändere, geht der errechnete Wert erst sehr spät mit hoch. Runterzu ists noch schlimmer Da ist der Lüfter quasi schon aus, obwohl noch ewig eine Drehzahl angezeigt wird. Zitieren
Der Kleine Geschrieben 28. März 2007 Geschrieben 28. März 2007 Ich erkenne zwei mögliche Ursachen deines Problemes. Erstens besitz die Messgenauigkeit eine zeitliche verzögerung, die du durch eine Glättung der Werte nicht behoben bekommst. Du könntest ausgehend von bestehenden Werten eine Prognose ins Auge fassen, aber Zweitens sind deine Messergebnisse relativ stabil. Du soltest dich freuen. Jeglicher Einsatz irgendwelcher Methoden wird dazu führen, dass deine Werte nahezu ideal verlaufen. Eine Ursache ist, dass dein Prozess ordentlich läuft, oder dass deine Messung zu ungenau ist (was ich mal bezweifeln mag). Die Abweichungen von +/- 3 (von 59 auf 82) liegt im normalen Abweichungsrahmen (Frage wieder, ob die realen Werte mit den gemessenen Werten übereinstimmen oder dort sich Fehler einschleichen, die man nicht behoben kriegen wird). Alarm würde ich vielleicht auslösen, wenn die Bewegung der Werte von einem zum nächsten Messpunkt +/- 5 erreicht oder überschreitet und im nächsten Messpunkt in die selbe Richtung driftet. Aber bei deinen angegebenen Werte besteht absolut kein Grund zur Panik. Das sind ganz normale Zufallsschwankungen in der Drehzahl oder vor allem in der Messgenauigkeit. Zitieren
steinadler Geschrieben 28. März 2007 Autor Geschrieben 28. März 2007 Ich möchte als Resultat einen Wert haben, der nicht groß schwankt. Besonders bei ner Drehzahl sieht das dumm aus, wenn der Nutzer sieht das die Drehzahl um 200 Umdrehungen in der Minute schwankt. Zitieren
Der Kleine Geschrieben 28. März 2007 Geschrieben 28. März 2007 Nochmal, deine Werte sind stabil. Ob es gut aussieht, kann doch nicht die Frage sein. Wichtig ist, das es geht. Die Abweichungen bei deinen Messwerten haben IMO ganz normale Ursachen, Messungenauigkeit und verzögerte Ergebnisdarstellung. Um dieses zu umgehen, wirst du dir bessere und teuere Hardware zulegen müssen. Dann werden die Ergebnisse vielleicht besser. Dein Prozess bleibt jedoch so bestehen, wie er ist. Vielleicht sollte man auch mal über die Regelung einer datenabhängigen Steuerung (der Drehzahl) diskutieren. Natürlich wird die Drehzahl höher, wenn sie zu niedrig war. Aber sie wird im Normalfall über den optimalen Wert hinausgesteuert, um dann wieder niedriger (über den optimalen Wert hinau) zu werden. Nur so kann man steuern, weil, was passiert, wenn beide Schwellenwerte genau auf den optimalen Wert geeicht sind, genau bei diesem Wert (Gleichbleiben / Höher werden / runter drehen). Deshalb sieh es einfach als normale Abweichungen an, die dir erst ab einer größeren Abweichung (mein Vorschlag +/- 5) so langsam ins Auge fallen sollten. Wichtig ist doch, dass es nicht abdriftet aus irgendwelchen Gründen und somit zu schnell oder zu langsam wird (abhängig von den jeweiligen Umweltbedingungen, also Laufzeit, Raumtemperatur, Raumklima, etc.) Falls du etwas gerades für deinen Kunden benötigst, nutze einfach keine Realmessungen , oder runde so stark, dass es nicht auffällt (also auf die 10er stelle) . Zitieren
steinadler Geschrieben 28. März 2007 Autor Geschrieben 28. März 2007 Falls du etwas gerades für deinen Kunden benötigst, nutze einfach keine Realmessungen , oder runde so stark, dass es nicht auffällt (also auf die 10er stelle) . Damit kommen wir der Sache schon näher. Das Wackeln ist eigentlich nur bei der Anzeige störend. Zitieren
Bubble Geschrieben 28. März 2007 Geschrieben 28. März 2007 Naja, bei einer höheren zeitlichen Auflösung - also angenommen 10 Sekunden - wenn ich dann die Lüfterdrehzahl ändere, geht der errechnete Wert erst sehr spät mit hoch. Höhere zeitliche Auflösung bedeutet mehr Messerte pro Sekunde, nichr weniger. Du bekommst Änderungen folglich schneller mit, sofern Dein Messgerät schnell genug präzise messen kann. Wodurch man zur Frage kommt: Mit welcher Methode (Umsetzung in Hardware) misst das Messgerät die Drehzahl und wie wird sie übermittelt? Dies müsste man wissen, um die Schwankungen erklären zu können, oder feststellen zu müssen, dass etwas nicht stimmt. Wofür ist die Regelung eigentlich gedacht? Was soll in Abhängigkeit wovon geregelt werden? Falls du etwas gerades für deinen Kunden benötigst, nutze einfach keine Realmessungen Davon möchte ich abraten. Zitieren
Der Kleine Geschrieben 28. März 2007 Geschrieben 28. März 2007 Davon möchte ich abraten.Warum? Die Wert sind IMo sauber und erklärbar. Wenn es für den Kunden nicht ausreichend ist, dann kann man auch die Anzeige derartig verändern, dass es schick aussieht. Sollten irgendwelche unnatürlichen Phänomene auftreten, lassen diese sich dann auch erkennen vom Kunden. Oder aber der Kunde lebt mit diesen realen Werten, an denen es nix auszusetzen gibt. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.