PDA

View Full Version : Trendberechnung - Algorithmen ?



Onkel Dagobert
23.02.2007, 18:02
Hallo,

welche Algorithmen zur Trendberechnung gibt es, und welche sind für "gestresste" Steuerungen beonders effektiv? Speziell geht es mir darum, aus einem Prozesswert (REAL, Wertebereich ca. 0.0...50.0) einen Wert zu berechnen, der nach einer bestimmten Zeit erreicht wird. Dabei möchte ich möglichst keine Zwischenwerte speichern, also nur mit dem aktuellen Wert, fortlaufenden Mittelwert, etc. rechnen.

Zur Zeit rechne ich den aktuellen Wert entsprechend der aktuellen Zeit einfach hoch. Für meine aktuelle Anwendung reicht mir das eigentlich schon. Es würde mich jedoch interessieren, wie man das ggf. besser machen könnte.

Hat jemand eine Idee?


Gruß, Onkel

Raydien
24.02.2007, 01:06
könntest du da nicht schon den PID Regler einsetzen, um eine Trenderkennung festzustellen?

Zottel
24.02.2007, 10:04
Im Prinzip mußt du immer den aktuellen Wert mit einem vorigen vergleichen. Den vorigen mußt du also immer speichern.
Das einfachste Programm wäre:


L aktuellerWert
L alterWert
-R
ST trend

L aktuellerWert
ST alterWert

Dieses hat zwei Nachteile:
1. Wenn dem Wert ein Rauschen überlagert ist, kann sich im einen oder anderen Zyklus der "Trend" sogar umkehren.
2. Wenn die Änderung zwischen zwei Zyklen kleiner ist als z.B. die Auflösung des A/D-Wandlers, mit dem du den Wert einliest, ist der Trend für viele Zyklen 0.

Gegen 1) hilft ein Tiefpass. Diesen kannst du programmtechnisch am einfachsten als "gleitenden Mittelwert" realisieren:



L aktuellerWert
L Faktor // z.B.0.05
*R
ST Zwischenspeicher

L 1.0
L Faktor
-R
L Mittelwert
*R
L Zwischenspeicher
+R
ST Mittelwert

Es ist dabei egal, ob du nun den Trend aus den Mittelwerten oder den Mittelwert aus den Trendwerten bildest.

Gegen 2) hilft es ,den Trend nicht in jedem Zyklus, sondern nur zu bestimmten (weiter auseinander liegenden) Zeitpunkten zu berechnen (OB35, Timer, oder in jedem n-ten Zyklus).

Falls die Zykluszeit nicht einigermaßen konstant ist, muß die Berechnung sowieso zeitgesteuert erfolgen.

hugo
24.02.2007, 12:17
schau mal in die freie lib unter www.oscat.de
dort findest du eine vielzahl von modulen die dir die berechnung ermöglichen

auch pt1 glieder und mittelwerte gleitend oder fest.

Onkel Dagobert
24.02.2007, 18:32
Hallo Leute,

ich werde mir eure Vorschläge durch den Kopf gehen lassen, heute allerdings nicht mehr (Samstag ;) ).
Es muss doch aber auch verschiedene Algorithmen geben, wie sie in statistischen Berechnungen Verwendung finden. Beim Googeln bin ich dummerweise noch nicht fündig geworden.


Gruß, Onkel