IPB

Welcome Guest ( Log In | Register )

> Azhl. Schwingungen von kontinuierlichen Signal...
Gunni1979
post 22. Feb 2007, 12:40
Post #1


Member
**

Group: Members
Posts: 68
Joined: 14.02.2007
From: Erfurt
Member No.: 19
LV Version: 8.00 / 8.2
Zertifizierung: keine
LV User seit: 2006



Mahlzeit.

Ich habe im Rahmen meiner Diplomarbeit eine LabVIEW-Anwendung zu erstellen. Nach langem Informationen sammeln/kopieren und Basteln bin ich soweit das ich vom FPGA zum PC HOST meine Signaldaten übertrage. Da handelt es sich zum einen um die Daten des Originalsignals und zum anderen des gemessenen Signals. ich habe vor diese in einen Vergleich zu stellen.

Die Messung kann oder soll über einen längeren Zeitraum laufen. da ich die Vergleichswerte in einer Tabelle darstellen soll, macht es keinen Sinn alle Werte dafür zu benutzen. Es reicht also immer einen gewissen Abschnitt zu behandeln. Ich dachte da so an 5 Schwingungen.

Jetzt habe ich dafür eine kleine Vergleichsrechnung aufgestellt. Die einzeln empfangenen Datenpaktet sollen solange zu einem Gesamt-Array gepackt werden, solange die Anzahl der darin befindlichen Elemente kleiner ist als die 5-fache Periodenzeit. das habe ich versucht damit zu verwirklichen indem folgende Rechnung aufstellte:
5 mal "eingestellte Looprate" / "aktuelle Frequenz". Wenn dann die Anzahl der schon mitgeschnittenen Elemente kleiner ist als dieser Wert, soll weiter in das Array reingepackt werden. Nach beenden der Hauptschleife lasse ich mir das ergebnis im 2. Signalverlaufsgraph anzeigen.
[attachment=67:Datenauf...PC_Host_.vi]
Leider läuft es nicht immer so wie es soll. es werden bei unterschiedlich eingestellten Frequenzen oft weit mehr Schwingungen protokolliert. dann scheint Es beim erneuten Start von Anfang an werte ins "Sammel-Array" zu packen obwohl noch keine Taste betätigt wurde.
Hier liegt entweder ein denkfehler meinerseits vor oder ich weiß auch nicht.


Gunni

Go to the top of the page
 
+Quote Post
 
Start new topic
Replies
CB
post 26. Feb 2007, 10:38
Post #2


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



Ok, einen Teil des Rätsels hast du gelöst smile.gif

Die kontinuierlich aufsteigenden Werte sind die Demo-Daten, die "normalerweise" von deiner Messkarte, etc. kommen und zwischengespeichert werden sollen. Das obere Array ist das Ringspeicher Array, in dem die Messdaten zwischengespeichert werden. Ich produziere die Demo-Daten extra streng monton steigend, damit man sieht, was bei dem "Zerlegen und umgekehrt zusammensetzen" passiert. Probiers einfach mal aus smile.gif

Wenn du ein 2D-Array brauchst, was spricht dagegen diese "Vorrichtung" zu duplizieren? wink.gif



--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
Gunni1979
post 26. Feb 2007, 11:02
Post #3


Member
**

Group: Members
Posts: 68
Joined: 14.02.2007
From: Erfurt
Member No.: 19
LV Version: 8.00 / 8.2
Zertifizierung: keine
LV User seit: 2006



QUOTE(CB @ 26. Feb 2007, 10:38) [snapback]114[/snapback]
Ok, einen Teil des Rätsels hast du gelöst smile.gif

Die kontinuierlich aufsteigenden Werte sind die Demo-Daten, die "normalerweise" von deiner Messkarte, etc. kommen und zwischengespeichert werden sollen. Das obere Array ist das Ringspeicher Array, in dem die Messdaten zwischengespeichert werden. Ich produziere die Demo-Daten extra streng monton steigend, damit man sieht, was bei dem "Zerlegen und umgekehrt zusammensetzen" passiert. Probiers einfach mal aus smile.gif

Wenn du ein 2D-Array brauchst, was spricht dagegen diese "Vorrichtung" zu duplizieren? wink.gif


Du meinst mit duplizieren bestimmt das ich nicht beide Datenpakte sofort in ein "2D Array packen soll, sondern beide in ein "Teilarray erzeugen" schieben könne. Diese am Ende mit einem "Built Array" ja zu einem 2D Array zusammenfügen kann.

Ich galube du splittest es um im nächsten Graph-Bild einen Teil des vorigen Bildes mit anzuzeigen. Dadurch glaubt man nicht neue Messungen vorliegen zu haben sondern, das diese zusammen gehören.

Gunni
Go to the top of the page
 
+Quote Post
CB
post 26. Feb 2007, 16:26
Post #4


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



QUOTE(Gunni1979 @ 26. Feb 2007, 11:02) [snapback]115[/snapback]
Du meinst mit duplizieren bestimmt das ich nicht beide Datenpakte sofort in ein "2D Array packen soll, sondern beide in ein "Teilarray erzeugen" schieben könne. Diese am Ende mit einem "Built Array" ja zu einem 2D Array zusammenfügen kann.


jau, mach 2 Schieberegister um deine Daten zwischenzuspeichern und füge die beiden 1D Arrays erst zusammen, wenn du sie anzeigen möchtest. Man kann zwar so ein Schieberegister auch in 2D aufbauen, das wird aber unter Umständen deutlich komplizierter.

QUOTE(Gunni1979 @ 26. Feb 2007, 11:02) [snapback]115[/snapback]
Ich galube du splittest es um im nächsten Graph-Bild einen Teil des vorigen Bildes mit anzuzeigen. Dadurch glaubt man nicht neue Messungen vorliegen zu haben sondern, das diese zusammen gehören.


jau, genau dieses. Der Sinn der Sache ist, dass man in der While-Schleife, die die Daten abholt nicht nur das gerade abgeholte Paket visualisieren kann, sondern eine größere Portion (eben den Gesamten Ringspeicher)

Beispiel: du holst mit deiner While-Schleife alle 100 Millisekunden 200 Werte von deinem Messgerät ab (wie du nun im Detail geschickt werden ist erstmal egal). Wenn du nun insgesamt einen zeitlichen Verlauf von - sagen wir mal 2 Sekunden - in deinem Graphen darstellen willst, dann musst du die letzten 19 Pakete irgendwo "puffern". Da du ingesamt 20 Häppchen á 200 Messwerten zwischenspeichern willst, brauchst du einen Ringspeicher, der 4000 Samples speichern kann.

Genau dies geschieht in dem Ringspeicher, in dem immer wieder die ältesten Werte überschrieben werden. Am Ende wird das Ringspeicher-Array an der "Einfügemarke" aufgeteilt und die älterenn Werte werden für die Anzeige vor die neueren gesetzt

Was heist das nun für deine D-Arbeit: du hast eine Sample-Rate von 100 kHz und möchtest ein Sin-Signal von z.B. 5 kHz verarbeiten, dabei sollen immer z.B. 10 volle Sinus-Wellen in deinem Graphen dargestellt werden:
100 kHz / 5 kHz = 20 -> eine Sinus Welle wird mit 20 Samples abgetastet
10 Sinus-Signale möchtest du darstellen => 20 * 10 = 200 => dein Ringspeicher muss 200 Werte puffern um 10 "Sinus-Wellen" darzustellen ...



--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post

Posts in this topic


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 20.05.2024 - 00:58