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 

Dieses Thema hat akzeptierte Lösungen:

Timeout bei FIFO Speicher



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!

13.09.2016, 09:00
Beitrag #1

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



Question Timeout bei FIFO Speicher
Hallo Leute,
ich schreibe gerade meine Masterarbeit und muss dafür eine Hochgeschwindigkeits Messung in Labview programmieren. Das Ziel ist 7 Signale mit jeweils 100kHz abzutasten. Dafür habe ich ein cRIO 9082 und 2 Module mit jeweils 4 analogen Eingängen. Nun habe ich schon herausgefunden, dass ich dafür wohl sowohl FPGA als auch den cRIO programmieren muss und habe mir mit Hilfe dieses Tutorials eine Anwendung gebastelt. Solange ich mir die Messdaten nur anzeigen lasse, erreiche ich auch die 10usec (100kHz) Abtastzeit. Sobald ich allerdings beginne die Daten in eine TDMS Datei zu schreiben dauert es vielleicht eine halbe Sekunde und ich bekomme einen Timeout. Ich vermute es liegt daran, dass die TDMS Datei nicht schnell genug geschrieben und damit der FIFO nicht schnell genug geleert wird.
Hat jemand eine Idee wie ich das Problem lösen kann?


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.09.2016, 09:05 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2016 09:07 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 16.250
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Timeout bei FIFO Speicher
Hallo otto,

Zitat:Sobald ich allerdings beginne die Daten in eine TDMS Datei zu schreiben dauert es vielleicht eine halbe Sekunde und ich bekomme einen Timeout. Ich vermute es liegt daran, dass die TDMS Datei nicht schnell genug geschrieben und damit der FIFO nicht schnell genug geleert wird. Hat jemand eine Idee wie ich das Problem lösen kann?
1. Producer-Consumer-Schema verwenden: Schleifen entkoppeln…
2. Willst du auf dem cRIO wirklich auf den Pfad "C:\Temp\" schreiben? Du weißt schon, dass das cRIO keinen Zugriff auf die Festplatte in deinem PC hat? Hmm
3. Du willst 7*100kS/s*8 Bytes = 5.35MiB/s wegschreiben? Auf dem cRIO? Wieviel Speicherplatz steht dir (dort) zur Verfügung? Wie schnell ist dieser Speicher?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2016, 09:21
Beitrag #3

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



RE: Timeout bei FIFO Speicher
Hall GerdW,
danke für die schnelle Antwort. Ich werde mal versuchen das ganze zu entkoppeln. Bei dem Pfad hast du recht, das hab ich auch schon festgestellt und habe den Pfad geändert. Das Bild ist davor entstanden.
Ja mir ist bewusst, dass das verdammt viele Daten sind. Laut Datenblatt hat das cRIO einen Speicher mit 32 GB, ich weiß allerdings nicht wie schnell der ist. Ich habe auch schon überlegt die Daten direkt übers Netzwerk wegzuschieben, aber dadurch wird es ja vermutlich noch langsamer oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2016, 09:34 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2016 09:39 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 16.250
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Timeout bei FIFO Speicher
Hallo otto,

- als erste Maßnahme könntest du die Datenrate halbieren, wenn du statt DBL einfach die original FXP-Daten speicherst
- beim Verzicht auf TDMS ersparest du dir weiteres (internes) Dateihandling: TDMS muss nebenbei auch noch Verwaltungsstrukturen befüllen/verwalten. Einfach eine simple Binärdatei speichern: du weißt doch, welche Daten wie darin landen!

Die FXP-Daten auf dem FXP sind wahrscheinlich <32 Bit breit (ein 9205-Modul liefert z.B. 26 Bit breite FXP-Werte). Die kannst du doch bequem als U32 verpacken und auf dem cRIO in eine Binärdatei speichern. Schon bist du auf 7*100k*4=2.7MiB/s runter. (Mit geringfügig mehr Aufwand kann man 7 FXP-Werte zu je 26 Bit (=182 Bit) auch in 6 U32-Werte (=192 Bit) reinpressen, damit würde sich die Datenrate auf 6*4*100k=2.3MiB/s senken.) Da man das dann schon auf dem FPGA macht, benötigt man dafür überhaupt keine Rechenzeit im RT-Host!
Für die Auswertung auf einem PC ist es irrelevant, wenn man einen zusätzlichen Schritt zum Auspacken der Daten einplanen muss: du verringerst auf dem cRIO die Datenrate immerhin um >=50%…

Zitat:Ich habe auch schon überlegt die Daten direkt übers Netzwerk wegzuschieben, aber dadurch wird es ja vermutlich noch langsamer oder?
Das cRIO9082 verfügt über Gigabit-LAN-Schnittstellen: hier bekommst du im Idealfall bis ~100MB/s übertragen!
Und LabVIEW bietet Network-Streams, die für solche Übertragungen gemacht sind: da musst du dich nicht mal selbst um TCP/IP-Handling kümmern!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2016, 12:04
Beitrag #5

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



RE: Timeout bei FIFO Speicher
Ich drehe hier langsam durch Blink Ich bekomms einfach nicht ans laufen. Ich bin jetzt bei der Datenumwandlung schon mal von double auf Single umgestiegen um die Größe zu reduzieren. Das allein reicht allerdings noch nicht.
Wenn ich die Daten als binary anstatt TDMS abspeicher, läuft es genauso in den Timeout.
Ich habe probiert die Daten übers Netzwerk zu streamen. Das hat leider auch nicht so wirklich funktioniert.
Nun habe ich versucht das Schreiben der TDMS Datei in eine eigene Schleife auszulagern, allerdings klappt das auch noch nicht so richtig. Es werden zwar Daten geschrieben, allerdings, irgendwie nicht die richtigen. Vermutlich ist das mit der for Schleife so auch nicht richtig, aber ich weiß leider nicht wie ich es machen soll. Kann mir da bitte jemand helfen?
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2016, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2016 12:19 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 16.250
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Timeout bei FIFO Speicher
Hallo Otto,

dein letztes Bild ist ein krasses Beispiel für fehlendes THINK DATAFLOW!

Zitat:Ich habe probiert die Daten übers Netzwerk zu streamen. Das hat leider auch nicht so wirklich funktioniert.
Mangels VI kann man das nicht beurteilen…

Zitat:Nun habe ich versucht das Schreiben der TDMS Datei in eine eigene Schleife auszulagern, allerdings klappt das auch noch nicht so richtig.
Weil du es nicht richtig "versucht" hast…
Hast du dir mal die Beispiel-Projekte zur Producer-Consumer-Struktur angeschaut?

Zitat:Es werden zwar Daten geschrieben, allerdings, irgendwie nicht die richtigen.
Wenn du THINK DATAFLOW anwendest, weißt du auch, welche Daten geschrieben werden!

Zitat:Vermutlich ist das mit der for Schleife so auch nicht richtig
Nein, so natürlich nicht.
Was soll es bringen, eine FOR-Loop so oft ausführen zu lassen, wie die While-Loop zuvor iteriert hat?
Was soll es bringen, wenn man einen (einzelnen) Datensatz mehrfach in eine Datei speichert?

Zitat:Kann mir da bitte jemand helfen?
Und wie? Sollen wir mit Photoshop in einem Bild rummalen?

LabVIEW bringt jede Menge Beispiel-VIs mit - im ExampleFinder. Und es hat auch eine ganze Menge an Beispiel-Projekten, einfach mal in den "Neu…"-Dialog gehen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.09.2016, 12:50
Beitrag #7

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



RE: Timeout bei FIFO Speicher
Was bedeutet denn Think Dataflow?

Ich habe einen Netzwerkstream (RT-network.vi) erzeugt und in einem VI auf meinem PC (Networktarget.vi) die Daten wieder ausgelesen. Allerdings schreibt er mir dann nur Nullen. Irgendwie scheinen da keine Daten anzukommen.

Natülich habe ich auch nach Producer-Consumer-Schema gegoogelt, allerdings habe ich es nicht geschafft ein array mit hilfe dieser queue zu übertragen.

Das mit der FOR Schleife ist mir dann auch klar geworden. Es war halt ein verzweifelter Versuch. Ich weiß nun mal leider nicht wie es geht. Wäre super wenn du mir da einen Tip geben könntest.

Ich habe die VIs jetzt mal angehängt. Vielleicht hilft das ja weiter.


Angehängte Datei(en)
13.0 .vi  Networktarget.vi (Größe: 19,92 KB / Downloads: 112)

13.0 .vi  RT_network.vi (Größe: 165,85 KB / Downloads: 111)

13.0 .vi  RT.vi (Größe: 174,71 KB / Downloads: 84)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2016, 13:14 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2016 13:16 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 16.250
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Timeout bei FIFO Speicher
Hallo Otto,

Zitat:Was bedeutet denn Think Dataflow?
Ich habe da etliche Links in meiner Signatur, die solltest du mittlerweile sowohl bemerkt als auch gelesen haben…

Zum Network-Stream gibt es ein ganzes Beispiel-Projekt im LabVIEW-Beispielfinder. Hast du das studiert und ausprobiert?

Zitat:Natülich habe ich auch nach Producer-Consumer-Schema gegoogelt
Wieso googlest du, wenn dir LabVIEW ein komplett vorbereitetes Projekt anbietet?

Zitat:allerdings habe ich es nicht geschafft ein array mit hilfe dieser queue zu übertragen.
Im Beispielfinder gibt es das Beispiel "Einfache Queue"…

Zitat:Ich weiß nun mal leider nicht wie es geht. Wäre super wenn du mir da einen Tip geben könntest.
Wenn Dinge parallel arbeiten sollen, darf man sie nicht sequentiell programmieren - THINK DATAFLOW!
Tipp: mit LabVIEW mitgelieferte Beispiele studieren…

P.S.: Es ist auch nicht hilfreich, beim Namensarray für das TDMS-Schreiben hinter deinen 4 Kanalnamen noch 3 leere Stringelemente zu verstecken!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2016, 13:45
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.467
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Timeout bei FIFO Speicher
Offtopic2
(16.09.2016 12:16 )GerdW schrieb:  Hallo Otto,

dein letztes Bild ist ein krasses Beispiel für fehlendes THINK DATAFLOW!
In LabVIEW 2016 würde das mit dem richtigen Draht schon gehen. Smile
   
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
16.09.2016, 13:47
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 16.250
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Timeout bei FIFO Speicher
Hallo Jens,

das haben aber weder Otto noch ich bisher im Einsatz.
Und ich glaube auch, dass das Otto noch mehr verwirren würde…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  RT FIFO Frage gfzk 1 8.668 02.07.2015 15:56
Letzter Beitrag: GerdW
  RT FIFO Verständnis Michiel 3 6.755 13.06.2014 14:02
Letzter Beitrag: jg
  Fragen zu DMA FIFO gfzk 5 7.723 24.10.2011 17:23
Letzter Beitrag: gfzk
  DMA FIFO + TDMS File IO NoD 1 5.629 30.10.2009 15:21
Letzter Beitrag: dlambert
  Problem mit RT-FIFO Benjamin84 4 6.434 01.07.2008 10:11
Letzter Beitrag: cb
  2-d-dblArray in RT-FIFO 23uwe 0 4.211 04.01.2008 20:10
Letzter Beitrag: 23uwe

Gehe zu: