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 

In StateMachine Daten zwischenspeichern und manuell speichern



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!

25.01.2016, 14:30
Beitrag #1

ChristophSchöneck Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Jan 2016

2015
2015
DE_EN


Deutschland
In StateMachine Daten zwischenspeichern und manuell speichern
Hallo LabView-Community,

ich arbeite seit Anfang des Jahres mit LabView (bitte verzeiht mir eventuelle Anfängerfragen und eine wirre Programmierung ;-) ) und bin dabei ein Programm zu schreiben, dass aus einem DAQ (wahrscheinlich ein USB-DAQ von NI (wir habens noch nicht hier)) drei angeschlossene Sensoren auslesen soll und nach der Messung die Daten in einem Excel-File (mit voreingestelltem Template) zu speichern.
Dafür verwende ich eine StateMachine mit der ich die Messung (mittels DAQmx-VIs) starten und stoppen, sowie Report-Settings (Name, Titel und Firma) eingeben und den Report speichern kann.

Meine Frage ist nun: Wie kriege ich es hin, dass die Daten, die im Measurement-State gesammelt werden, anschließend auch im Report-State ankommen?
Ich habe es bereits mit lokalen Variablen und Arrays ausprobiert, komme aber auf keinen grünen Zweig.
Wenn ich einfach nur eine lokale Variable zum Datenübertrag nutze, wird ja nur der aktuellste Wert zwischengespeichert.
Mit einem Array habe ich es auch schon versucht, muss aber gestehen, dass ich das noch nicht ganz durchschaut und ich kein Tutorial bisher entdeckt habe, dass eine ähnliche Funktion beschreibt.

Vielleicht hat ja jemand von euch eine Lösung. Ich wäre euch sehr dankbar Blush

Viele Grüße,
Chris


Angehängte Datei(en)
15.0 .vi  ReportGenerationSettings.vi (Größe: 24,24 KB / Downloads: 173)

15.0 .vi  Main.vi (Größe: 51,57 KB / Downloads: 176)

15.0 .vi  ReportExcelSubVI.vi (Größe: 74,01 KB / Downloads: 155)

15.0 .ctl  StateMachineControl.ctl (Größe: 6,03 KB / Downloads: 169)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.01.2016, 16:16
Beitrag #2

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Hallo Chris,
Daten in ein Array schreiben, dafür gibt es die Funktion "IN ARRAY EINFÜGEN".
Man kann aus dem MAIN.VI nicht erkennen wann die Daten in das Array sollen.
Innerhalb der inneren While Schleife oder der äußeren While Schleife?

Gruß Freddy
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2016, 16:22
Beitrag #3

ChristophSchöneck Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Jan 2016

2015
2015
DE_EN


Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Hallo Freddy,

die Daten sollen so (zwischen-)gespeichert werden, dass sie in einem anderen Case verfügbar sind. Also müssen die Daten (nach meiner Auffassung) nur die innere While-Schleife verlassen. (die äußere dient ja nur zum Init und Shutdown)

Muss ich für die Funktion "in Array einfügen" mit einem Shift-Register in der inneren While-Schleife arbeiten?

Gruß,
Chris
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.01.2016, 11:55
Beitrag #4

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Wenn Du die Daten in ein Array haben möchtest, dann mit Shift Register.
Siehe Beispiel.
Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.01.2016, 12:26 (Dieser Beitrag wurde zuletzt bearbeitet: 26.01.2016 15:22 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Hallo Chris,

Zitat:Meine Frage ist nun: Wie kriege ich es hin, dass die Daten, die im Measurement-State gesammelt werden, anschließend auch im Report-State ankommen?
Antwort: "Schieberegister"!
Wenn du Daten von einer Iteration einer Schleife in die nächste schieben willst, nimmt man Schieberegister!
Tipp: Wenn du einen "Measurement state" haben willst, solltest du den auch so nennen - und nicht etwa "Program 1"…

Zitat:Wenn ich einfach nur eine lokale Variable zum Datenübertrag nutze, wird ja nur der aktuellste Wert zwischengespeichert.
Wieso? Eine "lokale Variable" bzw. das dahinter stehende Control speichert genau die Daten die DU dort ablegst!

Zitat:Mit einem Array habe ich es auch schon versucht, muss aber gestehen, dass ich das noch nicht ganz durchschaut und ich kein Tutorial bisher entdeckt habe, dass eine ähnliche Funktion beschreibt.
Bei dir scheint es schon beim Umgang mit Arrays ganz allgemein zu hapern. Hast du dir mal die Tutorials angeschaut, die NI für LabVIEW-Anfänger anbietet?

Zitat:die Daten sollen so (zwischen-)gespeichert werden, dass sie in einem anderen Case verfügbar sind.
Korrekt, siehe oben.

Zitat:Also müssen die Daten (nach meiner Auffassung) nur die innere While-Schleife verlassen.
Korrekt, die Daten müssen erst einmal die innere Loop im Measurement-State verlassen. THINK DATAFLOW!

Zitat:(die äußere dient ja nur zum Init und Shutdown)
Aha. Wie kommst du darauf?
Du weißt, was eine Statemachine ist und wie sie funktioniert?


@Freddy:
Zitat:Daten in ein Array schreiben, dafür gibt es die Funktion "IN ARRAY EINFÜGEN".
InsertIntoArray ist zu 80% falsch verwendet, so auch hier bei dir.
Wenn du Daten an ein Array anhängen (oder voranstellen) willst, dann nimmt man BuildArray!
InsertIntoArray ist NUR sinnvoll, wenn Daten an beliebigem Index innerhalb der Arraydaten eingefügt werden sollen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.01.2016, 12:50
Beitrag #6

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Zitat:InsertIntoArray ist zu 80% falsch verwendet, so auch hier bei dir.
Wenn du Daten an ein Array anhängen (oder voranstellen) willst, dann nimmt man BuildArray!
InsertIntoArray ist NUR sinnvoll, wenn Daten an beliebigerm Index innerhalb der Arraydaten eingefügt werden sollen!

Ich habe mal zwei While Schleifen mit Deiner und meiner Array füllen ausprobiert.
Deine Lösung ist um ein Vielfaches schneller.
Danke wieder was dazu gelernt.Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.01.2016, 13:47
Beitrag #7

ChristophSchöneck Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Jan 2016

2015
2015
DE_EN


Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Hallo Gerd,

erstmal danke für die ausführliche Hilfe.

Zitat:Wenn ich einfach nur eine lokale Variable zum Datenübertrag nutze, wird ja nur der aktuellste Wert zwischengespeichert.
Damit meinte ich, dass ohne eine Schieberegister die Daten (innerhalb der inneren While-Schleife) aus dem DAQmx Read.vi in der lokalen Variablen doch immer wieder überschrieben werden.
Mit Schieberegister und der Build Array-Funktion sieht das dann ja natürlich schon anders aus. Hier kann ich dann das erstellte Array mittels einer lokalen Variablen in einem anderen Case wieder abfragen und erhalte alle gesammelten Daten (was ich bis dahin aber noch nicht wusste ;-)).

Zitat: Zitat:
(die äußere dient ja nur zum Init und Shutdown)

Aha. Wie kommst du darauf?
Du weißt, was eine Statemachine ist und wie sie funktioniert?
Ja, ich weiß wie eine Statemachine funktioniert ;-) ich habe mich da scheinbar falsch ausgedrückt. Die äußere While-Schleife hält das Programm schließlich am laufen. Aber die Daten (wie ich es ja bereits geschrieben habe) müssen nur die innere While-Schleife verlassen.

Zitat:Hast du dir mal die Tutorials angeschaut, die NI für LabVIEW-Anfänger anbietet?
Ich habe mir viele Tutorials von NI bereits angesehen und durchgearbeitet. Ich hab aber bisher nicht explizit nach Arrays gesucht, daher auch mein mangelndes Wissen Blink

Ich habe jetzt die Build Array-Funktion mit Shift-Register verwendet. Ist der Ansatz so richtig?

Viele Grüße,
Christoph


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.01.2016, 13:55
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern

Akzeptierte Lösung

(26.01.2016 13:47 )ChristophSchöneck schrieb:  Ich habe jetzt die Build Array-Funktion mit Shift-Register verwendet. Ist der Ansatz so richtig?
Im Prinzip ja, ABER:
- Du erstellst dir jetzt ein 3D-Array! Engineering Overkill!
- Dein Schieberegister ist uninitialisiert. Wenn du diesen Screenshot als "SubVI" verwendest, dann werden bei jedem Aufruf die neu erfassten Daten zu den schon früher erfassten hinzugefügt. Suboptimal.

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
28.01.2016, 10:40 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2016 10:40 von ChristophSchöneck.)
Beitrag #9

ChristophSchöneck Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Jan 2016

2015
2015
DE_EN


Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Hallo Jens,

danke für die Tipps. Ich habe jetzt das DAQmx Read.vi auf Analog 1D DBL NChan 1Samp umgestellt und erhalte nun mit der gleichen Konfiguration ein 2D-Array mit den Messwerten.
Die Initialisierung des Shift-Registers habe ich nun mit einer Konstanten gelöst, die ich an den Eingang des Shift-Registers gesetzt habe. Das funktioniert aber nur mäßig, da mir schlussendlich beim Speichern in der Excel-Tabelle nur eine Reihe an Messwerten angezeigt wird (vermutlich die zuletzt aufgenommene).

Ich stehe ein bisschen auf dem Schlauch... Confused

(Ich hab das neue Programm in einer .llb Datei verpackt, nach Forenanleitung. Ich hoffe es hat geklappt)


Angehängte Datei(en)
0.0 .zip  DAQ.zip (Größe: 116,2 KB / Downloads: 190)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.03.2016, 13:19
Beitrag #10

ChristophSchöneck Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Jan 2016

2015
2015
DE_EN


Deutschland
RE: In StateMachine Daten zwischenspeichern und manuell speichern
Hallo alle zusammen,

danke für die viele Hilfe. Nach einiger Zeit habe ich nun alle Probleme lösen können und danke euch allen für die Hilfe.
Das Programm ist nun fertig Big Grin

Viele Grüße,
Christoph
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
  Ein Ausgabe und Statemachine 0le 7 5.363 13.06.2013 16:24
Letzter Beitrag: 0le
  mit welche DAQmx kann die gemessene Daten speichern? wen 4 5.619 22.12.2012 02:45
Letzter Beitrag: A.Berndsen
  Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ? Sternhagel 7 6.613 22.11.2011 11:17
Letzter Beitrag: GerdW
  NI-Scope 1Gs Daten speichern Ralph.Tillmann 0 3.626 07.10.2011 17:18
Letzter Beitrag: Ralph.Tillmann
  Kontinuierliche Datenerfassung - Daten speichern in geringerer Aufnahmefrequenz Mr.Niceguy 5 11.811 19.07.2011 14:26
Letzter Beitrag: Mr.Niceguy
  Zählerstände zwischenspeichern Mueller_BT 5 5.087 16.07.2010 06:23
Letzter Beitrag: Y-P

Gehe zu: