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:

Problem mit Mittelwertbildung



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!

16.05.2013, 12:17
Beitrag #1

JohnnyBlack Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2011
2012
DE



Problem mit Mittelwertbildung
Hallo, habe ein sicher sehr einfaches Problem mit meinem Programm, gab hier im Forum mal ein ähnliches Problem, aber da endete das Thema ohne Lösung.

Und zwar werden in der Endversion meines Programms über eine Messkarte jede Minute mehrere Werte eingelesen.
Einer dieser Werte stammt von einem Durchflusssensor. Enhält dieser ein Messignal ab einer bestimmten Größe (Motor an) soll das Programm die anliegenden Werte direkt in eine Datei speichern (so weit läuft das Programm).
Falls der Durchflusssensor jedoch kein Signal bekommt (Motor aus) sollen die eingelesenen Werte über 15 min eingelesen, dann ein Mittelwert gebildet und erst dann gespeichert werden um die Protokolldateien übersichtlich zu halten.
Wenn jedoch innerhalb dieser 15 min der Motor eingeschaltet wird, soll dieser Mittelwert sofort erzeugt und gespeichert werden.

Nach ewigen rumprobieren hat mich diese sicher simple Aufgabe zur Weißglut gebracht.
Ich hab eine vereinfachte Version meines Programms erzeugt um zu zeigen was ich meine. Auch meinen Lösungsansatz poste ich mit (Mittelwert 15).
Simuliere ich darin in der for-Schleife die Werte funktioniert das, lese ich sie nun aber ein aber nicht. Das liegt sicher daran, dass die Schleife nicht weiß, wann ein Wert kommt aber ich finde dort keine Lösung.

Hoffe ihr könnt mir helfen Wink


Angehängte Datei(en)
11.0 .vi  Zusammenfassung Programm.vi (Größe: 8,46 KB / Downloads: 196)

11.0 .vi  Wechsel_Random_test.vi (Größe: 18,17 KB / Downloads: 197)

11.0 .vi  Mittelwert 15.vi (Größe: 9,05 KB / Downloads: 200)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.05.2013, 13:28
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem mit Mittelwertbildung
Hallo Johnny,

im Mittelwert.vi machst du das hier:
    (Ich habe nur die lokalen Variablen durch Drähte ersetzt.)
Was soll die FOR-Loop erreichen? Wozu die Stopp-Bedingung in der Loop: da die Loop nur im TRUE-Case aufgerufen wird, läuft sie dann auch immer durch ohne abzubrechen!
Wozu den Mittelwert von 15 exakt gleichen Werten berechnen?
THINK DATAFLOW!

- Wozu die lokale Variable "Intervall" im anderen subVI? Nimm einen Draht!
- Wozu kopierst du den Wert von "Intervall" in eine lokale Variable von "Intervall"? Willst du sichergehen, dass auch wirklich dieser Wert drin steht???

Zitat:Falls der Durchflusssensor jedoch kein Signal bekommt (Motor aus) sollen die eingelesenen Werte über 15 min eingelesen, dann ein Mittelwert gebildet und erst dann gespeichert werden um die Protokolldateien übersichtlich zu halten.
Wenn jedoch innerhalb dieser 15 min der Motor eingeschaltet wird, soll dieser Mittelwert sofort erzeugt und gespeichert werden.
Code:
IF Motor=an THEN
   Mittelwert = Momentanwert
ELSE
   Mittelwert = RunningAverage(Momentanwert)
ENDIF
Für den RunningAverage gibt es eine Pt-by-Pt-Funktion!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2013, 13:52 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2013 14:09 von JohnnyBlack.)
Beitrag #3

JohnnyBlack Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2011
2012
DE



RE: Problem mit Mittelwertbildung
Erst einmal schonmal vielen Dank für die Anregungen. Mit den lokalen Variablen liegt daran, dass ich viel am Probieren bin momentan und noch nicht viel optimiert ist. Aber werde da mal mehr drauf achten.

(16.05.2013 13:28 )GerdW schrieb:  Wozu den Mittelwert von 15 exakt gleichen Werten berechnen?
THINK DATAFLOW!

