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 

Messdaten in Protokoll 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!

07.03.2012, 14:27
Beitrag #1

UnbekanntesPferd Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2012

8.2
-
kA



Messdaten in Protokoll speichern
Hallo!

Ich habe ein VI geschrieben, welches überprüft, ob eine Kraftmessdose noch ausreichend genau kalibriert ist (vgl. Feld "Bedienung" im Frontpanel).

   

Die Kraft KD24 2 in den ersten beiden Bildern ist die vom Sensor kommende Kraft und wird durch ein separates VI ausgelesen.
Die einzelnen Messungen liegen jeweils in einer Sequenzstruktur, am Schluss will ich im letzten Teil der Sequenzstruktur alle Messwerte, die angehangenen Gewichte und den relativen Fehler in eine Messdatei schreiben. Das klappt auch, wenn ich den letzten Array (3. Teil des Blockdiagramms) einfach in eine Tabellenkalkulationsdatei schreibe, aber die Datei ist mir dann viel zu kryptisch. Die For-Schleife im 3. Bild könnt ihr außer Acht lassen, die stammt noch von nem misslungenen Versuch die Messdatei selbst zu erstellen.

Das Blockdiagramm von links nach rechts:
   
   
   

Meine Frage/Bitte an euch:
Wie kann ich ein Messprotokoll erstellen, das eine Kopfzeile (z.B. "Messprotokoll vom [Datum]"), dann eine Leerzeile und danach in einer Spalte die Werte (die in Bild 3 in den letzten Array gehen) mit passender Beschriftung in einer Spalte davor (jeweils in einer neuen Zeile) enthält? Eventuell sollte am Schluss noch meine Signatur stehen Wink

Wäre super nett wenn ihr mir da helfen könnt (wenn möglich mit grobem Blockdiagramm, wie ich was verschalten muss), ich hab erst vor kurzem angefangen mit Labview zu arbeiten und kenn mich mit diesen komplizierteren Sachen noch nicht aus.

Liebe Grüße,
Unbekanntes Pferd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
07.03.2012, 15:22
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messdaten in Protokoll speichern
Hallo Pferdchen,

erstmal würde ich dir dringend raten, dir die Basics von LabVIEW anzulesen! (Siehe Signatur...)

- Wenn du das gemacht hast, wirst du wissen, was RaceConditions sind und dann die ganzen unnötigen lokalen Variablen entfernen und durch Drähte ersetzen.
- Dann kannst du dir überlegen, ob es wirklich sinnvoll ist, eine lokale Variable 100mal ohne Timing auszulesen und davon den Mittelwert zu bilden...
- Zur eigentlichen Frage: Schau dir die Funktionen "Write to Text File" und "Write Spreadsheet File" (bzw. die Hilfe dazu) mal an...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.03.2012, 15:52
Beitrag #3

UnbekanntesPferd Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2012

8.2
-
kA



RE: Messdaten in Protokoll speichern
Hey!

Zuerst mal danke für die schnelle Antwort.

Ich weiß, dass ich mir die LabView Anleitung durchlesen sollte, hab das auch schon teilweise gemacht, aber bisher brauche ich LabView zu wenig, um mir mehrer dieser riesen Bücher durchzulesen, v.a. da das momentan für mich eher ne Beschäftigung ist, um als HiWi die Semesterferien rumzukriegen, ansonsten helf ich nur in der Lehre mit.

Ich hab die lokalen Variablen jetzt vor allem benutzt, damit das VI übersichtlicher ist und ich nicht so viele Drähte hin- und herlaufen hab. Haben die lokalen Variablen so wie ich sie benutze Nachteile?

Das 100 mal Auslesen hab ich nur gemacht, weil ich mit einem Schalter steuern will, wann das VI die Kraft ausliest, ich dafür ne Schleife gebraucht hab und 100 dann als beliebigen Wert genommen hab. Mir ist keine einfachere Variante eingefalln um dem VI zu sagen "Wenn ich den Knopf drücke, musst du den Kraftwert auslesen und dir als Kraft 1 (bzw 2 oder 3ist) merken"

"Write Spreadsheet File" ist auf Deutsch doch "In Tabellenkalkulationsdatei schreiben" oder? Da hab ichs nicht geschafft die Beschriftung usw in die Tabelle zu Bringen. Bin momentan an einem Versuch das Problem mit "In Textdatei schreiben" zu lösen, die Tabelle sieht aber immernoch nicht so aus, wie ich es gern hätte.

Nochmal danke für die Mühe,

Grüße,
Unbekanntes Pferd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2012, 08:11
Beitrag #4

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Messdaten in Protokoll speichern
(07.03.2012 15:52 )UnbekanntesPferd schrieb:  Hey!

Ich hab die lokalen Variablen jetzt vor allem benutzt, damit das VI übersichtlicher ist und ich nicht so viele Drähte hin- und herlaufen hab. Haben die lokalen Variablen so wie ich sie benutze Nachteile?

Das 100 mal Auslesen hab ich nur gemacht, weil ich mit einem Schalter steuern will, wann das VI die Kraft ausliest, ich dafür ne Schleife gebraucht hab und 100 dann als beliebigen Wert genommen hab. Mir ist keine einfachere Variante eingefalln um dem VI zu sagen "Wenn ich den Knopf drücke, musst du den Kraftwert auslesen und dir als Kraft 1 (bzw 2 oder 3ist) merken"

"Write Spreadsheet File" ist auf Deutsch doch "In Tabellenkalkulationsdatei schreiben" oder? Da hab ichs nicht geschafft die Beschriftung usw in die Tabelle zu Bringen. Bin momentan an einem Versuch das Problem mit "In Textdatei schreiben" zu lösen, die Tabelle sieht aber immernoch nicht so aus, wie ich es gern hätte.

Hey Pferd

Ein grosser Nachteil ist es, dass du mit lokalen Variablen so wie du sie verwendest sogenannte Race-Conditions (wie Gerd bereits angetönt hat) herraufbeschwörscht. Einfach gesagt hast du keine Kontrolle darüber in welcher Reihenfolge die Daten geschrieben und gelesen werden. Im schlimmsten Fall überschreibst du dir neue Werte mit altem Mist. Zudem funktioniert LabVIEW nach dem Datenfluss-Prinzip, alles was nicht datenmässig abhängig ist wird parallel ausgeführt.

Es ist einfach guter Programmierstyl die Drähte zu verwenden anstatt alles mit lokalen Variablen zu ersetzen. Falls du Probleme mit der Übersichtlichkeit bekommst kannst du entweder alles in einen Cluster (ein struct in C bspw.) packen und aus vielen Drähten einen einzelnen machen. Oder du verwendest Funktionale Globale Variablen (kurz FGV) welche die gleiche Funktionalität haben, jedoch vor Raceconditions schützen.

Um Daten zu speichern für den nächsten Schleifendurchlauf gibt es sogenannte Shift-Register.

Und ja "Write Spreadsheet File" ist in Deutsch "In Tabellenkakulationsdatei schreiben". Am besten lädst du mal dein VI hoch in welchem du ins Excel-File schreibst mit einer Excel-Datei wie sie aussehen sollte, damit man sich ein besseres Bild davon machen kann.

Hoffe das hilft dir weiter!

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2012, 11:48
Beitrag #5

UnbekanntesPferd Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2012

8.2
-
kA



RE: Messdaten in Protokoll speichern
Hey!

Danke, dass du mich darüber aufgeklärt hast. Ich probier wohl in Zukunft weniger lokale Variablen zu benutzen, aber bei dem VI hier lass ich es so. Ich hab mir mit diesem Glühbirnen Symbol mal den Fluss im VI genauer angesehn, da passt alles so wie's ist, ich denk mal weil ich alles in die Sequenzstruktur gepackt hab und die Kräfte jeweils nacheinander über einen kurzen Zeitraum auslese.
Ich hab das Problem jetzt mit "In eine Textdatei schreiben" gelöst. Es sieht zwar nicht so toll aus, da alles (damit die Datei so aussieht, wie ich will) ein ziemlicher "Array&String-Salat" ist, aber es passt. Ich bin wohl erst nächsten Freitag wieder auf der Arbeit, dann werde ich das VI mal hier hochladen.

Grüsse,
UnbekanntesPferd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2012, 13:08
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messdaten in Protokoll speichern
Hallo Pferd,

Zitat:Ich hab mir mit diesem Glühbirnen Symbol mal den Fluss im VI genauer angesehn, da passt alles so wie's ist,
Ich warte auf den ersten Beitrag von dir, der folgenden Satz enthält: "Wenn ich im HighlightingMode alles ausprobiere, funktioniert mein VI, aber sobald ich es normal laufen lasse, nicht mehr..." Smile

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2012, 11:46
Beitrag #7

UnbekanntesPferd Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2012

8.2
-
kA



RE: Messdaten in Protokoll speichern
Hallo!

Ist zwar etwas verspätet, aber hier mal noch für alle, die es interessiert das VI, das ich geschrieben hab.

8.2 .vi  Kalibrierung Kraftmessdose.vi (Größe: 149,49 KB / Downloads: 410)
Lv82_img

Grüße,
UnbekanntesPferd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2012, 14:15
Beitrag #8

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Messdaten in Protokoll speichern
(22.03.2012 11:46 )UnbekanntesPferd schrieb:  Hallo!

Ist zwar etwas verspätet, aber hier mal noch für alle, die es interessiert das VI, das ich geschrieben hab.
Lv82_img

Grüße,
UnbekanntesPferd

Liefert das VI auch erwartete Werte zurückHuh

Ich verstehe nicht ganz was du mit den Schleifen in denen du 100 mal die Variable ausliest machen willst ausser deine Race-Condition zu betonen.

So wie es jetzt programmiert ist, lässt sich zur Laufzeit nicht sagen, welcher Wert sich in der lokalen Variable befindet zum Auslesezeitpunkt...

Du tätest gut daran das Ganze in einer Produce-Consumer Struktur zu lösen und deine Werte kontinuierlich in einen 100 Elemente grossen Queue zu schreiben.

Auch wenn die Werte im Debug-Modus evtl stimmen, so wird kann und wird deine Datenunabhängigkeit zu Fehlern im laufenden Betrieb führen.

Falls du Fragen hast kannst du gerne nachhaken.

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2012, 14:38
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messdaten in Protokoll speichern
Hallo Pferdchen,

Beitrag#2, zweiter Stichpunkt ist weiterhin gültig: deine Mittelwert-Bildner sind Blödsinn.

Weiterhin:
- fast alle lokalen Variablen lassen sich durch Drahtverbindungen ersetzen, siehe Bild (nur zur Veranschaulichung, da kann noch mehr aufgeräumt werden)
- deine Datei-Formatier-Schleife ist Blödsinn, siehe Bild
- deine Sequenzstruktur ist größtenteils Blödsinn, da man alles mittels Dataflow regeln kann


Angehängte Datei(en) Thumbnail(s)
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2012, 15:37
Beitrag #10

UnbekanntesPferd Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2012

8.2
-
kA



RE: Messdaten in Protokoll speichern
(22.03.2012 14:15 )M Nussbaumer schrieb:  Liefert das VI auch erwartete Werte zurückHuh
Ja, macht es soweit schon.

(22.03.2012 14:15 )M Nussbaumer schrieb:  Ich verstehe nicht ganz was du mit den Schleifen in denen du 100 mal die Variable ausliest machen willst ausser deine Race-Condition zu betonen.
Theoretisch könnte ich die For-Schleifen mit dem Mittelwert dahinter auch weglassen, ich häng ja ein Gewicht dran und messe die Kraft, da sollte der Kraftwert bei einem Gewicht ja sowieso konstant sein, aber ich dachte mir, das ich das sicherheitshalber 100 Werte nehme und mittle, um eventuelle Fehler wie z.B. nen Luftstoß oder sowas abzuschwächen.

(22.03.2012 14:15 )M Nussbaumer schrieb:  So wie es jetzt programmiert ist, lässt sich zur Laufzeit nicht sagen, welcher Wert sich in der lokalen Variable befindet zum Auslesezeitpunkt...
Das verstehe ich irgendwie nicht. Ich hab ne Sequenzstruktur, also wird alles nacheinander ablaufen. Ich häng Gewicht 1 an, drück auf nen Knopf, die Kraft wird gemessen, ich drück wieder auf nen Knopf, die Messung stoppt und ich hab nen Wert für Kraft 1. Das Gleiche dann wieder für Gewicht2/Kraft2 und Gewicht3/Kraft3ist. Danach benutze ich zum rechnen ja nurnoch die in den vorigen Sequenzen erstellten Werte. Wie kann ich denn da noch Probleme mit den in den lokalen Variablen gespeicherten Werte bekommen? Oder hab ich da jetzt nen totalen Denkfehler drin?

(22.03.2012 14:15 )M Nussbaumer schrieb:  Du tätest gut daran das Ganze in einer Produce-Consumer Struktur zu lösen und deine Werte kontinuierlich in einen 100 Elemente grossen Queue zu schreiben.
Das sagt mir leider garnichts, bin noch absoluter Labview Anfänger Wink

Grüße,
UnbekanntesPferd
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
  Protokoll -> mehrere Daten in ein Protokoll im 5 Minuten Takt Ripchip 4 5.040 23.01.2018 18:50
Letzter Beitrag: GerdW
  Messdaten als glob. Variable speichern Majuler 3 3.962 10.11.2016 20:06
Letzter Beitrag: GerdW
  Messdaten in 3D Array speichern und sortieren andrepf 8 7.471 08.04.2016 10:12
Letzter Beitrag: jg
  Protokoll erstellen Tom2204 1 5.690 12.03.2014 22:58
Letzter Beitrag: Trinitatis
  Protokoll drucken - Grafik/Header/Text auf eine Seite?! Lifter 7 7.060 10.12.2013 09:18
Letzter Beitrag: jg
  Automatisches Starten nach x minuten und speichern der Messdaten Simon85 6 5.218 27.03.2013 15:45
Letzter Beitrag: GerdW

Gehe zu: