INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

gleitender Mittelwert



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

27.02.2007, 00:26
Beitrag #1

gregorX Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Nov 2005

8.20
2006
kA

74206
Deutschland
gleitender Mittelwert
Hallo,
ich erfasse alle 500 ms einen Temperatur-Messwert aus diesen Messwerten möchte ich für einen Zeitraum von 10 Minuten einen gleitenden Mittelwert bilden und diesen zur Protokollierung abspeichern. Der Mittelwert soll gleitend sein da ich außer der "alle 10 Min. speichern-Funktion" den aktuellen Mittelwert auch in einer Anzeige im FP darstelle. Nachdem ich den Mittelwert gespeichert habe wird das Array wieder gelöscht und die Mittelwertbildung beginnt wieder für 10 Minuten von neuen. Das alles läuft 24 Stunden und das ganze Jahr durch und betrifft 24 Temperatur-Sensoren. Das bedeutet das wenn ich alle 500 ms einen Wert erfasse, ich bei 10 Minuten 1200 Werte pro Sensor im Array habe, sind so viele Werte eigendlich ein Problem?
Leider habe ich nur die LV Base-Version und somit nicht die gewünschten Vis zurverfügung daher habe ich ein eigenes Vi erstellt und möchte Euch bitten einen Blick darauf zu werfen ob das so wie ich es mir dachte auch möglich ist.


Sonstige .vi  Beispiel_Mittelwert.vi (Größe: 11,91 KB / Downloads: 2338)


Vielen Dank für Eure Hilfe
Gregor
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.02.2007, 11:37
Beitrag #2

marker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 226
Registriert seit: Feb 2005

8.2.1
2002
kA


Deutschland
gleitender Mittelwert
Hallo Gregor,

das dürfte kein Problem sein.
Ich weiss nicht wie groß der Arbeitsspeicher Deines Rechners ist, aber 1200 Werte sind eigentlich auf jedem halbwegs modernen Rechner ein Klacks. Damit belegst Du mit dem Datentyp DBL (64-Bit Floating Point) noch nicht einmal 10KB des Speichers.

Gruß,
Marko

"Make it simple, make it strong!"
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2007, 18:49
Beitrag #3

gregorX Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Nov 2005

8.20
2006
kA

74206
Deutschland
gleitender Mittelwert
' schrieb:Hallo Gregor,

das dürfte kein Problem sein.
Ich weiss nicht wie groß der Arbeitsspeicher Deines Rechners ist, aber 1200 Werte sind eigentlich auf jedem halbwegs modernen Rechner ein Klacks. Damit belegst Du mit dem Datentyp DBL (64-Bit Floating Point) noch nicht einmal 10KB des Speichers.

Gruß,
Marko


Hi Marko,
leider funktioniert mein Vi doch nicht so wie erwartet, jedesmal wenn ich das Array lösche wird nicht der letzte Mittelwert übergeben sondern der Messwert.
Ich glaube das ich es jetzt richtig abgeändert habe.


Sonstige .vi  Mittelwert_Berechnung.vi (Größe: 13,83 KB / Downloads: 1396)


Das Problem ist das alle 10 Minuten der Mittelwert von jedem der 24 Sensoren in eine .txt-Datei und in einem Graphen geschrieben wird.
Beginnt nach 10 Minuten die neue Mittelwertbildung mit dem letztem Mittelwert bekomme ich im Graphen keine "Ausreißer".
Oder habe ich da ein Denkfehler?

Gruß Gregor
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.03.2007, 15:23
Beitrag #4

marker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 226
Registriert seit: Feb 2005

8.2.1
2002
kA


Deutschland
gleitender Mittelwert
Hallo Gregor,

ich mach sowas immer indem ich mir ein FIFO-Register (Array) programmiere.
Die länge des Registers vorgeben und dann solange füllen bis es komplett voll ist.
Der aktuellste Wert ist immer das Array-Element 0 (also immer vorne anfügen, geht auch anders so finde ich es aber einfacher), der älteste Wert immer das letzte Element. Wenn das FIFO-Register voll ist immer das letzte Element löschen und vorne den aktuellsten Wert anfügen.

Gruß,
Marko


Angehängte Datei(en)
Sonstige .vi  Mittelwert_Berechnung_ML.vi (Größe: 14,88 KB / Downloads: 1847)

"Make it simple, make it strong!"
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.03.2007, 20:09 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2015 16:17 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
gleitender Mittelwert
' schrieb:ich mach sowas immer indem ich mir ein FIFO-Register (Array) programmiere.
Die länge des Registers vorgeben und dann solange füllen bis es komplett voll ist.
Der aktuellste Wert ist immer das Array-Element 0 (also immer vorne anfügen, geht auch anders so finde ich es aber einfacher), der älteste Wert immer das letzte Element. Wenn das FIFO-Register voll ist immer das letzte Element löschen und vorne den aktuellsten Wert anfügen.

Die Aufgabe hast Du zwar perfekt gelöst, eine andere Frage - jenseits der reinen Programmiertechnik -, ist aber, ob das wirklich praxisgerecht ist. Die Anzeige wird einerseits mit jedem Messwerte, also alle 500ms, aufdatiert, aber andererseits ist das jedesmal der Mittelwert über die letzten 1000 Werte.
Ich denke aber, daß der Mittelwert aus so vielen Werten nur für die Aufzeichnung, nicht aber für die laufende Anzeige sinnvoll ist. Andererseits ist aber auch für die Anzeige eine Mittelwertbildung, wenn auch über eine geringere Anzahl von Werten, sinnvoll.
Deshalb würde ich es vielleicht so machen:
Die Anzeige wird nur nur bei jedem 10. Messwert, also alle 5s, aufdatiert, und es ist der Mittelwert der letzten 10 Werte. Von diese Werten bilde ich dann Mittelwerte für die Datenspeicherung.
Das ist auch resourcenschonender, denn ich brauche kein FIFI mit 1000 (=10*100) Elementen, sondern nur zwei Arrays mit 10 + 100 Elementen.

Ludwig


Angehängte Datei(en)
Sonstige .vi  Mittelwert_Berechnung_WA.vi (Größe: 24,55 KB / Downloads: 1482)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.03.2007, 21:01
Beitrag #6

gregorX Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Nov 2005

8.20
2006
kA

74206
Deutschland
gleitender Mittelwert
Hallo,

@ Marko
deine Möglichkeit ist natürlich auch klasse, allerdings habe ich hier das Problem das nur ein kleines Fenster der Temperatur-Verläufe sichtbar wird.
Der Kunde möchte jedoch alle 10 Minuten den Mittelwert von allen Temperaturwerten haben und auch nur alle 10 Minuten diesen Wert protokollieren.

@ Ludwig
Du hast natürlich recht das es für die Anzeige im FP nicht so gut ist so viele Werte zu sammeln.
Also wenn ich dich richtig verstanden habe würdest du Beispielweise: für eine Minute aus den Messwerten einen Mittelwert bilden diesen in der Anzeige im FP darstellen und auch diesen in einem weiteren Array für die Datenprotokollierung schreiben. Wenn dann 10 Mittelwerte im Array für die Protokolierung vorliegen wird aus disen 10 Mittelwerten wieder ein Mittelwert gebildet und dieser auch protokolliert.
Oder habe ich deinen Vorschlag falsch verstanden?

Dánke und liebe Grüße
Gregor
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.03.2007, 10:56 (Dieser Beitrag wurde zuletzt bearbeitet: 04.03.2007 11:02 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
gleitender Mittelwert
' schrieb:Du hast natürlich recht das es für die Anzeige im FP nicht so gut ist so viele Werte zu sammeln.
Also wenn ich dich richtig verstanden habe würdest du Beispielweise: für eine Minute aus den Messwerten einen Mittelwert bilden diesen in der Anzeige im FP darstellen und auch diesen in einem weiteren Array für die Datenprotokollierung schreiben. Wenn dann 10 Mittelwerte im Array für die Protokolierung vorliegen wird aus disen 10 Mittelwerten wieder ein Mittelwert gebildet und dieser auch protokolliert.
Oder habe ich deinen Vorschlag falsch verstanden?

Nein, nicht, es kam mir aber nur darauf an zu sagen, daß es sinnvoll sein könnte für die laufende Anzeige einerseits und für die langzeitliche Aufzeichnung andererseits unterschiedliche Mittelungszeiten zu verwenden. Und außerdem, daß man dann nicht mehr 1200 Werte zwischenzuspeichern braucht, sondern nur noch, verteilt auf 2 Arrays, z.B. 20 + 60 (das Produkt muß 1200 ergeben).
Was aber die Darstellung als Diagramm betrifft, das war kein Vorschlag, sondern das habe ich nur gemacht, um das Beispielprogramm etwas aufzupeppen. So wie ich Dich verstanden hatte, sprachst Du nur von einer laufenden Anzeige und von einer laufenden Datenaufzeichnung als Mittelwert über 10min. Dein FP kannst Du natürlich auch aufpeppen, aber ob um in welchem Umfang das mußt Du selbst entscheiden. Das mögliche Maximum wäre: Anzeige + graphischer Verlauf für 10s- und 10min- Mittelwert. (die 10sec sind von mir jetzt auch frei aus der Luft gegriffen)

Es ist auch zu überlegen, ob für die kurzzeitige ("10s") Anzeige ein echte gleitende Mittelwertbidung, so wie von Marco vorgeschlagen, besser ist.
Der Unterschied: Es wird dann ständig alle 0.5sec aufdatiert, die Anzeige des Mittelwertes ist immer 5 sec (die Hälfte der Mittelungszeit) hinterher. Bei nicht gleitender Mittelwertbildung ist die Anzeige im Moment der Aufdatierung 5sec hinterher, aber kurz vor der Aufdatierung nach 10sec ist der Rückstand natürlich 15sec.
Marcos Vi würde ich nur verwenden, wenn man nur das Basispaket hat. Ansonsten gibt es das VI "Glättungsfilter-Koeffizienten", welche man an das VI "FIR-Filter" anschließt. (Punkt zu Punkt - Signalverarbeitung) (Sehr gute Tarnung im im Funktionsmenü, ich brauche immer wieder 5 min, um das zu finden)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2007, 10:12
Beitrag #8

Alfe Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Aug 2006

2011
2006
kA


Deutschland
gleitender Mittelwert
Hallo,
könnte mir vielleicht jemand die obrigen vis in LV 7.1 abspeichern, damit ich sie mir mal anschauen kann.
Vielen Dank
Alfe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2015, 15:47
Beitrag #9

vk187 Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Nov 2015

2013
2015
DE


Deutschland
RE: gleitender Mittelwert
Hallo Leute,

ich bin auch an dem Gleitenden Mittelwert dran.

Folgendes:

-Es Sollen 5 Messwerte in ein Array gespeichert und daraus der MW gebildet und grafisch dargestellt werden.
-dann soll der erste Wert, der gespeichert wurde wieder gelöscht und ein neuer hinzugefügt und daraus wieder der MW gebildet werden

Hab schon etliche Möglichkeiten mit Arrays und Schleifen versucht, komme aber nie zum gewünschen Ergebnis Sad

Das Problem bei mir liegt darin, das immer nur ein Wert gespeichert wird und nicht gewartet wird bis 5 Werte im Array sind.

Ich hänge mal 2 Möglichkeiten die ich versucht habe und mein Programm unten an.

Hoffe ihr habt Vorschläge wie ich das Problem gelöst bekomme und bedanke mich schon mal Smile

Gruß
Valon

PS: ich habe die Beiträge zu diesem Thema gelesen und auch die VIs die hier geladen wurden ausprobiert und damit rumexperimentiert...


Angehängte Datei(en) Thumbnail(s)
       

13.0 .vi  USM-MW.vi (Größe: 23,26 KB / Downloads: 209)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2015, 16:59
Beitrag #10

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: gleitender Mittelwert
Hallo Valon,

anbei ein Vorschlag, wie es gehen könnte.


Gruß, Marko


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: