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 

Reduzierung des Zeitbedarfs zur Datenerfassung



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!

09.05.2018, 18:07 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2018 18:08 von Philipp841.)
Beitrag #1

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
Reduzierung des Zeitbedarfs zur Datenerfassung
Hello @all,

das beigefügte VI, Aquire Data.vi benötigt auf einem Enwicklungsrechner für einen Durchlauf ca. 1-2ms (Schnittstellkarte NI-USB-6216 nicht angeschlossen). Auf dem Zielrechner benötigt das VI ca. 85 ms (mit angeschlossener NI-USB-6216). Nun habe ich zwei Fragen:

1) Macht es in Bezug auf die benötigte Laufzeit einen Unterschied, ob entsprechende Hardware angeschlossen ist, oder nicht?

2) Könnten schlicht die PC-Performance Unterschiede zwischen Ziel- und Entwicklungsrechner für die Laufzeitdifferenz verantwortlich sein?

3) Falls es "ganz normal" ist, dass dieses VI in Verbindung mit der angeschlossenen Hardware "so lange" braucht um sämtliche Werte zu erfassen, welche Möglichkeiten habe ich um die Laufzeit zu verringern? (und somit dann die Taktzeit der gesamten Whileschleife zu verkürzen)

Für sämtliches Gedankengut jetzt schon mal vielen Dank!! (Ich bin ab Montag wieder am Rechner)

Gruß,
Philipp lv15_img


Angehängte Datei(en)
15.0 .vi  Aquire Data.vi (Größe: 47,66 KB / Downloads: 197)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2018, 20:16 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2018 20:17 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Hallo Philipp,

Zitat:1) Macht es in Bezug auf die benötigte Laufzeit einen Unterschied, ob entsprechende Hardware angeschlossen ist, oder nicht?
Wenn du ohne Hardware das Signal simulierst, ist die Schleife natürlich schneller, weil du das SimulateSignal auf "so schnell wie möglich" eingestellt hast…

Zitat:2) Könnten schlicht die PC-Performance Unterschiede zwischen Ziel- und Entwicklungsrechner für die Laufzeitdifferenz verantwortlich sein?
Nein.
Es sei denn, die Rechner unterscheiden sich um den Faktor 50 bei der Rechenleistung…

Zitat:3) Falls es "ganz normal" ist, dass dieses VI in Verbindung mit der angeschlossenen Hardware "so lange" braucht um sämtliche Werte zu erfassen, welche Möglichkeiten habe ich um die Laufzeit zu verringern? (und somit dann die Taktzeit der gesamten Whileschleife zu verkürzen)
Mit den von dir voreigestellten Werten (Samplerate=1000, Anzahl Werte=1000) würde ich eine Iterationszeit von sogar 1s erwarten…
Anscheinend benutzt du selbst andere Werte, wenn du nur 85ms pro Iteration bekommst, verschweigst uns diese aber. Außerdem hast du uns das subVI vorenthalten, welches den eigentlichen DAQ-Code enthält!

Die Schleife iteriert schneller, wenn du entweder die Samplerate erhöhst oder die Anzahl der zu lesenden Werte verringerst: t ~ Anzahl / Samplerate.
(Mit der Einschränkung, dass der Overhead bei sehr kleinen Werten für Anzahl natürlich überproportional ansteigt.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2018, 13:57 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2018 14:07 von Philipp841.)
Beitrag #3

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Hallo Gerd,
Danke für deine Erklärungen!


GerdW schrieb:Mit den von dir voreigestellten Werten (Samplerate=1000, Anzahl Werte=1000) würde ich eine Iterationszeit von sogar 1s erwarten…
Anscheinend benutzt du selbst andere Werte, wenn du nur 85ms pro Iteration bekommst, verschweigst uns diese aber.

Dem ist tatsächlich so. Im Frontpanel des Main-VI können diese Werte angepasst werden. Habe ich soweit verstanden.

GerdW schrieb:Außerdem hast du uns das subVI vorenthalten, welches den eigentlichen DAQ-Code enthält!

Dies war natürlich keine Absicht. Mir ist ehrlich gesagt auch gar nicht klar, welches Sub-VI, bzw. welche Stelle du meinst. Zur Sicherheit lade ich nochmal "Die Tapete" hoch, in der das VI enthalten ist.

GerdW schrieb:Die Schleife iteriert schneller, wenn du entweder die Samplerate erhöhst oder die Anzahl der zu lesenden Werte verringerst: t ~ Anzahl / Samplerate.

Auch dies erscheint mir zunächst logisch. Jedoch scheinen sich an irgendeiner Stelle ca. 60ms dazu zu mogeln. Vielleicht hast du eine Ahnung wie dies zu Stande kommt? Ich habe mit der rate & Anz. der Samples mal etwas rumgespielt und folgende Zeitbedarfe festgehalten:

rate: 1000 (konstant belassen)
number of samples: / benötigte Zeit in ms:
1 - - - - - 40
2 - - - - - 63
5 - - - - - 68
10 - - - - 73
100 - - - 164
500 - - - 564
1000 - - 1064

Demnach addiert sich zu der Zeit die für die Samples benötigt wird, an irgendeiner Stelle ca. 60ms und mir ist nicht klar warum bzw. wodurch.

Besten Gruß & vielen Dank,
Philipp

lv15_img

** Die zusätzlichen 60ms fallen übrigens nur an, wenn ich das VI am Zielrechner (mit der angeschlossenen Hardware laufen lasse). Wenn ich das Signal simuliere (z.B. mit 1000Hz & 100 Samples komme ich erwartungsgemäß auf 10,xx ms.**




0.0 .zip  Cyclic Direct Shear (Giesa) Minimum.zip (Größe: 6,6 MB / Downloads: 234)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2018, 14:16 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2018 14:17 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Hallo Philipp,

Zitat:Mir ist ehrlich gesagt auch gar nicht klar, welches Sub-VI, bzw. welche Stelle du meinst.
Ich meine den ehemaligen DAQAssistent2, jetzt "DAQ AI mit Devices"…

Zitat:Jedoch scheinen sich an irgendeiner Stelle ca. 60ms dazu zu mogeln.
Da wird nirgends gemogelt! Es ist alles so, wie du es programmiert hast!

Im ehemaligen DAQAssi wird der DAQmxTask als "Finite Samples" angelegt, du willst aber kontinuierlich messen. Dann wäre es doch sinnvoll, den Task als "Continuous Samples" anzulegen, oder?

Anmerkung: Ich finde es wesentlich übersichtlicher, wenn man im Projekt im "Hauptast" nur das MainVI sieht und die ganzen subVIs in (auch virtuellen) Verzeichnissen "verschwinden"…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2018, 15:22
Beitrag #5

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
OK...

Kannst du mir denn sagen, warum ich bei bspw. 1000 Hz und 1000 Samples nicht 1000ms benötige sondern 1063, bzw. wie ich die zusätzlichen 63 ms eliminieren kann?

Ich dachte bislang, da mit einer Queue gearbeitet wurde, kommt eine kontinuierliche Messung nicht in Frage!? Huh

Danke.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2018, 16:09
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Aktuell legst du dauernd einen AI-Task an, startest diesen, liest die Daten zurück, und stoppst den Task. Das Anlegen, Starten und Stoppen sowie die Übertragung der Daten per Bus kosten bei realer Hardware natürlich Zeit.

Deshalb wie von Gerd vorgeschlagen: Wenn man kontinuierlich messen will, dann den Task auch so anlegen, und nach Start der Datenerfassung schön brav kontinuierlich die Daten abholen. Dann hast du den Overhead für Konfiguration, Start und Stopp des Tasks nur 1x und nicht jede Sekunde, so wie jetzt.

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
Anzeige
15.05.2018, 15:26
Beitrag #7

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Danke für eure Beiträge. Zwei Fragen dazu:

Kann es wirklich sein, dass LV für die Konfiguration, Start und Stopp des Tasks tatsächlich über 60ms benötigt??

Und nochmal:

Momentan werden die Werte als dynamische Daten, getaktet in Form eines Arrays, in einer Queue geparkt. Funktioniert dies genau so, wenn ich die Erfassung kontinuierlich gestalte? Was gilt es zu beachten?

Über ausführliche, beginnertaugliche Antworten bin ich sehr dankbar!

Phil
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.05.2018, 15:32
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Hallo Phil,

Zitat:Kann es wirklich sein, dass LV für die Konfiguration, Start und Stopp des Tasks tatsächlich über 60ms benötigt??
Ja.
Da muss der Treiber die Hardware einrichten und scharf schalten. Es muss Speicher angefordert und eingerichtet werden, etc.…

Zitat:Momentan werden die Werte als dynamische Daten, getaktet in Form eines Arrays, in einer Queue geparkt. Funktioniert dies genau so, wenn ich die Erfassung kontinuierlich gestalte? Was gilt es zu beachten?
Beginnerfreundlich: schau dir doch einfach mal die BeispielVIs im Beispielfinder an! Da wird sowas alles gezeigt…
Beginnerfreundlich (auch wenn es hier nicht sofort den Anschein hat): verabschiede dich von DDT-Drähten und ExpressVIs. Du wirst mir nochmal dankbar sein… Big Grin

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2018, 15:02
Beitrag #9

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Hallo zusamm,

leider bin ich bei dem Versuch Gerds Ratschläge umzusetzen bisher kläglich gescheitert. Ich habe das Beispiel "Spannung - Kontinuierliche Erfassung" genauer unter die Lupe genommen und den Versuch gestartet, das SubVI AquireData.vi mit den Bausteinen aus dem Beispiel VI zu ersetzen. Wie gesagt, leider ohne Erfolg. Folgendes Problem ist aufgekommen:

Das DAQ-Express VI wird in meiner Anwendung bislang über Arrays (unterschiedlicher Datentypen) konfiguriert. z.B. "sage" ich dem Express VI über das Array "AI Channels" welche physikalischen Kanäle von der Karte genutzt werden sollen. Genau so verhält es sich mit der Schaltungsart oder auch den min. & max. Spannungen. All diese Daten werden in Form verschiedener Arrays an das Express VI übergeben und somit mehrere Kanäle gleichzeitig konfiguriert.
In dem Beispiel VI wird für die Definition des physikalischen Kanals der Datentyp "Physikalischer Kanal" verwendet und somit immer lediglich nur ein Kanal konfiguriert. Nun zu meiner Frage: Ist es möglich, die manuelle Datenerfassung (ohne Express VI) mit den selben Datentypen (Arrays) zu konfigurieren, wie ich sie für das DAQ-Express Vi genutzt habe?
Wenn ja, wäre ich für eine leicht verständliche Erklärung bzgl. der Umsetzung sehr dankbar.
Falls nicht, müsste ich von der Umgestaltung der Datenerfassung vermutlich absehen, da die Konfig-Daten über lokale Variablen noch an einigen weiteren Stellen genutzt werden, die alle streiken, wenn ich den Datentyp ändere.
Oder wäre es auch auch mit dem bestehendem Express VI möglich die Datenerfassung auf kontinuierlich umzustellen und somit die 60ms zum Starten, Öffnen, Lesen und Stoppen des Tasks zu sparen? (siehe oben)
Auch hier wären Tipps seitens der Umsetzung hilfreich.

P.S: Da ich mich seit ca. einer Woche mit nichts Anderem beschäftige und dennoch gefühlt kaum Fortschritte mache, bin ich über hilfreiche Tipps echt dankbar!

Gruß,
Philipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2018, 15:34 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2018 15:38 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Reduzierung des Zeitbedarfs zur Datenerfassung
Hallo Philipp,

Zitat:All diese Daten werden in Form verschiedener Arrays an das Express VI übergeben und somit mehrere Kanäle gleichzeitig konfiguriert.
Nein, da wird nichts "gleichzeitig" gemacht!
Diese Arrays werden in einer autoindizierenden Schleife ein Element nach dem anderen abgearbeitet…

Also das, was eben ein Tipp aus den LabVIEW-Grundlagen ist: wenn man eine Funktion mehrfach ausführen will (z.B. für alle Elemente eines Arrays), dann sollte man mit einer Schleife arbeiten!

Wenn du einfach mal in diesen "DAQ AI mit Devices" hineingeguckt hättest, dann hättest du das auch sehen müssen!

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung dieseldunst 5 6.563 24.06.2016 14:49
Letzter Beitrag: jg

Gehe zu: