Hallo Leute,
ich baue gerade mit Labview 2009 einen Sinusgenerator. Jetzt stehe ich vor dem Problem, dass das Programm nach einiger Zeit den Ausgang abbricht und nur noch DC offset Signale ausgibt (Fehlermodus). Ich muss mein Signal im Betrieb verändern können, was nicht in Echtzeit geschehen muss, jedoch sollte diese Latenz unter einer Sekunde liegen. Setze ich den Ausgangsbuffer auf 20000 Samples, läuft es zwar stabil aber die Verzögerung beträgt einige Sekunden. Setze ich den Buffer auf 4000 Samples wird die Reaktionszeit geringer aber das Programm stürzt irgendwann ab.
Im Highlightmodus erhalte ich bereits beim zweiten Schleifendurchgang des Eingangs immer den Fehler 1020 "data queue overflow".
Wo liegt mein Fehler?
Danke für eure Hilfe!
Max
p.s. Es wird DT Hardware benutzt, also nicht wundern wenn es bei euch nicht funktioniert.
Sinusgenerator --- data queue overflow
Правила форума
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:
hide XXX forums
Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:
hide XXX forums
Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Sinusgenerator --- data queue overflow
Im Generator-Modus einmal ist genug, um ein Signal zu bilden. In der Zukunft wird es wiederholt werden aus dem Puffer gespielt. Dass es keine Sprünge an der Verbindungsstelle des Puffers zu dem Puffer ist eine ganze Zahl von Perioden.
Re: Sinusgenerator --- data queue overflow
Ich verstehe nicht genau was du sagen willst und vermute du bist Franzose und hast es Google übersetzen lassen, oder?
Ich muss das Signal verändern können, also reicht es nicht aus das Signal einmal zu bilden. Oder verstehe ich dich falsch?
Kannst du mir sagen was ich tun kann? Denn ich verstehe nicht was du mir sagen willst.
Aber ich danke dir trotzdem!
Max
Ich muss das Signal verändern können, also reicht es nicht aus das Signal einmal zu bilden. Oder verstehe ich dich falsch?
Kannst du mir sagen was ich tun kann? Denn ich verstehe nicht was du mir sagen willst.
Aber ich danke dir trotzdem!
Max
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Sinusgenerator --- data queue overflow
Hi Max!
Ich verstehe auch nicht was er damit sagen will
Wahrscheinlich, dass du dein Sinus nur ein Mal generieren solltest (vor der Schleife) und nicht jedes Mal bei jedem Schleifendurchlauf. Und auch um die Sprünge zu vermeiden, solltest du dem Puffer ein Vielfaches von Perioden anschliessen.
Leider kann ich dir selber bei diesem Thema nicht helfen, da ich mich mit dieser HW nicht auskenne.
Gruß, Eugen
Ich verstehe auch nicht was er damit sagen will
Wahrscheinlich, dass du dein Sinus nur ein Mal generieren solltest (vor der Schleife) und nicht jedes Mal bei jedem Schleifendurchlauf. Und auch um die Sprünge zu vermeiden, solltest du dem Puffer ein Vielfaches von Perioden anschliessen.
Leider kann ich dir selber bei diesem Thema nicht helfen, da ich mich mit dieser HW nicht auskenne.
Gruß, Eugen
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Sinusgenerator --- data queue overflow
Я хочу сказать, что нет необходимости запихивать каждые 200мс полный буфер. Достаточно делать это только по изменению параметров, имеет смысл это попробовать (обычно там есть двойная буферизация). В параметрах вызова функций нет явных указаний, что данные выводятся один раз и по опустошению буфера вывод данных останавливается, поэтому один раз запихнув в буфер, должна быть постоянная генерация.
Сейчас 200мс цикла не равны 200миллисекундам Цапа (тактируется разными генераторами). В результате очень быстро набегает расхождение.
Ich meine, es gibt keine Notwendigkeit, alle 200ms vollen Puffer zu schieben. Genug, um es einfach zu tun, um die Einstellungen zu ändern, ist es sinnvoll, es zu versuchen (in der Regel gibt es einen Double-Buffering). In den Parametern des Funktionsaufrufs keine ausdrücklichen Hinweis, daß die Datenausgabe einmal und Buffer-Underrun-Ausgang Haltestellen, so einmal zapihnuv der Puffer muss konstant Generation.
Jetzt 200ms Zyklus sind nicht gleich 200ms DAC (getaktet durch unterschiedliche Generatoren.) Als ein Ergebnis läuft sehr schnell in die Diskrepanz.
übersetzt von Google
Сейчас 200мс цикла не равны 200миллисекундам Цапа (тактируется разными генераторами). В результате очень быстро набегает расхождение.
Ich meine, es gibt keine Notwendigkeit, alle 200ms vollen Puffer zu schieben. Genug, um es einfach zu tun, um die Einstellungen zu ändern, ist es sinnvoll, es zu versuchen (in der Regel gibt es einen Double-Buffering). In den Parametern des Funktionsaufrufs keine ausdrücklichen Hinweis, daß die Datenausgabe einmal und Buffer-Underrun-Ausgang Haltestellen, so einmal zapihnuv der Puffer muss konstant Generation.
Jetzt 200ms Zyklus sind nicht gleich 200ms DAC (getaktet durch unterschiedliche Generatoren.) Als ein Ergebnis läuft sehr schnell in die Diskrepanz.
übersetzt von Google
Re: Sinusgenerator --- data queue overflow
@Eugen
Du hast wohl verstanden was borjomi gemeint hat. Ich leider immer noch nicht.
Könntest du mir erklären was das mit den Perioden bedeuten soll?
Ich denke ich kann den Sinus nicht vor der Schleife generieren, denn ich muss ihn im Betrieb verändern. Oder hast du eine Idee wie ich das lösen könnte? Parallele Schleife? Schleife neustarten?
@borjomi
Vielen Dank für deine Bemühungen, leider verstehe ich nicht was du mir sagen willst! Kannst du es vielleicht mal in English versuchen? Denn ich denke, dass du weißt von was du sprichst.
Du hast wohl verstanden was borjomi gemeint hat. Ich leider immer noch nicht.
Könntest du mir erklären was das mit den Perioden bedeuten soll?
Ich denke ich kann den Sinus nicht vor der Schleife generieren, denn ich muss ihn im Betrieb verändern. Oder hast du eine Idee wie ich das lösen könnte? Parallele Schleife? Schleife neustarten?
@borjomi
Vielen Dank für deine Bemühungen, leider verstehe ich nicht was du mir sagen willst! Kannst du es vielleicht mal in English versuchen? Denn ich denke, dass du weißt von was du sprichst.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Sinusgenerator --- data queue overflow
Нет необходимости записывать полный буфер каждые 200мс. Достаточно делать это только при изменении параметров, имеет смысл это попробовать (обычно там есть двойная буферизация). В параметрах вызова функций нет явных указаний, что данные выводятся один раз и по опустошению буфера вывод данных останавливается, поэтому один раз записав синус в буфер, должна быть постоянная генерация.
Сейчас 200мс цикла не равны 200мс DAC (тактируется разными генераторами). В результате очень быстро набегает расхождение между количеством переданных отсчетов и количеством выданных DAC.
No need to write a full buffer every 200ms. Enough to do this only when the parameters change, it makes sense to try it (usually there is a double-buffering). In the parameters of the function call is no explicit indication that the data is output once and buffer underrun output stops, so once sine writing to the buffer should be a continuous generation.
Now the 200ms cycle is not equal to 200ms DAC (clocked by different generators.) As a result very quickly accumulates discrepancy between the number of counts and the number of transfers issued DAC.
Сейчас 200мс цикла не равны 200мс DAC (тактируется разными генераторами). В результате очень быстро набегает расхождение между количеством переданных отсчетов и количеством выданных DAC.
No need to write a full buffer every 200ms. Enough to do this only when the parameters change, it makes sense to try it (usually there is a double-buffering). In the parameters of the function call is no explicit indication that the data is output once and buffer underrun output stops, so once sine writing to the buffer should be a continuous generation.
Now the 200ms cycle is not equal to 200ms DAC (clocked by different generators.) As a result very quickly accumulates discrepancy between the number of counts and the number of transfers issued DAC.