LabVIEWForum.de
Zeit von Kanälen aufnehmen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: Zeit von Kanälen aufnehmen (/Thread-Zeit-von-Kanaelen-aufnehmen)

Seiten: 1 2 3


Zeit von Kanälen aufnehmen - Mietzekatze - 25.07.2013 16:04

Hallöchen,

ich möchte über ein FPGA im cRIO Temperatur- und Spannungsverlauf mit unterschiedlicher Abtastgeschwindigkeit aufzeichnen und in eine TDMS-Datei schreiben. Dazu habe ich zwei VIs (im Anhang zu sehen). Zusätzlich zu Temperatur und Spannung möchte ich für jeden Kanal die vergangene Zeit zwischen den Messungen als zusätzlichen Kanal speichern. (auch im Anhang zu sehen) Der Verlauf der in der TDMS Datei gespeichert ist, ist aber nicht monoton steigend, wie er sein sollte.
Kann mir jemand erklären wie dieser Verlauf( im Anhang) zustande kommt.

Vielen Dank.


RE: Zeit von Kanälen aufnehmen - jg - 25.07.2013 16:09

Auslesen im Host hast du auf 2 Schleifen verteilt, Erfassen im FPGA aber nicht. Da sind zwar 2 Sequenzen, aber in 1 Loop.

Gruß, Jens


RE: Zeit von Kanälen aufnehmen - Mietzekatze - 26.07.2013 13:33

Okay. Um das Problem zunächst zu vereinfachen betrachte ich zunächst nur den Temperaturkanal.
Habe die Zeit noch einmal weggelassen. Da ist mir aufgefallen, das das Problem des Wechsels der Werte immernoch für die Kanäle vorkommt.
Im Anhang sind Programm und Wertetabelle zu finden.
Daraus ergeben sich für mich zwei Fragen.
1. Warum werden für die Sensoren unrealistische Werte angezeigt ( Sensoren befinden sich in Umgebung von cRIO)?
2. Warum wechseln die Sensoren aller zwei Messwerte ihren Wert, obwohl diese sich an einer konstanten Stelle befinden?

Smile
Wenn ich den Wert "Auszulesende Daten pro Kanal für einen Schleifendurchlauf" auf 1 setzte und die Warte Zeit der Schleife auch auf 1000, dann entfallen die Zickzackwerte. Allerdings sollte die Auslesegeschwindigkeit im Host doch keine Einfluss auf die Daten im FIFO ( die auf dem FPGA in das FIFO geschrieben werden) haben.
Das verwirrt mich.


RE: Zeit von Kanälen aufnehmen - jg - 26.07.2013 13:47

Dein ReshapeArray ist "verkehrt", wie folgendes kleines Bsp zeigt:
[attachment=45625]
Gruß, Jens


RE: Zeit von Kanälen aufnehmen - Mietzekatze - 26.07.2013 16:40

Wenn man die Eingänge am Reshape Array vertauscht und zusätzlich noch die Einstellung data layout des TMDS Write Feldes auf interleaved stellt fallen die ständigen "gezackten " Werte weg.
Merkwürdig nur warum es hier http://www.ni.com/white-paper/11198/de/#toc5 anders funktionieren sollte.
Füge ich nun wieder eine Uhr ein zum zählen der Zeit im FPGA.vi und erweitere um einen Kanal im Host.vi , kommt ein sehr steig nach unten Fallender Graph für die Zeit heraus? (siehe Anhang)
Warum sinkt hier die Zeit?


RE: Zeit von Kanälen aufnehmen - jg - 26.07.2013 17:32

Du jagst die Zeit durch die Temperatur-Kalibrierung. Hmm Ob das Sinn macht?

Gruß, Jens


RE: Zeit von Kanälen aufnehmen - Mietzekatze - 26.07.2013 18:41

Oh stimmt. Habe ich übersehen. Danke.
Also jetzt das Array auftrennen und den ersten und 6. Kanal nicht durch die Kalibrierung schicken. Gibt es dazu eine Funktion die komplementär zu Build Array ist? Oder eine elegantere Lösung um die Zeit einzufügen?


RE: Zeit von Kanälen aufnehmen - GerdW - 26.07.2013 20:45

Komplementär zu BuildArray ist IndexArray (oder auch ArraySubset)...


RE: Zeit von Kanälen aufnehmen - Mietzekatze - 30.07.2013 09:42

So die Zeitseparierung habe ich über Split1DArray und IndexArray gemacht. Nun habe ich die Spannung wieder hinzu gefügt. Und habe dazu noch ein paar Fragen. Mein Code für FPGA und Host sind im Anhang zu finden.

1. Zur Kontrolle der Daten habe ich im Temperatur(T)-Teil hostseitig einmal "FIFO Output" und "Time SGL". Zusätzlich lasse ich mir die Zeit im FPGA.Vi in "time in s" anzeigen. Dabei erkenne ich Unterschiede zwischen diesen Variabeln.
Das merkwürdige ist, dass die erste Stelle von FIFO Output nur bis 16 zählt und dann auf diesem Wert bleibt, aber der in eine SGL konvertierte Wert "Time SGL" weiterhin hochzählt.

2. Nach Beenden des Programms und Auslesen der TDMS Datei der Temperatur,fällt auf, dass in dem Zeitvektor die ersten beiden Werte Null sind. Leider weis ich nicht warum.

3. Auch die Anzahl verbleibender Elemente in beiden FIFO ist für mich unerklärlich. Diese steigt bei beiden FIFOs an, obwohl bei T und Spannung(S) alle Elemente entnommen werden(S: 17 speichern in 1 s und 17 Elemente nach 1 s entfernen, T: 5 Elemente aller eine ms speichern und 25 Elemente entfernen aller 5 ms).

4. Die Anzeige der Spannungen und der Temperatur hat merkwürdige Werte. Die ersten beiden Spannungskanäle sind mit einem analogen Ausgang verbunden, welcher aber nicht angesteuert wird und die ersten drei Temperaturkanäle an Sensoren in cRIO-Nähe. Die restlichen Eingänge sind unverbunden.

5. Nach jedem schließen des Projektes und erneuten öffnen, soll ich das FPGA.Vi neu kompilieren ( Error -61017). Warum ist das so? Wie kann man das vermeiden Sad

Danke für Eure Hilfe Smile


RE: Zeit von Kanälen aufnehmen - Mietzekatze - 30.07.2013 10:03

Des Weiteren taucht bei mir im Host bei T die Warnung 61003 auf:

"Warning 61003 occurred at niLvFpga_Run_cRIO-9112.vi
Possible reason(s):
LabVIEW FPGA: The FPGA VI specified by the Invoke Method function with the Run method is already running."

Sad