Genau da liegt mein Problem, ich will nicht 15 gleiche Werte berechnen. In das vi Mittelwert wird jede Minute ein neuer Wert übergeben. Es sollen dann 15 Werte nacheinander (im fertigen Programm also über ein Intervall von 15 Minuten) gespeichert werden. Dann soll nur daraus ein Mittelwert gebildet und ausgegeben werden. Dann soll von der 16. bis zur 30. Minute der nächste Mittelwert gebildet werden etc. So werden dann über Tag statt 1440 nur 96 Werte geloggt.

(16.05.2013 13:28 )GerdW schrieb:  Was soll die FOR-Loop erreichen? Wozu die Stopp-Bedingung in der Loop: da die Loop nur im TRUE-Case aufgerufen wird, läuft sie dann auch immer durch ohne abzubrechen!

Die Stopp-Bedingung habe ich eingebaut, damit bei einer Änderung des Zustandes (Durchfluss vorhanden) die For-Schleife unterbrochen wird und dann von den bisher eingelesenen Werten der Mittelwert gebildet wird.
Ansonsten würde die Schleife im schlimmsten Fall 15 Minuten laufen, obwohl die ankommenden Daten schon wieder im Minutentakt gespeichert werden müssten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2013, 15:03
Beitrag #4

JohnnyBlack Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2011
2012
DE



RE: Problem mit Mittelwertbildung
Leider darf ich meinen Eintrag nicht editieren aber ich hab glaub ich mein Problem (oder zumindest eines davon) erkannt. Wenn ich in dem Sub-Vi eine Schleife verwende wird der Eingangsmesswert nur einmal aufgerufen und immer wieder als Eingangsmesswert aufgerufen. Gibt es da eine Möglichkeit, den reell anliegenden Wert einzulesen oder muss ich irgendwie versuchen, dass VI jedes mal erneut aufzurufen damit ich zu meiner Lösung komme und mir irgendwie die letzten Messwerte darin merken?
Allerdings müsste ich das Sub-VI doch immer wieder aufrufen (wieder in einer Schleife), da gibts dann doch das selbe Problem oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2013, 15:14 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2013 15:15 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem mit Mittelwertbildung

Akzeptierte Lösung

Hallo Johnny,

Zitat:Wenn ich in dem Sub-Vi eine Schleife verwende wird der Eingangsmesswert nur einmal aufgerufen und immer wieder als Eingangsmesswert aufgerufen.
Richtig. THINK DATAFLOW!

Zitat:Gibt es da eine Möglichkeit, den reell anliegenden Wert einzulesen oder muss ich irgendwie versuchen, dass VI jedes mal erneut aufzurufen damit ich zu meiner Lösung komme
Jedes mal erneut aufrufen - ohne Schleife im subVI!

Zitat:und mir irgendwie die letzten Messwerte darin merken?
"Irgendwie" heißt fast immer Schieberegister/FeedbackNode!

Zitat:Allerdings müsste ich das Sub-VI doch immer wieder aufrufen (wieder in einer Schleife), da gibts dann doch das selbe Problem oder?
Dein HauptVI sollte doch eine Schleife haben! Die reicht doch aus, um dein subVI immer wieder aufzurufen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Mittelwertbildung von Array aus Signalverläufen LichterLichtus 11 9.022 17.11.2017 08:58
Letzter Beitrag: GerdW
  Array-Vergleich und Mittelwertbildung domdom 4 4.724 15.05.2017 10:59
Letzter Beitrag: jg
  Mittelwertbildung bei FFT-Spektren dimitri84 20 19.649 24.04.2015 08:18
Letzter Beitrag: dbuckl
  Problem bei Mittelwertbildung Tower 6 5.900 09.02.2010 10:48
Letzter Beitrag: BsaiboT
  Mittelwertbildung von mehreren Kanälen NoD 4 5.029 06.10.2009 15:07
Letzter Beitrag: NoD
  Messwertaufnahme Mittelwertbildung kevvvvvvv 8 7.382 24.08.2009 10:36
Letzter Beitrag: kevvvvvvv

Gehe zu: