LabVIEWForum.de
Messwerte in Tabelle schreiben aus Statemachine - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Messwerte in Tabelle schreiben aus Statemachine (/Thread-Messwerte-in-Tabelle-schreiben-aus-Statemachine)

Seiten: 1 2


Messwerte in Tabelle schreiben aus Statemachine - labnutzer - 06.04.2013 20:03

Hallo,

ich versuche oder möchte, das ich die Daten, die ich vom DAQ-Assistent bekomme, in eine Datei zu schreiben. Das ist in diesem Case nur ein einzelner
Spannungswert (1 Sample). In dem Case "User state 1" könnte ich ja einfach ein entsprechendes VI integrieren. (Messwerte in Datei schreiben).

Aber es gibt weitere Cases, die so ähnlich aufgebaut sind. Und dort wird wieder
je ein Spannungswert erzeugt, der mit in die Datei geschrieben werden soll.

Wie kann ich denn das anstellen, das der Datenstrom über die Cases hinaus geführt werden
kann und dann evtl. am Ende zusammengefasst und auf einmal (gleich mehrere Werte als Datensatz) in die Datei geschrieben werden könnten?

Wäre für jede Hilfe dankbar, da ich noch Anfänger bin (erstes Projekt nach Einlesen in diese Thematik)

Grüße


RE: Messwerte in Tabelle schreiben aus Statemachine - Trinitatis - 06.04.2013 22:43

Hallo Labnutzer,

du könntest dir ein neues Shiftregister bauen und dort ein Array akkumulieren. An dieses Array hängst du in allen Mess-States Daten an und übergibst das Shiftregister einfach in allen NICHT-Mess-States. Im State SCHREIBEN schreibst du dann dein Array in die Datei und übergibst an das Shiftregister ein leeres Array, das dann in den Mess-States wieder gefüllt werden kann.
Alternativ geht es natürlich auch über Queues oder lok. Variablen - letzteres wäre aber unelegant und zudem unnötig.

Gruß, Marko


RE: Messwerte in Tabelle schreiben aus Statemachine - labnutzer - 07.04.2013 14:00

Hallo,

also das mit dem Schieberegister packe ich einfach nicht. In einem Case funktioniert das ganz gut, mit der Funktion "Teilstring ersetzen" kann
ich bei meinem 1D-Array ganz gut das jeweilige Element auswählen und es wird auch im Array dann angezeigt. . Aber ich weiß einfach nicht,
wie ich das mit den anderen Cases verbinden muss bzw. sollte.???

Also ein Anschubbeispiel wäre super. Wer kann helfen??

Grüße


RE: Messwerte in Tabelle schreiben aus Statemachine - Trinitatis - 07.04.2013 17:29

. . .dann häng´ du mal erst ein Beispiel hinten an, das erspart dem Helfenden, den ganzen Kollateralkram zu programmieren, den du ja schon erstellt hast (haben solltest).

Gruß, Marko


RE: Messwerte in Tabelle schreiben aus Statemachine - labnutzer - 07.04.2013 18:09

Hallo Marko,

schön, dass du Dir das mal ansiehst.

Vi ist angehängt. Hoffe, das geht so.

Also, die Messwerterfassung soll nacheinander ablaufen, zuerst Messwert 1, Darstellung des Messwertes am Frontpanel
und eine Beurteilung, ob innerhalb der Toleranz. Wenn nicht in der Toleranz, dann gibt es eine Meldung am Bildschirm, mit der
Entscheidung weiter oder Abbruch. Danach Messwert 2, gleiche Prozedur und dann die Messwerte 3 bis 15.

Die Meßwerte sollen dann in eine Datei geschrieben werden. Ich habe das über ein Array gemacht und über lokale Variable. Denn
irgenwie muß ja der Meßwert aus dem einem Case heraus zur Weiterverarbeitung. Ich habe es eben nur mit diesen lokalen Variablen geschafft.
Aber evtl. ist der Aufbau auch völlig falsch. Ausgangspunkt war eine State-Machine mit einer Ereignisstruktur.

Das Problem, was ich noch sehe, ist, dass es bei ca. 15 Messwerterfassungen nacheinander (teilweise mit einer Verzögerung von ca.
1 bis 2 sec. in der Abfolge) der Bediener keine Chance auf einen Abbruch hat, da der Abbruchbutton ja nicht in der Case-Struktur abgefragt wird.

Zwar stoppt der Ablauf mittels der Fehlermeldung, wenn ein Wert außerhalb der Toleranz ist, aber ich denke,das reicht nicht aus.

Grüße


RE: Messwerte in Tabelle schreiben aus Statemachine - Trinitatis - 07.04.2013 18:24

Hallo labnutzer,

speicher das VI mal bitte auf <=2011 runter - sorry, hätte ich auch gleich schreiben können, aber die meisten hier im Forum können mit 2012 noch nichts anfangen, bei mir hört´s bei 2011 auch auf.

Gruß, Marko


RE: Messwerte in Tabelle schreiben aus Statemachine - labnutzer - 07.04.2013 19:13

Hallo Marko,

kein Problem, hoffe, nun gehts.

Grüße


RE: Messwerte in Tabelle schreiben aus Statemachine - Trinitatis - 07.04.2013 19:35

Hi,

ich hab mich jetzt mal nur um das Shiftregister in den Cases gekümmert, in denen du die Variable verwendet hattest.
Für die Stop-Prüfung habe ich das Schaltverhalten geändert und den aktuellen Schalterzustand an der Schleifenbedingung mit verodert.

Gruß, Marko


RE: Messwerte in Tabelle schreiben aus Statemachine - labnutzer - 07.04.2013 20:56

Hallo Marko,

vielen Dank. Die lokalen Variablen wäre ich los.

Allerdings wird nun, da sich das Anzeigearray (nat. für Testzwecke, die Werte sollen ja als Datensatz pro Durchlauf an eine Datei angehängt werden)
außerhalb der Casestruktur befindet, nicht mit rückgesetzt, wenn man den Rücksetzbutton betätigt. Ich glaube aber, dass dann neue Werte im nächsten Durchlauf
die Felder vom Array überschreiben und somit aktualisieren (sieht man im Mom nicht, da immer die gleichen Werte). Rückgesetzt wird an sich, wenn man
den Start-button drückt.

Warum dies beim Rücksetz-Button nicht ist, k. A.?

Beim Stopp-Button ist es nun so, wenn man startet und anschließend gleich den Stopp-Button drückt, wird er nicht zurückgesetzt. Ist das so normal?

Viele Grüße


RE: Messwerte in Tabelle schreiben aus Statemachine - Trinitatis - 07.04.2013 21:04

Hallo labnutzer,

in dem case, in dem deine Eventstruktur liegt, habe ich das Array per shiftregister ja einfach nur übergeben. Du müsstest jetzt also das Array noch durch die Events führen und in den events ein leeres Array übergeben, in denen es gewünsch ist, z.B. beim Reset, in allen anderen wieder nur durchschleifen.

Der Stop-Knopf, dessen Schaltverhalten ich geändert habe muss nun explizit zurückgesetzt werden - dies geschieht z.Zt, exemplarisch in dem entsprechenden Event.

Gruß, Marko