LabVIEWForum.de
Daten erfassen und Zeit synchronisieren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Daten erfassen und Zeit synchronisieren (/Thread-Daten-erfassen-und-Zeit-synchronisieren)

Seiten: 1 2


Daten erfassen und Zeit synchronisieren - Olli_11845 - 08.09.2020 10:03

Hallo zusammen,

ich habe ein Problem mit der Erfassung von Daten in Labview. Ich steuere damit ein BHKW und gebe noch Input Daten per CSV Datei in den While Loop. Der While Loop hat eine Time Delay von 1000ms.
bei jedem Schritt werden Daten aus der CSV abgefragt. Das soll genau 1x pro Sekunde passieren


Jetzt zum Problem. Die Simulation läuft langsamer ab. 1 Sekunde in der Simulation entspricht 3,3 Sekunden in der Realtät oder so ähnlich.

Gibt es eine Möglichkeit wie ich das synchronisieren kann? So dass 1 Sekunde in Labview 1 Sekunde in der Realität entspricht.


Ich hoffe es kann jemand helfen Bahn


RE: Daten erfassen und Zeit synchronisieren - GerdW - 08.09.2020 10:09

Hallo Olli,

Zitat:Der While Loop hat eine Time Delay von 1000ms. bei jedem Schritt werden Daten aus der CSV abgefragt. Das soll genau 1x pro Sekunde passieren
Jetzt zum Problem. Die Simulation läuft langsamer ab. 1 Sekunde in der Simulation entspricht 3,3 Sekunden in der Realtät oder so ähnlich.
Du gibst also eine Iterationszeit von 1000ms vor - die Schleife braucht aber 3300ms pro Iteration!?

Dann musst du dafür sorgen, dass der Code in dieser Schleife eben in maximal 999ms fertig wird und nicht erst nach 3300ms…


RE: Daten erfassen und Zeit synchronisieren - jg - 08.09.2020 11:23

(08.09.2020 10:09 )GerdW schrieb:  Dann musst du dafür sorgen, dass der Code in dieser Schleife eben in maximal 999ms fertig wird und nicht erst nach 3300ms…
Und wenn du uns den Code zeigst, dann können wir dir hoffentlich dedizierter weiterhelfen.

Gruß, Jens


RE: Daten erfassen und Zeit synchronisieren - Olli_11845 - 08.09.2020 11:53

(08.09.2020 11:23 )jg schrieb:  
(08.09.2020 10:09 )GerdW schrieb:  Dann musst du dafür sorgen, dass der Code in dieser Schleife eben in maximal 999ms fertig wird und nicht erst nach 3300ms…
Und wenn du uns den Code zeigst, dann können wir dir hoffentlich dedizierter weiterhelfen.

Gruß, Jens

Hier ist es


RE: Daten erfassen und Zeit synchronisieren - GerdW - 08.09.2020 12:00

Zitat:Hier ist es
Nö…

Tipp: Datei mit dem "Durchsuchen"-Button auswählen, dann rechts auf "Attachment hinzufügen" klicken… Wall


RE: Daten erfassen und Zeit synchronisieren - jg - 08.09.2020 12:10

(08.09.2020 12:00 )GerdW schrieb:  
Zitat:Hier ist es
Nö…

Tipp: Datei mit dem "Durchsuchen"-Button auswählen, dann rechts auf "Attachment hinzufügen" klicken… Wall
Und als Attachment am besten VIs wählen, keine Screenshots vom Blockdiagramm Wink

Gruß, Jens


RE: Daten erfassen und Zeit synchronisieren - Olli_11845 - 08.09.2020 12:20

[/quote]
Und als Attachment am besten VIs wählen, keine Screenshots vom Blockdiagramm Wink

[/quote]



So


RE: Daten erfassen und Zeit synchronisieren - jg - 08.09.2020 12:34

Hilfe, Code aufräumen wäre mal als erstes angesagt, wer soll in dem Bockdiagramm etwas finden...

Welche deiner Loops läuft denn zu langsam?

In einer der beiden Loops schreibst du alleine 14x in verschiedene einzelne Modbus-Register, das könntest du auch von der Reihenfolge der Register auch jeweils zusammenfassen und mehrere Register mit einem Kommando schreiben. Parallel dazu laufen noch 2 Modbus-Abfragen, deine Gegenstelle muss also pro Sekunde 16 Register-Anfragen verarbeiten. Vielleicht ist das der Flaschenhals.

Dann: Muss du wirklich für jeden Kanal einen einzelnen File anlegen und schreiben? Fass das doch zusammen, dann hast du weniger Filezugriffe.

Gruß, Jens


RE: Daten erfassen und Zeit synchronisieren - Olli_11845 - 08.09.2020 13:17

(08.09.2020 12:34 )jg schrieb:  Hilfe, Code aufräumen wäre mal als erstes angesagt, wer soll in dem Bockdiagramm etwas finden...

Welche deiner Loops läuft denn zu langsam?

In einer der beiden Loops schreibst du alleine 14x in verschiedene einzelne Modbus-Register, das könntest du auch von der Reihenfolge der Register auch jeweils zusammenfassen und mehrere Register mit einem Kommando schreiben. Parallel dazu laufen noch 2 Modbus-Abfragen, deine Gegenstelle muss also pro Sekunde 16 Register-Anfragen verarbeiten. Vielleicht ist das der Flaschenhals.

Dann: Muss du wirklich für jeden Kanal einen einzelnen File anlegen und schreiben? Fass das doch zusammen, dann hast du weniger Filezugriffe.

Gruß, Jens

Die 14 Modbus Register kann ich nicht ändern. Aber die idee alles in ein Excel File zu schreiben ist gut.

Noch eine andere Idee. Ist es möglich alle daten die zu Excel gehen erstmal labview intern in eine Tabelle zu schreiben und dann später zu exportieren? Das würde sicher Leistung sparen. Und wie würde das gehen?

Gleiche frage für den Import von CSV in Labview


RE: Daten erfassen und Zeit synchronisieren - GerdW - 08.09.2020 13:36

Hallo Olli,

Zitat:Die 14 Modbus Register kann ich nicht ändern.
Interessant ist ja auch, dass du ob Offset 256 Modbus-Register liest und dann für die Anzeige nochmal 256 Dummywerte vor die eigentlichen Messwerte packst. Und dann auch noch ewig viele einzelne IndexArray-Funktionen benutzt, um die ganzen Einzelwerte zu indizieren…

Zitat:Aber die idee alles in ein Excel File zu schreiben ist gut.
Noch besser wäre die Idee, überhaupt kein Excel-File zu erstellen, sondern alles in eine CSV-Datei zu schreiben.
Wäre viel performanter…

Zitat:Noch eine andere Idee. Ist es möglich alle daten die zu Excel gehen erstmal labview intern in eine Tabelle zu schreiben und dann später zu exportieren? Das würde sicher Leistung sparen. Und wie würde das gehen?
Wieso soll es "Leistung" sparen, wenn du erst den Speicher mit Messdaten vollschreibst?
Wie schon gesagt: alles in eine CSV-Datei schreiben…

Zitat:Gleiche frage für den Import von CSV in Labview
Da sich die diese CSV-Datei (hoffentlich) nicht andauernd ändern, würde es doch sicherlich ausreichen, sie ein einziges mal vor der Schleife zu lesen!?
Und da du ja auch nur eine Spalte daraus benötigst, kann man diese auch noch vor der Schleife indizieren!
Und da du in der Schleife auch noch "i" benutzt, um die Zeile zu indizieren, könnte man dann sogar mit einer autoindizieren Schleife alle Elemente dieser Spalte abarbeiten!

Vor allem aber erst einmal aufräumen. Geschätzte 16 FullHD-Screens sind einfach zu viel für ein Blockdiagramm!