LabVIEWForum.de
Druckmessung Verlauf in Sekunden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Druckmessung Verlauf in Sekunden (/Thread-Druckmessung-Verlauf-in-Sekunden)



Druckmessung Verlauf in Sekunden - cobain2004 - 07.07.2014 14:55

Hallo zusammen,

1) Druckwert messen (HD_Einzelner_Analog_Eingang_Auslesen_V2.vi):

ich möchte mit einem NI-9203 den Druck messen.
Da ich ein Rauschen auf meinem Signal habe möchte ich das ganze noch durch ein Tiefpass laufen lassen (im LabVIEW Butherworth-Filter). Damit ich einen Messwert im Durchlassbereich des Filters habe, verwende ich den letzten Wert aus dem Array nach dem Filter.

Warum erhalte ich im Bild Druck_Einzeln.100barmitFilter.png eine Grafik in der das Signal zuerst auf 0 bar ist und danach auf den Durchlassbereich geht? Meiner Meinung nach sollte ein Tiefpass am Anfang den Durchlassbereich haben und ab der eingestellten Grenzfrequenz fallen.



2) Signalverlauf in Sekunden in Echtzeit anzeigen (TestOnlyLeckage.vi):

In einem Diagram soll die X-Achse die Zeit in Sekunden anzeigen und die Y-Achse den Druck. Beim ungefiltertet Signal habe ich das hingekriegt, jedoch beim gefilterten bring ich es nicht fertig den Verlauf anzuzeigen. Weiss jemand von euch Bescheid, wie ich dieses "Problem" lösen kann?

Freundliche Grüsse

cobain2004


RE: Druckmessung Verlauf in Sekunden - cobain2004 - 08.07.2014 14:09

Heute habe ich nochmals probiert den Signalverlauf anzuzeigen, jedoch wieder vergeblich.
Schlussendlich sollte am gefilterten Graph ein konstanter Druck von 0 bar anliegen.

Ich habe das VI nochmals überarbeitet. (siehe Anhang VI mit Bild zur Messung).

Entweder ich bin zu blöd oder es ist wirklich so schwer.

Wäre echt froh wenn mir jemand weiterhelfen könnte, da die Zeit langsam knapp wird Blush


RE: Druckmessung Verlauf in Sekunden - GerdW - 08.07.2014 14:42

Hallo cobain,

1. Bitte dein Profil ergänzen, wenn du jetzt mit LV2013 arbeitest.
2. Dein VI mal in LV2011 anhängen. Dann wird dir vielleicht eher geholfen…


RE: Druckmessung Verlauf in Sekunden - GerdW - 08.07.2014 20:49

Hallo cobain,

Zitat:Warum erhalte ich im Bild Druck_Einzeln.100barmitFilter.png eine Grafik in der das Signal zuerst auf 0 bar ist und danach auf den Durchlassbereich geht?
Das sieht ganz nach einem Einschwingen des Filters aus…

Was verstehst du unter einem Durchlassbereich eines Tiefpasses? Wie erkennst du den "Durchlassbereich" an einem Plot im Zeitbereich?

Zitat:Schlussendlich sollte am gefilterten Graph ein konstanter Druck von 0 bar anliegen.
Wieso?

Zitat:In einem Diagram soll die X-Achse die Zeit in Sekunden anzeigen und die Y-Achse den Druck. Beim ungefiltertet Signal habe ich das hingekriegt, jedoch beim gefilterten bring ich es nicht fertig den Verlauf anzuzeigen.
Echt? Wo hast du das hingekriegt? Du erstellst dauernd Quasi-Waveform mit t0=0. Wo ist da eine echte Zeitanzeige?

- Da wir deine Messdaten nicht kennen, kann man so relativ wenig aussagen. Häng doch mal ein VI mit echten Messdaten an (vorzugsweise als LV2011).
- Was erhoffst du dir von der andauernden "Offsetkorrektur" deiner Messdaten vor dem Filter? Wie soll der Filter reagieren, wenn ihm jedesmal ein Signal mit einem anderen Offset angeboten wird? Merke: du ziehst immer den Wert des ersten Messwerts des aktuellen Datenblocks von den anderen ab - und damit einen zufälligen Rauschwert…
- Was erhoffst du dir vom Zusammenbauen des Clusters für den Graphen? Warum nimmst du keine "echten" Waveforms? Warum lässt du dir deine Messwerte nicht gleich als Waveform liefern?
- Wenn die Schleife nur eine endliche (und vorher bekannte) Anzahl durchläufe vollführen soll, nimmt man üblicherweise eine FOR- statt einer WHILE-Loop…
- Aufräumen im VI hat auch noch nie geschadet…


RE: Druckmessung Verlauf in Sekunden - cobain2004 - 09.07.2014 16:48

Hallo GerdW,

Vielen Dank erstmals für deine Hilfe.

Vielleicht noch zuerst für was wird das ganze eigentlich angewendet. Es ist ein Hochdruckprüfstand, der Drucksensor kann bis zu 750 bar messen. Das Vi soll als Leckageprüfung dienen. Ein Wert in Sekunden wird vorgegeben und die Druckkurve soll aufgezeichnet werden. Der Druck darf während dieser Zeit nicht unter einen bestimmten Wert fallen.


Zitat:Was verstehst du unter einem Durchlassbereich eines Tiefpasses? Wie erkennst du den "Durchlassbereich" an einem Plot im Zeitbereich?

Ich habe den Tiefpassfilter im LabVIEW komplett falsch verstanden, da ich nicht wusste,
dass ein Tiefpass ein Einschwingverhalten hat.

Zitat:Schlussendlich sollte am gefilterten Graph ein konstanter Druck von 0 bar anliegen.
Wieso?
Ein Druck von 0 bar sollte anliegen, da mein System drucklos ist --> bezogen auf die oben genannte Messung.

Zitat:In einem Diagram soll die X-Achse die Zeit in Sekunden anzeigen und die Y-Achse den Druck. Beim ungefiltertet Signal habe ich das hingekriegt, jedoch beim gefilterten bring ich es nicht fertig den Verlauf anzuzeigen.
Echt? Wo hast du das hingekriegt? Du erstellst dauernd Quasi-Waveform mit t0=0. Wo ist da eine echte Zeitanzeige?

Beim Gefilterten Signal habe ich das eben nicht hingekriegt und das war mein Problem.

Ich habe nun noch ein VI in Version 2011 im Anhang. Ich habe es nun geschafft mein Signal zu filtern, jedoch weiss ich nicht, ob das so in der Praxis gemacht wird. Ich lass die gelesenen Messpunkte (10000) durch ein Butherworth-Filter und entferne dann den Einschwingvorgang (entfernen von 1000 Messpunkten).

Jedoch habe ich das Problem, dass ich nicht genau auf die eingestellten Sekunden komme, gibt es eine Möglichkeit in ms genau auf den eingestellten Sekundenwert zu kommen?

Nebenbei ist es eigentlich ungünstig, dass ich mit so einer hohen Abtastrate von 100kS messe , der Drucksensor hat eine Maximale Frequenz von 400 Hz, und abgetastet wird ja üblicherweise mit Faktor 10/20 multipliziert. Leider schwingt dann mein Tiefpass nicht richtig ein. Wie kann ich das optimieren?

Zitat:- Was erhoffst du dir von der andauernden "Offsetkorrektur" deiner Messdaten vor dem Filter? Wie soll der Filter reagieren, wenn ihm jedesmal ein Signal mit einem anderen Offset angeboten wird? Merke: du ziehst immer den Wert des ersten Messwerts des aktuellen Datenblocks von den anderen ab - und damit einen zufälligen Rauschwert…
Diese Methode habe ich von diesem Eintrag (http://www.labviewforum.de/Thread-Tiefpassfilter-laesst-Signal-bei-Null-beginnen ) abgeschaut, damit wollte ich das Einschwingen verhindern. Dies habe ich nun entfernt.

Zitat:- Was erhoffst du dir vom Zusammenbauen des Clusters für den Graphen? Warum nimmst du keine "echten" Waveforms? Warum lässt du dir deine Messwerte nicht gleich als Waveform liefern?
Mit dem Zusammenbau des Clusters wollte ich nur das Filtersignal anzeigen.

Zitat:- Wenn die Schleife nur eine endliche (und vorher bekannte) Anzahl durchläufe vollführen soll, nimmt man üblicherweise eine FOR- statt einer WHILE-Loop…

Stimmt, die while Schleife ist nun entfernt.

Gruss cobain


RE: Druckmessung Verlauf in Sekunden - GerdW - 09.07.2014 19:56

Hallo cobain,

Zitat:Nebenbei ist es eigentlich ungünstig, dass ich mit so einer hohen Abtastrate von 100kS messe , der Drucksensor hat eine Maximale Frequenz von 400 Hz, und abgetastet wird ja üblicherweise mit Faktor 10/20 multipliziert.
Warum misst du dann nicht einfach mit 1kHz? Damit hast du Nyquist für deinen Drucksensor erfüllt…

Zum Filter: Du gibst als fs (Samplerate) komischerweise die Sampleanzahl (statt der DAQ-Samplerate) vor. Ist das für dich sinnvoll?

Zitat:Ich lass die gelesenen Messpunkte (10000) durch ein Butherworth-Filter und entferne dann den Einschwingvorgang (entfernen von 1000 Messpunkten).
Jedoch habe ich das Problem, dass ich nicht genau auf die eingestellten Sekunden komme, gibt es eine Möglichkeit in ms genau auf den eingestellten Sekundenwert zu kommen?
Du entfernst also Datenpunkte und wunderst dich, warum im Graph die Zeitachse verrutscht?
Entweder lässt du die Anzahl der Datenpunkte unangetastet - oder du korrigierst den t0-Wert deines "Waveforms" entsprechend…
Außerdem: die Filterfunktion hat noch einen weiteren Input, der u.a. auch auf das Einschwingverhalten einwirkt. Hast du mit dem mal experimentiert?

Zitat:Mit dem Zusammenbau des Clusters wollte ich nur das Filtersignal anzeigen.
Das ginge auch ohne diesen Cluster. Und wenn schon Cluster, dann bitte eine echte Waveform daraus machen!


RE: Druckmessung Verlauf in Sekunden - cobain2004 - 10.07.2014 08:52

Zitat:Warum misst du dann nicht einfach mit 1kHz? Damit hast du Nyquist für deinen Drucksensor erfüllt…

Wollte ich zuerst auch, jedoch hat mir jemand aus unserer Entwicklung gesagt, dass normalerweise in der Praxis Faktor 10-20 genommen wird. Ansonsten würde eigentlich der
Aliasing Effekt bei der doppelten Frequenz nicht mehr auftreten. Mein anderes Problem ist, dass wie auf dem Bildern aufgenommen das Signal bei tieferer Samplerate nicht mehr so genau ist im Eingeschwungenen Bereich des Filters (siehe dazu Signal mit Rate 10'000, Bild unten links im Vergleich zum Bild oben links).

Zitat:Zum Filter: Du gibst als fs (Samplerate) komischerweise die Sampleanzahl (statt der DAQ-Samplerate) vor. Ist das für dich sinnvoll?
Ehrlich gesagt keine Ahnung, leider habe ich bis heute noch keine Erfahrungen mit mathematischen Filter gehabt. Ich habe es aber mal ausprobiert, jedoch schwingt das Signal nicht
so schön ein (siehe Bild Signal mit "Filter 100'000 Samples")

Zitat:Du entfernst also Datenpunkte und wunderst dich, warum im Graph die Zeitachse verrutscht?
Entweder lässt du die Anzahl der Datenpunkte unangetastet - oder du korrigierst den t0-Wert deines "Waveforms" entsprechend…

Im Graph habe ich natürlich einen Faktor von 1.1 drin Wink also zeigt es mir die Zeit in der X-Achse wieder korrekt an. Also eventuell könnte ich das noch verbessern, indem ich vom Array eine Länge entziehe die durch 1000 teilbar ist und somit keine periodische Zahl wie 1000/900 = 1.1111 bekomme.
Aber wenn ich nach der For-Schleife die ms Zeit der ms Zeit vor der Schleife abziehe bekomme ich nicht genau bei eingestellten 10 Sekunden 10000 ms. sondern 10xxx ms. Oder ist dieser Zeitunterschied die mehr benötigte Durchführungszeit, jedoch die Messung stimmt auf die ms genau?

Zitat:Außerdem: die Filterfunktion hat noch einen weiteren Input, der u.a. auch auf das Einschwingverhalten einwirkt. Hast du mit dem mal experimentiert?

Welchen Input? Die obere Grenzfrequenz benötige ich bei meinem Tiefpass nicht.


Zitat:Das ginge auch ohne diesen Cluster. Und wenn schon Cluster, dann bitte eine echte Waveform daraus machen!

Momentan entspricht 0.1 im Graph 10 ms, meinst du das ich delta t gleich auf 100ms setzen soll damit die Skalierung stimmt? oder was meinst du mit einer "echten Waveform"?


Im Bild mit "Rate 100000, Anzahl Samples 10000 und der Filter mit 10000 Samples" habe ich bisher das beste Resultat mit dem ich leben kann. Es entsteht dabei eine Ungenauigkeit von etwa 0.5 bar. Der Drucksensor hat 0.01 % Toleranz was bei 750 bar 0.75 bar entspricht, also wäre ich mit meiner Messung darunter.


RE: Druckmessung Verlauf in Sekunden - GerdW - 10.07.2014 10:45

Hallo cobain,

Zitat:Im Graph habe ich natürlich einen Faktor von 1.1 drin
Was natürlich falsch ist! Beispiel:
Du hast einen Zeitbereich von 0-1000ms.
Du entfernst die ersten 100ms, übrig bleiben 100-1000ms.
Jetzt skalierst du die restlichen 900ms mit Faktor 1.111: Heraus kommt an der X-Achse 0-1000ms, in Wahrheit müsste aber 111-1111ms dran stehen…

Zitat:was meinst du mit einer "echten Waveform"?
Es gibt eine eigene Funktionspalette nur für Waveforms. Die meine ich!

Zitat:Welchen Input?
Einfach mal die Hilfe zur Funktion lesen und auf den boolschen Eingang achten…


RE: Druckmessung Verlauf in Sekunden - cobain2004 - 10.07.2014 13:26

Hallo GerdW,

Zitat:Im Graph habe ich natürlich einen Faktor von 1.1 drin
Was natürlich falsch ist! Beispiel:
Du hast einen Zeitbereich von 0-1000ms.
Du entfernst die ersten 100ms, übrig bleiben 100-1000ms.
Jetzt skalierst du die restlichen 900ms mit Faktor 1.111: Heraus kommt an der X-Achse 0-1000ms, in Wahrheit müsste aber 111-1111ms dran stehen…

Wäre es korrekt, wenn ich zuerst die ersten Werte (zBsp. 1000 Samples) des gelesenen Arrays vom DAQ am Anfang des gelesenen Arrays einfüge und nach dem Filter entferne ich wieder die 1000 Werte?
Somit hätte ich den Einschwingvorgang mit den Eingefügten 1000 Samples erledigt und am Schluss die 10000 Messpunkte, welche 100 ms entsprechen.