LabVIEWForum.de - Zeit von Kanälen aufnehmen

LabVIEWForum.de

Normale Version: Zeit von Kanälen aufnehmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
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.
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
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.
Dein ReshapeArray ist "verkehrt", wie folgendes kleines Bsp zeigt:
[attachment=45625]
Gruß, Jens
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?
Du jagst die Zeit durch die Temperatur-Kalibrierung. Hmm Ob das Sinn macht?

Gruß, Jens
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?
Komplementär zu BuildArray ist IndexArray (oder auch ArraySubset)...
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
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
Seiten: 1 2 3
Referenz-URLs