27.11.2015, 11:47
(Dieser Beitrag wurde zuletzt bearbeitet: 27.11.2015 13:58 von jg.)
Beitrag #1
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
State Machine zum Speichern von TDMS
Hallo LabVIEWForum,
ich habe eine State-Machine zum Speichern von Messdaten (TDMS) erstellt.
Darüber hinaus soll in einem Diagramm das Messsignal wiedergegeben werden.
Um die Messung zeitlich zu begrenzen, soll es über ein Bedienelement möglich sein, eine Messdauer zu definiert.
Genau dort liegt mein Problem, denn das Programm speichert nicht so lange wie unter Messdauer eingestellt wird.
Stelle ich 20 sec. ein, dann werden nur 4 sec. gespeichert. Bei 40 sec. sind es 8 sec. und bei 60 sec. eingestellter Messdauer werden nur 12 sec. gespeichert.
Dazu kommt, dass mit dem Start der Messung das Signal im Diagramm merklich langsamer abläuft und nachdem die Messung beendet wurde, extrem schnell.
Nach einer gewissen Zeit läuft dann das Signal wieder in normaler Geschwindigkeit.
Könnte vielleicht jemand von euch einen Blick in das Programm werfen und mir einen Tipp geben woran das liegen könnte?
Viele Grüße,
Gifo
State Maschine Aufnahme 2.rar (Größe: 56,09 KB / Downloads: 205)
|
|
|
27.11.2015, 16:19
Beitrag #2
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: State Machine zum Speichern von TDMS
Mehrere Fehler und Probleme:
1) Du schiebst einfach viel zu viele kleine Datenelemente in die Queue, die können dann bei aktivierter Filespeicherung gar nicht mehr so schnell abgearbeitet werden.
Lösung: Größere Waveforms aus DAQmx holen:
2) Was sollen die Race-Conditions im Aufnahme-Schritt? Wozu eine eigenen Überprüfung, ob die Zeit abgelaufen ist? Das liefert dir das VI "Verstrichene Zeit":
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.
|
|
|
30.11.2015, 10:13
Beitrag #3
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: State Machine zum Speichern von TDMS
Hallo Jens,
vielen Dank für deinen Kommentar.
Zitat:1) Du schiebst einfach viel zu viele kleine Datenelemente in die Queue, die können dann bei aktivierter Filespeicherung gar nicht mehr so schnell abgearbeitet werden.
Lösung: Größere Waveforms aus DAQmx holen:
Ja stimmt den Anschluss hatte ich total vergessen, danke für den Hinweis. Jetzt habe ich aber das Problem das mein Programm bei der Ausführung stockt. Im Task-Manager von Windows wird mir aber weder eine hohe CPU-Auslastung angezeigt noch ist der Arbeitsspeicher voll ausgelastet. Woran kann das liegen, bzw. wie kann ich dieses Problem abstellen?
Zitat:2) Was sollen die Race-Conditions im Aufnahme-Schritt? Wozu eine eigenen Überprüfung, ob die Zeit abgelaufen ist? Das liefert dir das VI "Verstrichene Zeit":
Ja da hast du vollkommen recht, der Teil ist total überflüssig und ich hätte es eigentlich besser wissen müssen.
In dem Bereich habe ich leider auch noch ein Problem. Wie muss ich das anstellen, dass die verstrichene Zeit wieder auf 0 gesetzt wird, bevor eine neue Messung beginnt?
Denn bisher ist es so, dass beim ersten Start einer Messung noch alles funktioniert aber bei nachfolgenden Messungen gibt es Probleme, die sich wie folgt äußern:
- Messbutton wird betätigt -> eine neue Datei wird erstellt und anschließend die Aufnahme beendet noch bevor die Elapsed Time startet
- Messbutton wird erneut betätigt -> die Datei wird wie gewollt gespeichert
Viele Grüße,
Gifo
|
|
|
30.11.2015, 10:18
(Dieser Beitrag wurde zuletzt bearbeitet: 30.11.2015 10:19 von jg.)
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: State Machine zum Speichern von TDMS
Du hast offenbar Änderungen an deinem VI vorgenommen und stellst dazu Fragen...
Dann her mit dem VI!
Gruß, Jens
EDIT: Wieso ist da im Screenshot immer noch eine lokale Variable (inkl. Race Condition)?
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.
|
|
|
30.11.2015, 11:25
Beitrag #5
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: State Machine zum Speichern von TDMS
(30.11.2015 10:18 )jg schrieb: Du hast offenbar Änderungen an deinem VI vorgenommen und stellst dazu Fragen...
Dann her mit dem VI!
Hier ist die neue Version.
State Maschine Aufnahme 3.rar (Größe: 56,14 KB / Downloads: 213)
Zitat:EDIT: Wieso ist da im Screenshot immer noch eine lokale Variable (inkl. Race Condition)?
Ich glaube dann musst du mir vielleicht doch mal erklären, was du mit "Race Condition" in dem Fall meinst?
Gruß,
Gifo
|
|
|
30.11.2015, 11:42
(Dieser Beitrag wurde zuletzt bearbeitet: 30.11.2015 11:43 von GerdW.)
Beitrag #6
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: State Machine zum Speichern von TDMS
Hallo gifo,
Zitat:Ich glaube dann musst du mir vielleicht doch mal erklären, was du mit "Race Condition" in dem Fall meinst?
Jens verweist auf meine Signatur.
Meine Signatur verweist in ROT auf Einträge in der LabVIEW-Hilfe!
Jens meint die lokale Variable "Time has elapsed", die hier die RaceCondition erzeugt - und nebenbei vollkommen unnötig ist, wenn du einfach mehr DRAHT verwenden würdest…
|
|
|
30.11.2015, 11:45
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: State Machine zum Speichern von TDMS
Wie Gerd schon schreibt, das hier:
Du kannst nicht vorhersagen, was LabVIEW zuerst abarbeitet. Das Schreiben des Terminal oder das Lesen der lokalen Variable...
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.
|
|
|
30.11.2015, 12:47
Beitrag #8
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: State Machine zum Speichern von TDMS
Hallo GerdW, hallo Jens,
danke für den Hinweis.
Durch verwenden von "Draht" arbeite ich mit dem Data-Flow Prinzip und durch Verwendung von "Lokalen Variablen" unterbreche ich dieses Prinzip.
Also meine Aussage ist jetzt auf mein Programm bezogen und nicht verallgemeinert! Aber habe ich das so richtig verstanden?
Hättet ihr denn einen Tipp für mich, wie ich meine anderen beiden Probleme lösen kann?
Gruß,
Gifo
|
|
|
30.11.2015, 13:27
Beitrag #9
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: State Machine zum Speichern von TDMS
(30.11.2015 10:13 )gifo schrieb: Ja stimmt den Anschluss hatte ich total vergessen, danke für den Hinweis. Jetzt habe ich aber das Problem das mein Programm bei der Ausführung stockt. Im Task-Manager von Windows wird mir aber weder eine hohe CPU-Auslastung angezeigt noch ist der Arbeitsspeicher voll ausgelastet. Woran kann das liegen, bzw. wie kann ich dieses Problem abstellen?
Was genau meinst du mit stocken? Bei mir läuft das Programm...
Zitat:Denn bisher ist es so, dass beim ersten Start einer Messung noch alles funktioniert aber bei nachfolgenden Messungen gibt es Probleme, die sich wie folgt äußern:
- Messbutton wird betätigt -> eine neue Datei wird erstellt und anschließend die Aufnahme beendet noch bevor die Elapsed Time startet
- Messbutton wird erneut betätigt -> die Datei wird wie gewollt gespeichert
Indem du sinnvoll und korrekt den Eingang "Reset" deines "Verstrichene Zeit" VI verwendest. Beim ersten Aufruf des Schritts "Aufnahme" nach "Einstellungen" muss da ein TRUE anliegen, danach ein FALSE.
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.
|
|
|
30.11.2015, 15:33
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: State Machine zum Speichern von TDMS
Okay ich hab es eben mit weniger Samples pro Kanal (1000 statt 10000) probiert und da lief das Programm flüssiger.
Mit stocken meine ich, dass das Signal im Diagramm nicht flüssig läuft und das Programm zeitverzögert auf Eingaben reagiert. Also wenn Button gedrückt werden oder z.B. die Messdauer verändert wird.
Zitat:Indem du sinnvoll und korrekt den Eingang "Reset" deines "Verstrichene Zeit" VI verwendest. Beim ersten Aufruf des Schritts "Aufnahme" nach "Einstellungen" muss da ein TRUE anliegen, danach ein FALSE.
Ich hab das jetzt durch ein Schieberegister gelöst und gebe bei "Case-Einstellungen" ein True ins Schieberegister und bei "Case-Aufnahme" ein False. Ging dein Tipp in die Richtung oder gibt es da noch eine einfachere Lösung?
State Maschine Aufnahme4.rar (Größe: 56,33 KB / Downloads: 210)
|
|
|
| |