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 

Empfangene Daten aus VISA filtern (Tiefpass)



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.2017, 10:58
Beitrag #1

bboygro Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2017

16.0
2016
DE


Deutschland
Empfangene Daten aus VISA filtern (Tiefpass)
Hallo zusammen!

Im Rahmen meiner Bachelorarbeit bin ich aktuell dran einen Prüfstand zur Untersuchung des Wirkungsgrades von Winkelgetrieben zu optimieren.

Dazu lese ich die Daten des An- und Abtriebs des Getriebes (Drehzahl und Drehmoment) per VISA aus. Den Tiefpass-Filter der Drehmomentmessung, welcher über Parameter der Sensoren intern realisiert werden kann, möchte ich auslagern (Software -> LV), da ich auch die Rohdaten der Sensoren benötige. Dieser sollte als Bessel-Tiefpass-Filter (6. Ordnung) realisiert werden.

Die rohen Daten werden einwandfrei ausgelesen und können auch weiter verwertet werden. Lediglich die gefilterten Daten wollen nicht so recht. Dabei gibt es enorme Probleme mit den verschiedenen Datentypen. Scheinbar müsse ein Zeitstempel auf die Werte aufgetragen werden, damit der Filter was damit anfangen kann. Nur leider komme ich seit über einer Woche einfach nicht auf die Lösung.

Bisher habe ich verschiedene Filter verwendet, unter anderem auch die Express-VI Filter. Leider erfolglos. Mit einem Filter (Ich weiß aktuell nicht mehr welcher es war) habe ich lediglich Werte raus bekommen, die um einen sehr großen Faktor kleiner waren als die Rohdaten und trotz Filter NICHT gefiltert wurden.

Auch mit "Signalverlauf erstellen" habe ich versucht die Zeit auf das Signal aufzutragen, doch das hat auch nicht funktioniert. Fragezeichen

Über eure Hilfe würde ich mich sehr freuen.

Liebe Grüße
Fabi


Angehängte Datei(en)
16.0 .vi  Motorregelung_Test.vi (Größe: 249,44 KB / Downloads: 42)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2017, 11:16 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2017 11:21 von GerdW.)
Beitrag #2

GerdW Online
______________
LVF-Team

Beiträge: 15.442
Registriert seit: May 2009

09SP1, 11SP1, 17
1995
DE_EN

10×××
Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Hallo Fabi,

herzlich willkommen im Forum!

Bevor wir zu deiner eigentlichen Frage kommen:
Bitte überarbeite erst einmal dein VI!
- Entferne soviele lokale Variablen wie nur möglich und ersetze sie durch Drähte! (Stichwort "Race conditions"!)
- Warum muss man eine serielle Schnittstelle in JEDER Iteration erneut öffnen, initialisieren und hinterher wieder schließen?
- Wozu leere Sequenzrahmen?
- Versuche ExpressVIs wie JoinSignal zu vermeiden! Die Kontexthilfe deiner Charts zeigt dir, welche Datentypen erwartet werden - und für Arrays gibt es jede Menge Arrayfunktionen!
- Bitte NIE das Label von Controls/Indicators im Blockdiagramm unsichtbar machen!

Was willst du hier erreichen:
   
Du baust ein Array, welches genau ein Sample enthält - und wunderst dich über "fragwürdige" Filterergebnisse?
Wenn du einen Signalverlauf filtern willst, dann musst du auch einen Verlauf erstellen und dazu Samples ansammeln!
Dieser Filter erwartet ein Array mit deinen Samples - so wie es in der Hilfe zur Funktion auch gezeigt wird!
Woher weißt du die Samplefrequenz von 2000Hz? Ich bezweifle, dass du die Daten derart schnell (und taktgenau) einliest…

Zitat:Scheinbar müsse ein Zeitstempel auf die Werte aufgetragen werden, damit der Filter was damit anfangen kann. Nur leider komme ich seit über einer Woche einfach nicht auf die Lösung.
LabVIEW kommt mit sehr vielen BeispielVIs. Du hast es innerhalb einer Woche nicht geschafft, mal ein Beispiel zu den Filterfunktionen anzuschauen?
Und was willst du damit erreichen, wenn du einen Cluster aus Timestamp und Sample erstellst und diesen Cluster dann in eine Array mit zwei Werten umwandelst? Warum nicht gleich BuildArray? (Nicht, dass das richtiger wäre…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2017, 14:17 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2017 14:18 von bboygro.)
Beitrag #3

bboygro Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2017

16.0
2016
DE


Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Hallo Gerd,

danke für die schnelle Antwort!

-> Die lokalen Variablen und die leeren Sequenzrahmen (wurden ursprünglich von einem anderen Programm übernommen) wurden entfernt.

-> Du meinst ich soll die serielle Schnittstelle als SubVI erstellen und die Daten quasi dauerhaft an mein HauptVI senden bzw. die Daten dort auslesen?

-> Was meinst du mit "JoinSignal"? Die Funktion "Signale zusammenfassen"? Ich dachte immer, dass dies nur eine normale Funktion sei und kein ExpressVI. Ist es besser die Signale mit "Array erstellen" zusammenzufassen?

Das mit den Samples ist mir schon klar (zumindest meine ich das Big Grin), aber wie "sammle" ich die Samples denn an? Mit der Funktion "Signalverlauf erstellen" komme ich auch nicht zum Ergebnis...
Die Samplefrequenz habe ich mittels der Parameter im Sensor deklariert. Dieser sendet nun 2kS/s. Oder ist mit der "Samplefrequenz" am Filter die Abtastrate gemeint, welche größer der Samplefrequenz meines Sensors sein sollte?

Die Beispiele habe ich mir angeschaut, nur schlau geworden bin ich auch daraus nicht. Mein Hauptproblem liegt meiner Meinung nach darin die einzelnen Samples in einen Signalverlauf umzuwandeln.

Was ich nicht ganz verstehe, wieso kann ich die einzelnen Samples die von der seriellen Schnittstelle ausgegeben werden so einfach in einem Graph über die Zeit darstellen aber diese nicht Filtern? Im Graph verbindet Labview die einzelnen Werte doch auch automatisch mit der zeitlichen Komponente. Wieso nicht auch im Filter? (Hört sich jetzt ein bisschen nach dem "faulen Studenten" an Big Grin)

Danke für deine Mühe!
LG Fabi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2017, 18:55
Beitrag #4

GerdW Online
______________
LVF-Team

Beiträge: 15.442
Registriert seit: May 2009

09SP1, 11SP1, 17
1995
DE_EN

10×××
Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Hallo Fabi,

Zitat:Du meinst ich soll die serielle Schnittstelle als SubVI erstellen und die Daten quasi dauerhaft an mein HauptVI senden bzw. die Daten dort auslesen?
Nein.
Du sollst die Schnittstelle(n) einmal vor der Schleife initialisieren und einmal nach der Schleife - wie man das üblicherweise macht…

Zitat:Was meinst du mit "JoinSignal"? Die Funktion "Signale zusammenfassen"? Ich dachte immer, dass dies nur eine normale Funktion sei und kein ExpressVI.
Da kommt ein DDT-Draht raus. Typisch ExpressVI…

Zitat:Ist es besser die Signale mit "Array erstellen" zusammenzufassen?
Vor allem viel übersichtlicher.
Bei einem DDT-Draht sieht man auch nicht, welche Daten da überhaupt drin sind…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2017, 10:40
Beitrag #5

bboygro Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2017

16.0
2016
DE


Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Hallo Gerd,

Die Schnittstelle initialisiere ich nun vor der Schleife.

Die Signale fasse ich jetzt auch mit "Array erstellen" zusammen. Doch leider fasst er diese wortwörtlich zusammen und gibt zwei Signale als eines aus. Wie kann ich das wieder umgehen, dass ich wieder zwei oder drei Signale in einem Diagramm anzeigen lassen kann?

Mit dem Filter bin ich leider noch nicht zur Lösung gekommen. Ich habe mal verschiedene Ansätze probiert, das einzige was ich aus dem Filter raus bekomme, ist der selbe Wert den ich vorne rein gebe um einen Faktor X verkleinert. Nicht einmal gefiltert wurde dieser...

Vielleicht könntest du nochmal über mein VI drüber gehen und mir ein paar Tipps geben Angel_not

LG Fabi


Angehängte Datei(en)
16.0 .vi  Motorregelung_Test.vi (Größe: 253,15 KB / Downloads: 33)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2017, 11:14 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2017 11:18 von Freddy.)
Beitrag #6

Freddy Offline
LVF-Freak
****


Beiträge: 547
Registriert seit: Aug 2008

2017, NXG 2.0 BETA
1996
DE

76275
Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Hallo Fabi,
die Seriellen Schnittstellen sollten erst nach Beendigung der While Schleife geschlossen werden.
So wie Du es gemacht hast, wird genau einmal auf den Schnittstellen (COM7 und COM8) geschrieben und gelesen.

Gruß
Freddy
Warum werden Rechenoperationen Durchgeführt, die keine weitere Anwendungen haben.
Sie Pfeile auf dem Bild
Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.05.2017, 12:13
Beitrag #7

bboygro Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2017

16.0
2016
DE


Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Hallo Freddy,

die serielle Schnittstelle läuft soweit, ich erhalte kontinuierlich Werte. Deshalb habe ich daran auch nichts mehr geändert.
Das komplette System läuft eigentlich auch wie es soll, es hängt nur noch am Filter...

Die Rechenoperationen sind im VI drin, da ich diese eventuell später noch benötige. Über diese kann die Winkelposition und noch ein anderer Wert (weiß gerade nicht mehr was es noch war) ermittelt werden.

Im Allgemeinen läuft das Programm und tut - wie schon gesagt - auch was es soll. Lediglich die Rohdaten sollen noch gefiltert werden, was eben auch das Problem darstellt.

LG Fabi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2017, 14:37
Beitrag #8

Freddy Offline
LVF-Freak
****


Beiträge: 547
Registriert seit: Aug 2008

2017, NXG 2.0 BETA
1996
DE

76275
Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Zitat: Lediglich die Rohdaten sollen noch gefiltert werden, was eben auch das Problem darstellt.
Du hast auch keine Datenblöcke. In Deinem Programm sind es immer Arrays mit einem Wert.
Dieser Wert wird immer neu geschrieben aber nicht in ein gemeinsames Array.
Wenn Du die Daten sammeln willst, benötigst Du ein Schieberegister oder Rückkopplungsknoten.
Am besten Du gibst die Daten aus der While Schleife über einen Tunnel (Indizieren) als Array auf den Filter, der dann außerhalb der Schleife liegt.

Verfolge Dein Programm mal mit der Highlight-Funktion oder eine Sonde, dann siehst Du welche Daten in Dein Filter geschoben werden.

Schau mal in die Hilfe (rechte Maustaste auf dem VI und Hilfe auswählen) dort gibt es Beispiele die beschreiben die Funktion der Filter.

Gruß
Freddy

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2017, 16:07
Beitrag #9

jg Offline
CLD & CLED
LVF-Team

Beiträge: 15.181
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Empfangene Daten aus VISA filtern (Tiefpass)
Alternative: Pt-By-Pt Filter VIs:
   
Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Problem: Empfangene Byte Anzahl ändert sich MKVH28 7 1.915 26.03.2015 17:39
Letzter Beitrag: Lucki
  VISA: (Hex 0xBFFF0015) bei VISA read und im VISA Test Panel rick 3 8.286 10.11.2013 12:16
Letzter Beitrag: Y-P
  Keine Daten kommen an vom Hameg 8115 über VISA RS232 USB fsg4u 3 2.772 09.08.2012 14:33
Letzter Beitrag: fsg4u
  VISA Daten aus While-Schleife übergeben Profi Laie 4 3.475 16.12.2008 22:15
Letzter Beitrag: Profi Laie
  visa write; visa read zeitgesteuert ThomasDipl 8 6.021 20.11.2008 06:46
Letzter Beitrag: Achim
  empfangene Werte sperren und freischalten dannyboy 1 1.989 16.08.2008 23:27
Letzter Beitrag: eg

Gehe zu: