LabVIEWForum.de
Signal Integral Maximalwert ermitteln - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Signal Integral Maximalwert ermitteln (/Thread-Signal-Integral-Maximalwert-ermitteln)



Signal Integral Maximalwert ermitteln - Yilhak - 09.06.2016 14:42

Hallo Leute,

ich habe folgendes Problem:
Für meine Bachelorarbeit muss ich ein Programm schreiben, dass über die COM-Schnittstelle mir die Werte liefert und gleichzeitig ein Füllstandssensor.
Sinn: Auf der Präzisionswaage liegt eine Eimer voll mit Wasser und durch eine kleine Wasserpumpe wird der Inhalt ganz langsam hochgepumpt. Dann soll es in ein Behälter reingeflossen werden, wo auch der Füllstandssensor drinsitzt und kontinuierlich misst -> siehe Skizze1. Entleert sich der Behälter selbstständig (durch die Kapillarwirkung; Siphon-Effekt) sinkt meine Signalkurve nach unten.

Soweit so gut! Diese Funktion habe ich noch hinbekommen.

Jetzt meinte mein Professor, dass wir 1. die Füllstandsintensität [mm/min] und 2. Gesamtwassermenge über die Zeit messen müssen. Da ich Anfänger bin in LabView habe ich ehrlich gesagt keine Ahnung wie ich das machen könnte.

Meine Idee: Ich integriere mein Signal nd kriege damit ständig nur Signale mit einer positiven Steigung! Das funktioniert klasse! Das Problem ist aber nur, wenn mein Behälter halbvoll ist und kein Wasser mehr zufließt, steigt mein Integral-Signal konstant weiter "in der Ruhe" (Integral=>Fläche unterhalb des Signals)

Also dachte ich mir, ich baue eine if-Funktion ein in Labview, wo es gerade hängt bei mir:
WENN Steigung(konnte ich auch noch programmieren) = 0 DANN Integral*0+Max.IntegralSignal
->siehe Foto2 ich habe es auf ein Blatt draufgeschrieben - und muss es jetzt in Labview umsetzen

Fragen: 1. Diese Funktion in Labview umsetzen ->siehe foto2
2.max Wert des Integrals feststellen und kontinuierlich messen (damit bei jeder waagerechten Kurve mein Integral_Signal ebenso waagerecht verläuft und nicht steigt).

VIELEN DANK!!! (UND BITTE HILFT MIR Big Grin


RE: Signal Integral Maximalwert ermitteln - GerdW - 09.06.2016 16:49

Hallo Yilhak,

Zitat:Ich integriere mein Signal nd kriege damit ständig nur Signale mit einer positiven Steigung! Das funktioniert klasse!
Dann ist doch alles gut!?

Zitat:Das Problem ist aber nur, wenn mein Behälter halbvoll ist und kein Wasser mehr zufließt, steigt mein Integral-Signal konstant weiter "in der Ruhe" (Integral=>Fläche unterhalb des Signals)
Das Integral berechnet die Fläche unter einer Kurve. Deine Kurve ist immer im positiven Bereich. Das Integral wächst also immer weiter mit der Zeit.
Wo ist das Problem? Die Berechnung ist doch korrekt!?

Zitat:Also dachte ich mir, ich baue eine if-Funktion ein in Labview, wo es gerade hängt bei mir:
Wie wäre es, wenn du statt des Integrals über den immer positiven Füllstand ein Integral über die zugeflossene Menge das Wassers berechnest?
Die zugeflossene Menge Wasser ergibt sich aus "Füllstand_aktuell - Füllstand_vorher" (und entspricht deiner Ableitung)…

Zitat:2.max Wert des Integrals feststellen und kontinuierlich messen (damit bei jeder waagerechten Kurve mein Integral_Signal ebenso waagerecht verläuft und nicht steigt).
Abgesehen davon, dass ein Integral auch bei gleichbleibendem (positivem) Füllstand immer weiter anwachsen wird, wirst du auch Probleme haben eine "waagerechte" Kurve zu messen: dein Sensor und dein Messgerät rauschen…

Zum VI:
- Etwas weniger ExpressVIs wären hilfreich.
- Immer wenn CoercionDots in deinem VI auftauchen, solltest du dich fragen, ob das Ergebnis deiner Programmierung noch korrekt ist!
- Zugriffe auf die serielle Schnittstelle in einer TimedWhileLoop zu erledigen ist nicht sinnvoll. TWLs sind unter Windows generell überbewertet!


RE: Signal Integral Maximalwert ermitteln - Yilhak - 10.06.2016 12:18

Hallo GerdW,

DANKE für die Antwort!

Zitat:Wie wäre es, wenn du statt des Integrals über den immer positiven Füllstand ein Integral über die zugeflossene Menge das Wassers berechnest?
Die zugeflossene Menge Wasser ergibt sich aus "Füllstand_aktuell - Füllstand_vorher" (und entspricht deiner Ableitung)…
Bei der Entleerung haben wir ja auch einen bestimmten Zufluss. Nachdem man den Max.Wasserspiegel(y-achse) erreicht hat, hält der Zufluss ja nicht an. Es fließt weiterhin Wasser rein (=Signal auf der y-Achse muss auch bei der Entleerung also steigen).

Ich denke, dass es zwei Lösungswege gibt:

-1. Wie schon genannt, Integral v. Signal: Hier steigt meine Kurve auch bei der Entleerungsphase (Zeit,Fläche abhängig). Das Problem: wie schon GerdW. erwähnt hat:
Zitat:Abgesehen davon, dass ein Integral auch bei gleichbleibendem (positivem) Füllstand immer weiter anwachsen wird, wirst du auch Probleme haben eine "waagerechte" Kurve zu messen
Evlt. ein Zwischenspeicher des Max.Integral.Signals, "WENN Steigung=0, DANN Integral.Signal*0+Max.Integral.Signal -> "würde ich hier keine waagerechte Kurve kriegen?"
Ich wüsste aber nicht wie ich ein Max.Integral.Wert in mein if-case reinkriege. Anbei eine Labview Datei, ohne ein max.Integral.Wert (Sollte in die inneren if-Schleife bei TRUE->siehe Foto_1

-2. Extrapolation: siehe Foto_2
Problem: Ich habe aber keine Ahnung wie man das in Labview realisieren könnteBlush


RE: Signal Integral Maximalwert ermitteln - Yilhak - 10.06.2016 13:50

Ich habe grade ein wenig rumprobiert.. die 1. Lösung wird (denke ich) wirklich nicht funktionieren.
Die 2.Variante dürfte funktionieren - weiß jedoch nicht, wie ich das programmieren soll. Kann mir da jemand weiterhelfen? Mein Signal muss mit der positiven Steigung (kurz vor Entleerung) extrapoliert werden.

Nach der Extrapolation-> Integral vom ganzen Signal = Gesamtwassermenge, wenn ich das richtig verstanden habe.


Signal Extrapolation - Yilhak - 10.06.2016 14:02

Ich habe grade ein wenig rumprobiert.. die 1. Lösung wird (denke ich) wirklich nicht funktionieren.
Die 2.Variante dürfte funktionieren - weiß jedoch nicht, wie ich das programmieren soll. Kann mir da jemand weiterhelfen? Mein Signal muss mit der positiven Steigung (kurz vor Entleerung) extrapoliert werden.

Nach der Extrapolation-> Integral vom ganzen Signal = Gesamtwassermenge, wenn ich das richtig verstanden habe.


Signale addieren - Yilhak - 20.06.2016 10:09

Hallo Leute,

kann mir jemand sagen, wie man Signale addieren kann? Ich möchte die SUMME aller y-Werte (deltaY´s addieren, 1000ms gemessen) addieren. Steigt mein Signal, ADDIEREN, sinkt mein Signal, waagerechter Verlauf bzw. Wert/Höhe behalten -> s. Anhang.

Vielen Dank schonmal!


RE: Signal Integral Maximalwert ermitteln - GerdW - 20.06.2016 10:23

Hallo Yilhak,

ich habe deinen Beitrag verschoben.
Das gehört doch noch immer zu dieser Fragestellung, oder?

Zitat:Steigt mein Signal, ADDIEREN, sinkt mein Signal, waagerechter Verlauf bzw. Wert/Höhe behalten -> s. Anhang.
Pseudocode:
Code:
IF y_neu > y_alt THEN
  signal_neu := signal_alt + x
ELSE
  signal_neu := signal_alt
ENDIF
Sieht nicht so schwer aus: eine Case-Struktur und Schieberegister…


RE: Signal Integral Maximalwert ermitteln - Yilhak - 20.06.2016 10:43

Hallo GerdW,

ist eigentlich dieselbe Aufgabenstellung NUR darf ich das nicht mit dem Max. Wert jedes mal addieren sondern mit den deltaY´s.
-Was heißt "+x" und wie gebe ich sowas ein?Blink Sorry

-Wenn ich "y_neu>y_alt"eingebe kommt ein Fehler.. Unterschiedliche Datentypen steht da... Kannst du es mir bitte in meine Labview Datei reinschreiben? Es geht um die Signale "SENSOR 2-Chart".

Danke!


RE: Signal Integral Maximalwert ermitteln - GerdW - 20.06.2016 13:59

Hallo Yilhak,

das oben ist nur PSEUDO-Code! Sowas muss man erst in die Programmiersprache seiner Wahl umsetzen…

Zitat:Was heißt "+x" und wie gebe ich sowas ein?
Du wolltest doch das hier machen:
Zitat:Ich möchte die SUMME aller y-Werte (deltaY´s addieren, 1000ms gemessen) addieren.
Genau das ist im Term "+ x" verdeutlicht…

Zitat:Kannst du es mir bitte in meine Labview Datei reinschreiben?
Hab gerade kein LV2014 zur Verfügung. Musst du selbst mal programmieren…