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!

17.09.2016, 17:04
Beitrag #11

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



RE: Timeout bei FIFO Speicher
Ich habe mich jetzt nochmal am Einsatz einer Queue versucht und habe die Prozesse Daten anzeigen und Daten abspeichern in eigene Schleifen ausgelagert. Ich kann es leider erst am Montag testen. Kann mir jemand sagen ob ich das so richtig angelegt habe?


Angehängte Datei(en)
15.0 .vi  RT_parallel.vi (Größe: 83,1 KB / Downloads: 97)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.09.2016, 16:55
Beitrag #12

GerdW Offline
______________
LVF-Team

Beiträge: 16.252
Registriert seit: May 2009

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

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

Zitat:Kann mir jemand sagen ob ich das so richtig angelegt habe?
Prinzipiell ja, aber in der speziellen Ausführung: Nein.

1. Queues funktionieren nach dem Prinzip: "viele Quellen, eine Senke". Dummerweise hast du aber eine Quelle und 2 Senken programmiert!
Lösung dafür: entweder nur eine Datensenke verwenden oder der erste Consumer leitet Daten weiter in eine zweite Queue für einen zweiten Consumer…

2. Das gleiche gilt für die Queue mit der Stopp-Bedingung. Hier ist die Lösung aber trivialer: verwende einen Notifier! Diese arbeiten nämlich nach dem Prinzip "eine Quelle, viele Senken"…

3. Du hast kein Timeout bei den QueueRead-Funktionen vergeben. Dies kann (muss aber nicht) hinderlich sein, wenn man ein Programm kontrolliert beenden will…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2016, 11:48 (Dieser Beitrag wurde zuletzt bearbeitet: 19.09.2016 12:00 von otto.kranz.)
Beitrag #13

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



RE: Timeout bei FIFO Speicher
Zitat:1. Queues funktionieren nach dem Prinzip: "viele Quellen, eine Senke". Dummerweise hast du aber eine Quelle und 2 Senken programmiert!
Lösung dafür: entweder nur eine Datensenke verwenden oder der erste Consumer leitet Daten weiter in eine zweite Queue für einen zweiten Consumer…
Danke für den Tip. Ich habe jetzt das Schreiben der TDMS Datei und das Diagramm in eine Schleife mit nur einer Senke gesetzt.

Zitat:3. Du hast kein Timeout bei den QueueRead-Funktionen vergeben. Dies kann (muss aber nicht) hinderlich sein, wenn man ein Programm kontrolliert beenden will…
Ich habe mal einen Timeout von 1000ms gesetzt. Was wäre hier denn ein sinnvoller Wert?

Das Programm läuft jetzt so und die Daten werden auch bei 10us Abtastrate aufgezeichnet. Allerdings sind es gefühlt zu wenig Daten. Bei 10us müssten ja 100k Werte pro Sekunde gespeichert werden. Nach 5 Sekunden habe ich aber erst etwas über 200k Werte. Es wird aber auch kein Fehler ausgegeben.
EDIT: Ich habe grade festgestellt, dass die Abtastrate wohl im laufenden VI nicht an das FPGA weitergegeben wird. Das heißt er nimmt nur den Wert, der am Anfang eingestellt ist. Und wenn ich da 10us am Anfang einstelle, bricht das Programm auch ab. Fehlermeldung:
Dequeue Element in RT_parallel.vi Error 1122
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2016, 12:04
Beitrag #14

GerdW Offline
______________
LVF-Team

Beiträge: 16.252
Registriert seit: May 2009

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

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

Zitat:Ich habe mal einen Timeout von 1000ms gesetzt. Was wäre hier denn ein sinnvoller Wert?
Du solltest einen Timeout setzen, der dich nicht stört, wenn du die Schleife beenden willst. Mancher User ist irritiert, wenn ein Programm ein paar Sekunden gefühlt "stehen bleibt", bevor es irgendwie reagiert: wenn du Daten alle 20ms erwartest, sollte ein Timeout von 100ms mehr als ausreichend sein…

Zitat:Allerdings sind es gefühlt zu wenig Daten. Bei 10us müssten ja 100k Werte pro Sekunde gespeichert werden. Nach 5 Sekunden habe ich aber erst etwas über 200k Werte. Es wird aber auch kein Fehler ausgegeben.
Da hilft nur debuggen:
- einfach mal die Samplerate im FPGA überprüfen (wirklich: ich hatte mal ein DIO-Modul mit max. 140kHz im FPGA programmiert und habe mich gewundert, dass augenscheinlich nur 60kHz Samplerate erreicht wurden…)
- die Anzahl der vom FPGA gelesenen Samples überprüfen und mit den Erwartungswerten vergleichen
- die Anzahl der per Queue übertragenen Datenpakete überprüfen und mit den Erwartungswerten vergleichen
- die Anzahl der geschriebenen Daten überprüfen und mit den Erwartungswerten vergleichen

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2016, 12:14
Beitrag #15

otto.kranz Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2016

2015
2016
DE



RE: Timeout bei FIFO Speicher

Akzeptierte Lösung

Ich habe die Wartezeit in der Schleife "Daten von FPGA holen" auf 1 ms runtergesetzt und jetzt läuft es und produziert Unmengen von Daten Cool

Vielen Dank für deine Hilfe


Angehängte Datei(en)
13.0 .vi  RT_parallel.vi (Größe: 220,91 KB / Downloads: 94)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2016, 12:20 (Dieser Beitrag wurde zuletzt bearbeitet: 19.09.2016 12:24 von GerdW.)
Beitrag #16

GerdW Offline
______________
LVF-Team

Beiträge: 16.252
Registriert seit: May 2009

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

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

genau dort solltest du gar keine zusätzliche Wartezeit programmieren!
In dieser Schleife ist das FIFO.Read der zeitlimitierende Faktor: hier gibst du vor, 2100 Samples zu lesen. Zusammen mit der Samplerate im FPGA ergibt das genau die Zeit, die in dieser Schleife gewartet werden muss (bis hin zum Timeout von 1s)…

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


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

Gehe zu: