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 

verzögerte Signalausgabe



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!

28.01.2015, 15:27
Beitrag #1

Heribert Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2015

2013
-
DE



verzögerte Signalausgabe
Hallo zusammen,

ich versuche die gemessenen Werte eines DMS in einem Signalverlaufsdiagramm anzuzeigen. Da das Modul von NI nicht Leistungsfähig genug war (NI cDAQ.-9172) um die dynamischen Messwerte zu verarbeiten, musste ich auf ein anderes Gerät wechseln. Das andere Gerät ist von der Firma Peekel. Damit ist es mir möglich auch die dynamischen Messwerte des DMS darzustellen. Als Hilfe für die Programmierung in Labview stellt die Firma Beispiel-VI´s zum download bereit. Aus diesen Beispiel-VI´s habe ich mir meine VI mit den gewünschten Funktionen (Signaldarstellung) zusammengebastelt.

Nun habe ich aber das Problem, dass die Messwerte erst Zeitverzögert angezeigt werden. Auch beim "Start Datalog" bzw. "Stop Datalog" dauert es immer eine gewisse Zeit bevor etwas passiert. Je höher die Frequenz eingestellt ist, umso größer ist die Verzögerung.
Nun wollte ich Fragen ob man etwas tun kann, dass die Signale vom Dehnmessstreifen ohne Verzögerung im Signalverlaufsdiagramm angezeigt werden.
Im Anhang habe ich meine "Test-VI" sowie die "Sub-VI" hinzugefügt.

Vielen Dank für eure Hilfe

MfG Heribert


Angehängte Datei(en)
13.0 .vi  Test-VI.vi (Größe: 18,07 KB / Downloads: 134)

13.0 .vi  Sub-VI.vi (Größe: 20,42 KB / Downloads: 131)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.01.2015, 15:40 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2015 15:43 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: verzögerte Signalausgabe
Hallo Heribert,

Zitat:Nun habe ich aber das Problem, dass die Messwerte erst Zeitverzögert angezeigt werden. Auch beim "Start Datalog" bzw. "Stop Datalog" dauert es immer eine gewisse Zeit bevor etwas passiert.
Hilfreich ist es immer, wenn man angibt, mit welchen Parametern gearbeitet wird.
Welche Frequenz stellst du ein? Welche Blockgröße stellst du ein?

Zitat:Je höher die Frequenz eingestellt ist, umso größer ist die Verzögerung.
Kann es sein, dass du die Blockgröße nicht an die geänderte Samplerate angepasst hast?

Zitat:Signale vom Dehnmessstreifen ohne Verzögerung im Signalverlaufsdiagramm angezeigt werden.
Ganz allgemeine Daumenregel: man liest Daten in 0.1s-Blöcken ein. Bei einer Samplerate von 20kHz bedeutet das eine Blockgröße von 2000 Samples…

Hinweise:
- Deine beiden Comboboxen "Datalog speed" und "Output block size" sollten eigentlich Ringe sein, die gleich den korrekten Wert für jeden Stringeintrag ausgeben…
- Die Wartezeit in der Schleife ist wahrscheinlich auch hinderlich. Wozu willst du zusätzlich 20ms warten?

Fragen:
- Warum hast du das subVI vor dem Upload umbenannt? So sucht sich das HauptVi einen Wolf…
- Werden die Start/StopDatalog-Buttons korrekt gesetzt?
- Warum wird die Funktionalität der Start/Stop-Buttons nicht in eigene subVIs ausgelagert?

Zitat:Da das Modul von NI nicht Leistungsfähig genug war (NI cDAQ.-9172) um die dynamischen Messwerte zu verarbeiten
Nochmal: über welche Sampleraten reden wir hier überhaupt?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.01.2015, 11:28
Beitrag #3

Heribert Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2015

2013
-
DE



RE: verzögerte Signalausgabe
Hallo GerdW,

die Parameter habe ich wie folgt eingestellt:
Frequenz = 500Hz; Blockgröße = 10 Werte

Bei geringerer Frequenz ist die Signaldarstellung nicht flüssig und bei einer größeren Frequenz ist die Verzögerung zu groß.
Bei der Blockgröße ist es umgekehrt. Bei einer größeren Anzahl von Werten stockt die Ausgabe. Bei einer geringeren Blockgröße ist die Ausgabe stark Zeitverzögert.

Als Beispiel: Wenn ich 1000Hz und 2 Werte als Blockgröße einstelle, dann ist die Reaktionszeit des "Stop Datalog" Buttons etwa 40 Sekunden.

Ich werde nachher mal 1000Hz und 100 Samples einstellen, wie du es beschrieben hast. Mal schauen ob es dann flüssiger und ohne Verzögerung
läuft.

Ist es Sinnvoll eine bestimmte Anzahl von Werten in einem Array zu speichern und diesen Datenblock dann an das Diagramm zu übergeben?
Könnte dadurch die Verzögerung verhindert werden?

Erstmal vielen Dank für deine Hilfe.

Mfg Heribert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.01.2015, 11:35 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2015 11:38 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: verzögerte Signalausgabe
Hallo Heribert,

erst einmal etwas simple Mathematik: Zeit zum Lesen eines Datenblocks = Blockgröße/Frequenz

Deine Beispiele:
10 Werte/ 500Hz = 20ms
2 Werte/1000Hz = 2ms
100 Werte/1000Hz = 100ms

ABER: Zu diesen Zeiten zum Messen der Samples addiert (oder besser: überlagert) sich der Aufwand zum Kopieren der Werte in dein Programm (Hardware-Treiber+Software-Layer…). Dieser Aufwand ist relativ konstant und unabhängig von der Blockgröße. Ich würde ihn mal auf ca. 5ms schätzen.
UND: Du hattest noch eine zusätzliche Wartezeit in deinem VI von 20ms. Auch diese stört dich hier.

Was passiert nun?
Du versuchst z.B. jeweils 2 Werte bei einer Samplerate von 1kHz zu lesen. Damit ist der Aufwand zum Abholen der Messwerte größer als der für die eigentliche Messung: es staut sich ein Buffer mit Messwerten auf, die du immer stärker zeitverzögert abholst. Wenn du lang genug wartest, wird es auch noch einen Buffer-Overflow-Fehler geben. Um im Beispiel zu bleiben: die reine Messzeit dauert 2ms, deine Schleife braucht aber 20ms (wg. der Wartezeit) zum Lesen der Daten: Faktor 10 zu langsam!

Noch einmal:
Zitat:Ganz allgemeine Daumenregel: man liest Daten in 0.1s-Blöcken ein. Bei einer Samplerate von 20kHz bedeutet das eine Blockgröße von 2000 Samples…

Noch ein Tipp:
Wenn es auf möglichst gute Ausnutzung der Rechenkapazität deines PCs ankommt (z.B. wg. größerer Datenmengen und aufwendiger Signalaufbereitung), dann bietet sich immer eine Entkopplung von DAQ-Schleife und Datenverarbeitung durch Queues an!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2015, 09:00
Beitrag #5

Heribert Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2015

2013
-
DE



RE: verzögerte Signalausgabe
Morgen zusammen,

also die Wartezeit ist jetzt gelöscht. Als Werte habe ich ein Frequenz von 1000Hz und eine Blockgröße von 100.
Mit Queues habe ich noch nicht gearbeitet und auch noch keine wirkliche Ahnung davon, deswegen habe ich das erstmal außen vor gelassen.

Was mir jetzt noch aufgefallen ist, wenn ich das Signalverlaufsdiagramm starte verlaufen die Sekunden auf der X-Achse viel zu schnell. Ich habe auf der Zeitachse die absolute Zeit eingestellt. Das Diagramm zeigt dort einen 15 Minütigen Verlauf an (15 Sekunden sind für mich ausreichend). Jedoch laufen die 15 Minuten innerhalb von einer Sekunde durch. Danach wartet es etwa eine Sekunde und dann laufen die nächsten 15 Minuten mit einem mal durch. Vielleicht hilft das ja bei der Lösungsfindung.
Vielleicht besteht ja die Möglichkeit das Diagramm langsamer ausgeben zulassen. So das es im Sekundentakt flüssig durchläuft.
Ich hoffe ich konnte das Problem halbwegs Verständlich erklären.

Vielen Dank für eure Hilfe

MfG Heribert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2015, 09:27
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: verzögerte Signalausgabe
Hallo Heribert,

Zitat:wenn ich das Signalverlaufsdiagramm starte verlaufen die Sekunden auf der X-Achse viel zu schnell.
Welche "Sekunden"?

Grundlagenwissen:
- Ein Chart zeigt einen Y-Verlauf an. Die X-Achse ergibt sich aus der aufaddierten Anzahl der dargestellten Punkte. Wenn du also 10 Messwerte in einem Plot darstellst, dann zeigt die X-Achse die Werte 0 bis 9 an…
- Ein Chart zeigt keine Zeit auf der X-Achse an, auch wenn der Name (bzw. die Bezeichnung) der Achse standardmäßig "Time" lautet.
- Ein Chart hat eine begrenzte Historiengröße…

Zitat:ein Frequenz von 1000Hz und eine Blockgröße von 100.
Zitat:Jedoch laufen die 15 Minuten innerhalb von einer Sekunde durch.
Es läuft keine Zeit durch, du stellst einfach so viele Messwerte dar. Wie groß ist deine Blockgröße?
Dein Chart ist auf 1023 Werte in der Historie eingestellt. Wenn du also einen Block mit 100 Werte darstellst, sollte der Chart um genau 100 weiterlaufen…

Zitat:Danach wartet es etwa eine Sekunde und dann laufen die nächsten 15 Minuten mit einem mal durch.
Das passt jetzt aber nicht mit der Angabe f=1kHz und Block=100 zusammen. Da würde ich 0.1s Zeit zwischen den dargestellten Blöcken erwarten…

Wenn du wirklich eine Zeitachse haben willst, solltest du dich mit Waveforms beschäftigen und dir auch mal Graphen (statt Charts) anschauen!

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


Gehe zu: