Reduzierung des Zeitbedarfs zur Datenerfassung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Reduzierung des Zeitbedarfs zur Datenerfassung (/Thread-Reduzierung-des-Zeitbedarfs-zur-Datenerfassung) Seiten: 1 2 |
RE: Reduzierung des Zeitbedarfs zur Datenerfassung - Philipp841 - 16.05.2018 15:36 Wer hätte es gedacht... mit dem VI "DAQmx - Kanal-String serialisieren" ist es mir gelungen dem VI "DAQmx - Virtuellen Kanal erzeugen" mitzuteilen, dass mehrere Kanäle konfiguriert werden sollen. Nun stellt sich jedoch die Frage, wie ich die weiteren Anschlüsse des VI´s belege. Z.B. sollen von der Schaltungsart her, Kanal 1+2 Differentiell und Kanal 3+4 per RSE betrieben werden, sprich Kanalspezifisch. Genauso verhält es sich mit den Ober- und Untergrenzen für die Spannung etc. Jmd. eine Idee? RE: Reduzierung des Zeitbedarfs zur Datenerfassung - GerdW - 16.05.2018 15:43 Hallo Philipp, Zitat:mit dem VI "DAQmx - Kanal-String serialisieren" ist es mir gelungen dem VI "DAQmx - Virtuellen Kanal erzeugen" mitzuteilen, dass mehrere Kanäle konfiguriert werden sollen.Wow, Grundlagen DAQmx-Nutzung: wie gibt man an, dass mehrere Kanäle in den Task sollen! Zitat:Nun stellt sich jedoch die Frage, wie ich die weiteren Anschlüsse des VI´s belege. Z.B. sollen von der Schaltungsart her, Kanal 1+2 Differentiell und Kanal 3+4 per RSE betrieben werden, sprich Kanalspezifisch. Jmd. eine Idee?Arrbeite mit den bisherigen Arrays, siehe meinen vorigen Beitrag. Zitat:Genauso verhält es sich mit den Ober- und Untergrenzen für die Spannung etc.Die eigentlich kein Array sein müssten, da sie alle identische Werte enthalten - zumindest als Standardwert in deinem VI. RE: Reduzierung des Zeitbedarfs zur Datenerfassung - Philipp841 - 17.05.2018 16:52 Moin Gerd, ja, wenn man noch frisch dabei ist, ist auch für solch kleine Erfolge ein "WOW" völlig angebracht. Mit deinem letzten wertvollen Hinweis (autoindizierende Tunnel) habe ich nun ein Beispiel-VI so umgebaut, dass es "kontinuierlich" alle meine Kanäle erfasst (deren Einstellungen übrigens vom Standard abweichen; siehe VI DSDL4 wenn du magst). Das funktioniert nun prima, danke! Natürlich habe ich aber neue Fragen, und zwar: 1) Wie bekomme ich die "Daten für die Main" jetzt ins Aquire Data.VI? Dort werden ja mit dynamischen Daten gearbeitet. (Ich bin absolut gewillt, diesen Datentyp in weiteren Schritten zu eliminieren; für den Augenblick aber, möchte ich die mit dem angehängten VI kontinuierlich erfassten Daten zunächst einmal in der Main (DSDL4) verarbeiten, ohne an dieser großartig rumbasteln zu müssen. 2) Ich habe mit der Smple Rate und der Sampleanzahl rumgespielt- Zusätzlich habe ich einfach mal einen Warten-Block in die While-Schleife mit eingebaut. Nun meine Frage: Was genau passiert, wenn Sample Rate & Anzahl mehr Daten generieren als die gedrosselte Schleife los wird. (In dem beigefügten VI geschieht dies bei Werten für "Datenpunkte pro Sek) unter 20. Für weitere Dummie-Erklärungen jetzt schon mal vielen Dank! Phil RE: Reduzierung des Zeitbedarfs zur Datenerfassung - GerdW - 18.05.2018 08:03 Hallo Philipp, 1) Am besten/einfachsten per Queue: damit bewegst du dich in Richtung Producer-Consumer-Schema… Zitat:2) Was genau passiert, wenn Sample Rate & Anzahl mehr Daten generieren als die gedrosselte Schleife los wird.Du bekommst eine Fehlermeldung, dass der DAQmx-Samplebuffer vollgelaufen ist… Es ist eine ganz blöde Idee, in eine Schleife eine Wartezeit hineinzupacken, wenn man dort eigentlich kontinuierlich Daten von DAQmx lesen will! Das DAQmxRead sorgt doch schon selbst für die nötige Wartezeit in der Schleife! Es ist auch keine gute Idee, beim DAQmxTiming die "samples per channel" zu setzen - einfach mal die Hilfe zur Funktion lesen! RE: Reduzierung des Zeitbedarfs zur Datenerfassung - Philipp841 - 18.05.2018 09:37 Alles klar; das mit dem Buffer und der Anzahl der Samples hab ich gecheckt (und eliminiert). Folgende Fragen verbleiben heute: 1) Wie kann ich die erfassten Daten, die ich momentan auf dem Signalverlaufsdiagramm darstelle ohne globale/lokale Variable (denn die gilt es ja zu vermeiden) aus der While - Schleife hinaus bekommen, um sie dann in Dateien abzulegen bzw. als Eingangs-/Rückkopplungssignal für Regelungen nutzen zu können? 2) Bisher befand sich das Aquire Data - SubVI in der Main-While Schleife. Läuft diese einmal durch, wurden über die Einstellung "Begrenzte Anzahl" bei jedem Durchlauf eine gewisse Anzahl von Samples in der Queue abgelegt. Wie kann ich mir das Ganze nun mit dem kontinuierlichen Mode vorstellen? Eine While-Schleife zur Erfassung der Daten innerhalb der Main-While-Schelife ist doch Quatsch oder nicht? Oder muss ich die "While-Schleife zur Erfassung der Daten" quasi zur "Main-While-Schelife" machen? Danke & Gruß, Philipp RE: Reduzierung des Zeitbedarfs zur Datenerfassung - GerdW - 18.05.2018 10:52 Hallo Philipp, 1) hatte ich oben schon beantwortet: nimm eine Queue… 2) Im Grunde läuft es hier immer wieder auf den Ratschlag hinaus, dein MainVI entlich mal gründlich aufzuräumen und zu strukturieren! Ich würde ja die DAQmx-Erfassung parallel zum GUI (aka MainVI) laufen lassen und eben mit einer Queue Daten versenden - aber ob sowas einigermaßen sinnvoll in deine Tapete hineinzustricken ist, bezweifle ich… RE: Reduzierung des Zeitbedarfs zur Datenerfassung - Philipp841 - 18.05.2018 12:50 Hy Gerd, ich versuche nach bestem Wissen deine Ratschläge umzusetzen. Mal eben so neu strukturieren klingt jedoch einfacher (als es für mich) ist (Bitte bedenke, dass der Code nicht von mir stammt). Ich werde versuchen die vorhandene Queue so umzubasteln, das sie die Werte aus meiner neuen Schleife erhält. Wenn dies funktioniert, werde ich mich als nächstes gerne an eine Umstrukturierung machen. Auch wenn dabei sicherlich wieder neue Fragen aufkommen werden. Zwischendurch einmal etwas Anderes: Nach Betätigung des Stopp Buttons (im GUI) erhalte ich jedes Mal folgende Fehlermeldung: siehe Pic. "Fehler" Beiträge in Foren weisen darauf hin, dass es an einer fehlerhaften/doppelten Installation des NI-VISA-Software liegen könnte. Dies sieht bei mir MAX jedoch ok aus, denke ich. siehe PIC. "Anzeige im MAX" Jmd. eine Idee? Schönes W.e., Phil RE: Reduzierung des Zeitbedarfs zur Datenerfassung - GerdW - 18.05.2018 13:06 Hallo Philipp, Zitat:Nach Betätigung des Stopp Buttons (im GUI) erhalte ich jedes Mal folgende Fehlermeldung:Wenn der Fehler nur nach Betätigen des Stopp-Buttons auftaucht, kann das zwei Ursachen haben: - Der Fehler tritt auf, weil irgendwo eine Referenz schon geschlossen wird,während woanders noch damit gearbeitet wird. Sowas ist dank vieler lokaler Variablen durchaus möglich und nennt sich RaceCondition… - Der Fehler tritt generell schon nach dem Start auf, wird aber nicht angezeigt, weil der Error-Draht schön verdrahtet ist. Das kann man aber durch Debuggen verifizieren… |