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 

DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format



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!

27.11.2015, 15:15 (Dieser Beitrag wurde zuletzt bearbeitet: 27.11.2015 15:26 von GerdW.)
Beitrag #21

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Hallo m.,

ja eben: es wird nur der Wert im Cluster geändert, den du beim BundleByName ausgewählt hast!
Du änderst das Cluster-Element "1", während Cluster-Element "2" unverändert bleibt. (THINK DATAFLOW!)

Deinen Kommentar im FP "Der Wert von 2 wird allerdings auch in Cluster geschrieben" verstehe ich nicht. Es ist doch alles durch THINK DATAFLOW geregelt!?
Du schreibst einen Cluster, bestehend aus 2 Werten, in deinen Indicator "Cluster"! Wall

Edit:
Dein Kommentar "Die Funktion "Bundle By Name" benutzt "Cluster_Prototyp" als Strukturprototyp" ist FALSCH!
Cluster_Prototyp ist eine DATENQUELLE - THINK DATAFLOW!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.11.2015, 20:10
Beitrag #22

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
(27.11.2015 15:06 )m.werle schrieb:  In LV2010 werden alle Werte vom Input Cluster genommen, die ausgewählten Werte werden überschrieben, und das ganze ins Outputcluster geschrieben.
Das ist nicht nur in LV2010 so, das ist eine Methode von graphischer Programmierung.


Zitat:"New_Value_of_1" wird gebundelt und soll die Variable "1" in "Cluster" überschreiben.
Das kann man so sagen.
Man kann aber auch sagen: In dem Datensatz, der durch den Wire repräsentiert wird und der die Variable "1" enthält, wird mittels eines Bundles der Wert der Variablen "1" mit dem Wert von "New_Value_of_1" ersetzt.
Beachte: Eingabeelement, Wire, Bundle und Anzeigeelement haben alle vier - also auch der Wire - den selben Datentyp und somit die selben Variablen.

Zitat:Die Funktion "Bundle By Name" benutzt "Cluster_Prototyp" als Strukturprototyp"
Auch das kann man so sagen.
Wenn du ein "Bundle By Name" auf das Blockdiagramm ziehst, liegt dieses Element völlig typlos auf dem BD. Indem du einen definierten Cluster (z.B. eine Konstante oder den Ausgang eines Eingabeelementes) auf den Eingang von "Bundle By Name" gibst, bekommt dieses Element einen "Typ" - nämlich den des Clusters. Demzufolge enthalten alle Elemente des Bundles nur Variablennamen des typisierenden Clusters. So gesehen ist "Cluster_Prototyp" ein "Strukturprototyp". Dies alles geschieht zur Entwicklungszeit.
Später allerdings, zur Laufzeit des Programmes, wirkt der am Eingang des "Bundle By Name" angebundene Datensatz als Eingangsdaten für "Bundle By Name" - also als Datenquelle.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2015, 15:06 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2015 16:32 von m.werle.)
Beitrag #23

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Bezüglich der "Bundly by Name" Sache. Mh, hab's kapiert. Verzeihung, wenn ich mich ungenau ausdrücke, weil ich mir die offizielle Terminologie noch nicht so ganz erschlossen habe.

    Datalogging mit "Write to Spreadsheet" in einer .csv-Datei

So, ich möchte Daten in einer .csv-Datei loggen. Leider klappt es nicht, die verschiedenen Daten auf die Spalten der .csv-Datei aufzuteilen. Eigentlich sollte dies per Komma geschehen.
Bei jeder Iteration in die nächste Reihe rücken funktioniert, leider wird immer nur die erste Spalte gefüllt. Ahrg1 Sollte doch nicht so schwer sein...

Hab mir das hier als Vorlage genommen.
https://decibel.ni.com/content/docs/DOC-36448

Beispiel aus der .csv-Tabelle:
15:7:33, 1,203907, 2,033211, 2,725275, 0,000000, 0,000000, 0,999185, 0,000200, 2,114774,
15:7:34, 1,789011, 2,644689, 3,357753, 0,000000, 0,000000, 0,999654, 0,000304, 2,793651,


Edit: Weitere Erläuterungen zum Blockschaltbild
Der Dateninput (rosa Wire von oben links) hat folgenden Datentyp:
1D-Array (Kette von Datensätzen)
Einzelner Datensatz: 1D-Array (Jedes Array-Glied entspricht einer Messgröße)
Jede Messgröße ist in Waveformformat gespeichert mit dem Komponenten t0, dt und Y, wobei Y ein Array mit einem Sample(DBL) ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2015, 17:06 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2015 17:17 von GerdW.)
Beitrag #24

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Hallo m.,

Grundlagen der Windows-Nutzung:
Das CSV-Format wurde für Computer entworfen, die mit englischen Zahlenformaten arbeiten: Punkt als Dezimaltrennzeichen. (CSV = "comma seperated values"!)
Da ist es nicht besonders clever, sowohl innerhalb von Zahlen als auch als Trennzeichen zwischen Zahlen ein Komma zu verwenden.

Von mit präferierte Lösung: In Windows -> Regionaleinstellung englische Zahlenformate einstellen (Punkt als Dezimaltrennzeichen, Komma als Tausendertrennzeichen). Grund: Jedes externe Messgerät arbeitet mit diesem Zahlenformat!

Andere Lösungen:
- In LabVIEW die Zahlen mit einem Punkt als Dezimaltrennzeichen formatieren ("%.;")
- Ein anderes Trennzeichen für die csv-Dateien verwenden, üblich sind auch TAB oder ;

Und wie bestimmt schon mal gesagt: Ein VI lässt sich wesentlich einfacher debuggen als ein Bild…

Zitat:Weitere Erläuterungen zum Blockschaltbild
Der Dateninput (rosa Wire von oben links) hat folgenden Datentyp:
1D-Array (Kette von Datensätzen)
Einzelner Datensatz: 1D-Array (Jedes Array-Glied entspricht einer Messgröße)
Ich sehe keine "Ketten von Datensätzen".
Ich sehe da ein 1D-Array of Cluster of 1D-Array of Waveform. So sollte es dir auch die Kontexthilfe anzeigen!

Und warum ist es so schwierig, gerade Drähte oder mal Ctrl-U zu verwenden?
Die Berechnung unten in der Loop ist auch hochgradig Rube-Goldberg: es gibt da eine Modulo-Division in der Numerics-Palette… Wall

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.12.2015, 11:43 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2015 12:00 von m.werle.)
Beitrag #25

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Rube Goldberg war mir bis gerade kein Begriff. Big Grin Mit der Modulo Division ist das deutlich übersichtlicher.

Hmpf. Datalogging in csv-Format wird gleich weitergetestet. Habe noch ein paar andere seltsame Probleme.

Property Node (Value) Error 1055 bei strikt typisierter Variable

EDIT: Liegt wohl an den Typendefinitionen der Ctrls! Werde das erstmal ausbessern. Wenns doch nichts bringt komm' ich wieder.
OK, habe bei den VIs, bei denen es nicht ging die Typendefintion von unten wiederholt und den Teil einfach neu gemacht. Funktioniert inzwischen.





Habe mir in diversen VIs eine strikt typisierte Boolsche Stopvariable eingebaut (mechanical action switch). Die Referenzen dieser strict typsierten Boolschen Variablen, habe ich mir global gespeichert. (Global_Stop.vi)
Da ich viele Programme im Hintergrund laufen habe, wollte ich diese nacheinander in der richtigen Reihenfolge über ein VI (Beenden.vi) schließen können.

Leider spucken mir manche der Property Nodes (Value) in "Beenden.vi" den Error 1055 aus. In den VI's in welchen die Stopvariablen sind (habe mal beispielhaft "Debug_Datalogmenü.vi" und "Alarmmenü.vi" hochgeladen) funktioniert es einwandfrei die boolschen Variablen über Property Nodes (Value) zu benutzen. Auch, wenn ich die Referenz aus der globalen Variable (Global_Stop.vi) entnehmen, kann ich den Property Node (Value) ohne Error benutzen.

Oh, stelle gerade fest, dass es bei manchen VIs funktioniert, bei manchen nicht. Typendefinition scheint auch nicht ganz überall gleich zu sein? In "Debug_Datalogmenü.vi" gibt es bei den lokalen Variablen der typ def boolschen VariableCoersion Dots. In "Alarmmenü.vi" gibt es diese nicht, und der Property Node (Value) funktioniert nicht.

Typendefinition:
Control in VI 1 erstellt
Rechtsklick -> Customize -> Strict Type Def -> Save as "Ctrl_blabla.ctl" -> Control in VI 1 damit ersetzen? Ja
Rechtsklick auf das nun strikt typisierte Bedienelement -> Create -> Reference
Rechtsklick auf Reference -> Create -> Control
Control in Globale Variable kopieren
Reference aus VI 1 in strikt typisierter Refnum-Control in globaler Variable speicher

Bahn


Angehängte Datei(en)
10.0 .vi  Global_Stop.vi (Größe: 5,59 KB / Downloads: 151)

10.0 .vi  Beenden.vi (Größe: 31,34 KB / Downloads: 150)

10.0 .vi  Debug_Datalogmenü.vi (Größe: 8,18 KB / Downloads: 153)

10.0 .vi  Alarmmenü.vi (Größe: 15,92 KB / Downloads: 143)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.12.2015, 16:16
Beitrag #26

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
(03.12.2015 17:06 )GerdW schrieb:  Hallo m.,

Grundlagen der Windows-Nutzung:
Das CSV-Format wurde für Computer entworfen, die mit englischen Zahlenformaten arbeiten: Punkt als Dezimaltrennzeichen. (CSV = "comma seperated values"!)
Da ist es nicht besonders clever, sowohl innerhalb von Zahlen als auch als Trennzeichen zwischen Zahlen ein Komma zu verwenden.

Von mit präferierte Lösung: In Windows -> Regionaleinstellung englische Zahlenformate einstellen (Punkt als Dezimaltrennzeichen, Komma als Tausendertrennzeichen). Grund: Jedes externe Messgerät arbeitet mit diesem Zahlenformat!

Andere Lösungen:
- In LabVIEW die Zahlen mit einem Punkt als Dezimaltrennzeichen formatieren ("%.;")
- Ein anderes Trennzeichen für die csv-Dateien verwenden, üblich sind auch TAB oder ;

Und wie bestimmt schon mal gesagt: Ein VI lässt sich wesentlich einfacher debuggen als ein Bild…
So, hab mich nochmals daran gewagt und beides ausprobiert. (Erstens die regionale Einstellungen geändert und zweitens im VI per Format-Syntax die Dezimalkommas in Punkte umgetauscht, damit die Kommas in der CSV Datei zum Seperieren der Daten benutzt werden können.)

Windows 7 installiert.
Systemsteuerung -> Region und Sprache -> Formate -> Weitere Einstellungen -> Dezimaltrennung "." und Symbol für Zifferngruppierung "," -> Ok.

Zweiteres kannst du in meinem kleinen TestVI anschauen.

Funktioniert leider beides nicht. :/ Hab mich wieder daran orientiert:
https://decibel.ni.com/content/docs/DOC-36448

Zitat:
Zitat:Weitere Erläuterungen zum Blockschaltbild
Der Dateninput (rosa Wire von oben links) hat folgenden Datentyp:
1D-Array (Kette von Datensätzen)
Einzelner Datensatz: 1D-Array (Jedes Array-Glied entspricht einer Messgröße)
Ich sehe keine "Ketten von Datensätzen".
Ich sehe da ein 1D-Array of Cluster of 1D-Array of Waveform. So sollte es dir auch die Kontexthilfe anzeigen!
Das war das, was ich ausdrücken wollte. Ein Array sind für mich eine Reihe (oder Kette) von Daten. Jede mit einem eigenen Index. Bei mehrdimensionalen Arrays muss man wohl eher Feld dazu sagen. Ich werd versuchen meine Wortwahl treffender zu formulieren.


Angehängte Datei(en)
10.0 .vi  Test_Datalog2.vi (Größe: 12,82 KB / Downloads: 161)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.12.2015, 17:00
Beitrag #27

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Hallo m.,

Zitat:Zweiteres kannst du in meinem kleinen TestVI anschauen. Funktioniert leider beides nicht.
Da sind ja auch ein paar Bugs drin:
   
(Nicht wundern über die roten Kreuze, hab gerade LV2015 installiert…)
- Wenn du dein "Header"-Array größer machst wie im bild, dann siehst du auch die doppelten Einträge. Müssen die sein?
- Wenn du ein String-Array an WriteSpreadsheetFile anschließt, dann ist ein Formatstring wie "%.;%f" Blödsinn. String kennen nur "%s"…
- Wenn du Zahlen speichern willst, musst du sie nicht zwingend "händisch" in Strings umwandeln, siehe Bild.
- Wenn du schon Zahlen nach String umwandelst, wieso hängst du dann an jede noch ein Komma dran? Und gibst dann zusätzlich beim WriteSpreadsheetFile nochmal das Komma an, was dort dann nochmal zwischen jedes Stringelement eingefügt wird!? Einmal reicht doch völlig aus!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2015, 11:03 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2015 11:32 von m.werle.)
Beitrag #28

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Datalogging CSV-Format mittels WriteSpreadsheetFile, Probleme mit Spalten füllen

Ups, ja das Header-Array ist ausversehen vermurkst.

Formatstring "%.;%f" brauche ich also nur, wenn ich Zahlen (z.B: DBL) über FormatValue in Strings verwandeln möchte. Wollte als Dezimales Trennzeichen den Punkt einführen, damit ich Komma als Delimiter benutzen kann. Leider hatte ich ein gewisses Verständnisproblem, was dieser Delimiter denn macht oder ist.

Ziel:
Ich möchte einen Wert je Spalte haben (Anzahl: 11 Werte), im Header sind diese benannt, später in der Schleife (N müsste 11 statt 10 sein), werden die Werte dann im Test-VI zufällig generiert und geloggt.

Versuchte Umsetzung:
Ich dachte der Delimiter(\t)-Input des WriteSpreadsheetFile (in meinem Falle String: ",") gibt an, bei welchem Stringsymbol ich in die nächste Spalte springe. Deshalb habe ich mein 1D-String-Array so aufgebaut, dass alle Messwerte mit einem Komma abgetrennt bei Index 0 im 1D-String-Array liegen.

LabviewHelp:
Zitat:delimiter is the character or string of characters to use to separate fields in the spreadsheet file. For example, a value of , (comma) specifies a single comma as the delimiter. The default is \t, which specifies a single tab character as the delimiter.

Wenn ich Daten ins 1D-String-Array beim nächsthöheren Index einfüge, landen diese durch WriteSpreadsheetFile ja in der nächsten Zeile.


Wie schreibe ich Daten in verschiedene Spalten einer .csv-Datei mithilfe von WriteSpreadsheetFile?

Ahrg! Ahrg1
Write Multiple Columns With Write to Spreadsheet File VI
https://decibel.ni.com/content/docs/DOC-36448
Zitat: 1. Create column labels by creating a String array and putting the column labels into the first element of the array. Write this array into a spreadsheet file with the Write to Spreadsheet File VI. Set the Transpose value to True.

2. Convert data for each column into Strings and append them. Delimit each data value with a comma (for CSV files) or tabs (for tab-delimited files). If using a loop where one set of data is acquired in each iteration of the loop, only one appended string is needed. Otherwise, several appended strings will be needed.

3. Insert the appended string(s) into a 1D String array.

4. Write the 1D String array into the spreadsheet with the Write to Spreadsheet File VI. Set the Append and Transpose values to True.
1. Check, Alle Spaltenbezeichnungen sind im ersten Index des 1D-String-Array für den Header. Wie im Bild im Link sind alle Bezeichnungen durch Kommas getrennt.
2. Check Jedes Datenpaket (für jede Zeile) besteht aus einem String. Jeder Wert ist mit einem Komma vom nächsten getrennt.
3. Check Dieser String wird zu einem 1D-String-Array umgewandelt. Der String liegt beim ersten Index, der Rest ist leer.
4. Check ... mag trotzdem nicht funktionieren. Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2015, 11:41
Beitrag #29

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Wall
Hab die CSV-Datei mal mit OpenOffice geöffnet. Voilà, alles wie gewollt. Sad
Nur in Excel werden die Kommas in der CSV-Datei ignoriert und alles in eine Spalte gepackt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2015, 12:06
Beitrag #30

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
Hallo m.,

Excel hat da gewisse Grundeinstellungen:
- wenn ich mit csv-Dateien arbeite, verwende ich das Semikolon als Trennzeichen. Damit hat Excel nie Probleme: dies entspricht dem, was Excel bei "Speichern als…" mit der Vorgabe "CSV, trennzeichengetrennt" erzeugt!
- wenn ich mit txt-Dateien arbeite, verwende ich das TAB als Trennzeichen. Damit hat Excel nie Probleme: dies entspricht dem, was Excel bei "Speichern als" als "TXT-Datei" erzeugt…

Manchmal hilft es ja, die Anleitung/Hilfe zu Programmen zu lesen! Big Grin

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
  Signal-Speicherung mit definierter Messdauer gifo 27 16.269 25.11.2015 14:03
Letzter Beitrag: gifo
  Echtzeit graphische Darstellung der Daten und Speicherung auf Kommando nusser 44 28.649 25.02.2014 11:31
Letzter Beitrag: nusser
  Simultane Datenerfassung +Speicherung mit Trigger NI PXI 5102 Sg. Neuling 2 4.343 19.04.2013 14:13
Letzter Beitrag: Sg. Neuling
  Speicherung eines Triggersignales mit TDMS-Dateimonitor pwgt90 0 3.172 29.03.2012 08:56
Letzter Beitrag: pwgt90
  Messwerterfassung und Speicherung bronko 13 11.965 24.03.2011 12:38
Letzter Beitrag: GerdW
  Genaue Zeiterfassung und -speicherung zählergestützter Messungen homunculus87 2 8.823 14.02.2011 22:26
Letzter Beitrag: homunculus87

Gehe zu: