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 

Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte



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!

19.10.2010, 22:10
Beitrag #1

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
Schönen guten Abend,


Vielleicht ist mein Problem innerhalb von 2 Sekunden gelöst, aber ich sitze hier im Labor und mein Gehirn ist fritiert - mit anderen Worten
ich bekomme keinen graden Gedanken mehr raus.


Ich habe ein PXIe System mit zwei 8-Kanal A/D Wandlerkarten (NI-4300).
Nun möchte ich von jeder Karte jeweils die ersten 6 A/D Wandler (Kanäle ai0:5) mit 10kHz abtasten und die Daten sowohl in Echtzeit
in einem (bzw. zwei verschiedenen) Graphen anzeigen (Zeitachse muss mit den Abtastzeitpunkten übereinstimmen) als auch in einem Array abspeichern,
da ich die Daten nach Ende der Aufzeichnung für (Offline-)Berechnungen benötige.
Die Aufnahmedauer ist nicht fest. Es wird später solange aufgezeichnet, wie ein Triggersignal HIGH ist.


Für die Aufzeichnung von einem Kanal habe ich die VI - "PXI-1Kanal" angehängt. Sie funktioniert einwandfrei. Wenn ich die Vi starte sehe ich Echtzeitdaten, wenn ich "Stopp" drücke bekomme ich die gespeicherten Werte aus der While-Schleife übergeben und sie werden in dem unteren Graphen
richtig angezeigt. (siehe Bild 1)


So nun habe ich das ganze für n-Kanäle abgeändert in der VI-"PXI-NKanal". Nur bekomme ich da weder fortlaufend die Echtzeitdaten angezeigt noch werden sie fortlaufend gespeichert. Ich bekomme nur ein ganz kleines Fenster angezeigt, das er immer wieder überschreibt. (siehe Bild 2)


Als ein Problem habe ich schon ausgemacht, dass die Daten in meine VI wohl fortlaufend in Spalten und nicht in Zeilen gespeichert werden. Ich kann das Array aber nicht im laufenden Betrieb, bei jedem Schleifendurchlauf transponieren. Das macht der Rechner nicht mit bzw. LabVIEW nicht mit.


Wie kann ich das Problem lösen? Geht es vielleicht ganz anders?

Lv86_img


Angehängte Datei(en) Thumbnail(s)
       

Sonstige .vi  PXI_1Kanal.vi (Größe: 23,53 KB / Downloads: 419)

Sonstige .vi  PXI_NKanal.vi (Größe: 1,32 MB / Downloads: 273)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.10.2010, 22:59
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
' schrieb:Vielleicht ist mein Problem innerhalb von 2 Sekunden gelöst, aber ich sitze hier im Labor und mein Gehirn ist fritiert - mit anderen Worten
ich bekomme keinen graden Gedanken mehr raus.
Du sitzt aber noch spät im Labor. Wenn du keinen geraden Gedanken mehr herausbekommst, empfehle ich dringend eine Pause.;)Vielleicht sogar eine mehrstündige...
' schrieb:Ich habe ein PXIe System mit zwei 8-Kanal A/D Wandlerkarten (NI-4300).
Nun möchte ich von jeder Karte jeweils die ersten 6 A/D Wandler (Kanäle ai0:5) mit 10kHz abtasten und die Daten sowohl in Echtzeit
in einem (bzw. zwei verschiedenen) Graphen anzeigen (Zeitachse muss mit den Abtastzeitpunkten übereinstimmen) als auch in einem Array abspeichern,
da ich die Daten nach Ende der Aufzeichnung für (Offline-)Berechnungen benötige.
Die Aufnahmedauer ist nicht fest. Es wird später solange aufgezeichnet, wie ein Triggersignal HIGH ist.
Ich hoffe, die Zeitdauer, die das Triggersignal HIGH ist, bewegt sich nur im Sekundenrahmen? Ansonsten sammelst du da heftigst Daten an.
10 kHz bei sechs Kanälen, das sind 60.000 Daten pro Sekunde. Und so wie dein Programm ist, werden die auch alle im Graphen angezeigt. Nach mehr als 1 Minute wird der heftigst in die Knie gehen, und das Update im FP wird zäh und langsam werden. Auch die dauernd nötige neue Speicheranforderung durch das "Build-Array" ist nicht gerade resourcenschonend, wenn wir in den Minutenrahmen geraten. Wenn es also um längere Messungen geht, solltest du dein Konzept überdenken und kontinuierlich mitspeichern.
' schrieb:Für die Aufzeichnung von einem Kanal habe ich die VI - "PXI-1Kanal" angehängt. Sie funktioniert einwandfrei. Wenn ich die Vi starte sehe ich Echtzeitdaten, wenn ich "Stopp" drücke bekomme ich die gespeicherten Werte aus der While-Schleife übergeben und sie werden in dem unteren Graphen
richtig angezeigt. (siehe Bild 1)
So nun habe ich das ganze für n-Kanäle abgeändert in der VI-"PXI-NKanal". Nur bekomme ich da weder fortlaufend die Echtzeitdaten angezeigt noch werden sie fortlaufend gespeichert. Ich bekomme nur ein ganz kleines Fenster angezeigt, das er immer wieder überschreibt. (siehe Bild 2)
Als ein Problem habe ich schon ausgemacht, dass die Daten in meine VI wohl fortlaufend in Spalten und nicht in Zeilen gespeichert werden. Ich kann das Array aber nicht im laufenden Betrieb, bei jedem Schleifendurchlauf transponieren.
Doch, das kannst du. Transponieren ist in LabVIEW keine "zeitaufwändige" Operation. In Wahrheit wird das Array nämlich im Speicher gar neu kopiert.
Alternativ kannst du auch auf deine Graphen gehen, Rechtsklick mit der Maus->Option "Transpose Array" aktivieren, dann werden Zeilen und Spalten der 2D-Arrays für die Darstellung getauscht. In deinem VI-Upload werden aktuell nämlich 1000 Plots dargestellt, und das ist alles andere als ressourcensparend.

Gute Nacht,
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
19.10.2010, 23:15
Beitrag #3

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
Ich sitze hier nicht wirklich freiwillig, aber was sind schon 16 Stunden Arbeitstage wenn man noch jung ist Dry

Die Aufnahmedauer wird vermutlich maximal 30 Sekunden dauern und ich zeichne sogar 12 Kanäle synchron auf (mit 12 seperaten A/D Wandlern).
Der Datenstrom sollte aber eigentlich handlebar sein. Bei maximaler Abtastgeschwindigkeit von 250kS/s und wenn man pro Datenwert von 2byte Overhead ausgeht sind das "nur" ca. 11MB die pro Sekunde an Daten entstehen. Ich betreibe ja kein Oszilloskop im GS BereichSmile


Man mag es kaum Glauben nach einem Kaffee habe ich mal ein einer alten VI geschaut und das Problem wie folgt gelöst. Einfach mal das "build array" gegen "insert to array ersetzt" und den Schleifeniterationszähler an den Spaltenindex gelegt.
Um die Daten danach zu speichern habe ich das "write to spreadsheet file" verwendet und transponiere das Array da, damit es in einer csv abspeicherbar ist.


Das klappt auch. Jetzt bin ich natürlich gleich größenwahnsinnig geworden und habe noch eine Funktion eingebaut, damit man im laufenden Betrieb Kanäle ein und ausschalten kann.
Jetzt geht die Prozessorauslastung dann schon etwas hoch, ob ich das so lassen kann weiß ich nicht genau. Gäbe es da eine andere Möglichkeit das zu realisieren?

Optimal wäre sowieso, wenn ich 2 bzw. 4 Graphen zeichnen könnte, aber da müsste ich ja das erstelle 2d Array im laufenden Betrieb auseinanderpflücken. Ich weiß nicht wie sinnvoll das ist.




Hast du eine Idee das ganze Resourcenschonender zu machen? Wie gesagt, ich darf die Messung nicht unterbrechen, die muss absolut synchron und zeitgenau laufen. Die Werte brauche ich wie gesagt alle danach noch in einem Array, weil ich damit Berechnungen anstellen muss.


Hier nochmal die überarbeitete Version. Den Echtzeitgraphen zeiche ich jetzt auch nicht mehr als fortlaufenden Graphen, weil das eh Murks ist.


Wie du gehst schon schlafen? Jetzt ist nicht nur im Institut keiner mehr sondern auch nicht mehr im Internet - gibts ja nich Lol


Lv86_img


Angehängte Datei(en)
Sonstige .vi  PXI_NKanal.vi (Größe: 52,75 KB / Downloads: 354)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 00:48 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2010 20:10 von jg.)
Beitrag #4

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
Heureka! Also so ein bisschenWink

Das Aktivieren bzw. Deaktivieren der Plots sollte kein Problem mehr sein - Master-Slave sei dank.
Falls du kannst wäre es trotzdem cool, wenn du auf meine alten Fragen noch eingehen könntest. Ich bin immer offen für Vorschläge Dinge Resourcenschohnender zu programmieren.


Jetzt habe ich noch ein etwas anderes Problem. Ich weiß ohne Realdaten ist es etwas schwer nachzuvollziehen, aber wenn Ihr Euch das VI in in diesem Anhang anseht und dann einen Blick auf den Graph ganz unten, der die kompletten Offlinedaten zeigt, werft.
Mein Problem ist, dass bei einer Aufzeichnung die letzten Geschehnisse ganz links im Graphen abgebildet werden und die Ältesten ganz rechts.
Das ist natürlich mehr als suboptimal, wenn man, wie ich, einen zeitlich veränderlichen Vorgang erfassen möchte.

Leider fällt mir dazu jetzt irgendwie keine Lösung mehr ein. Ich glaub ich pack jetzt auch mal ein und mache mich auf den Heimweg. Würde mich freuen, wenn morgen jemand eine Idee zur Lösung hat. Dann kann ich das vlt. noch morgen früh einbauen um das Messsystem Testweise in Betrieb zu nehmen.


Gute NachtSmile

Lv86_img


Angehängte Datei(en)
Sonstige .vi  PXI_Test.vi (Größe: 31,6 KB / Downloads: 326)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 07:47
Beitrag #5

BsaiboT Offline
LVF-Stammgast
***


Beiträge: 449
Registriert seit: Nov 2009

2010
2007
kA

22459
Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
Ich konnte mir dein VI nicht anschauen, aber
' schrieb:Mein Problem ist, dass bei einer Aufzeichnung die letzten Geschehnisse ganz links im Graphen abgebildet werden und die Ältesten ganz rechts.
Das ist natürlich mehr als suboptimal, wenn man, wie ich, einen zeitlich veränderlichen Vorgang erfassen möchte.
Leider fällt mir dazu jetzt irgendwie keine Lösung mehr ein.
verstehe ich nicht.
Möchtest du von der allgemein üblichen Darstellung abweichen? Im Oszilloskop (und überall sonst auch) hast du auch die ältesten Messwerte ganz links und die jüngsten Werte rechts in der Darstellung.
Oder versuchst du uns zu sagen, dass du nicht das komplette Signal, sondern immer nur einen kleinen Ausschnitt angezeigt bekommen möchtest?

Grüsse,
Tobias
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 09:11
Beitrag #6

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
Ah da hat sich zu später Uhrzeit der Fehlerteufel eingeschlichenSmile

Mein Problem ist natürlich, dass ganz links die NEUSTEN Ereignisse stehen, also die jenigen, die zuletzt aufgezeichnet wurden und rechts im Graph sind die Ältesten Ereignisse.
D.h. noch einmal, dass der Anfang meines Graphen rechts ist, anstatt links wie bei z.B. einem Oszilloskop.

So stimmt es.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 20:09
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Kontinuierliche Datenerfassung m. Echtzeitgraph und Speichern der Werte
Dein Insert Into Array ist falsch.
Mach mer mal ein Beispiel hierzu:
Number of Samples steht aktuell auf 1000. Also hat nach dem ersten Durchlauf das Array "Offline-Daten" im Schieberegister eine Größe von 12x1000.
Du hast den Index der While-Schleife an das Insert-Into-Array angeschlossen.
Im zweiten Durchlauf ist der Index 1, es wird also in Spalte 1 des bestehenden Arrays das nächste 12x1000 Array eingefügt. Du willst das aber eigentlich hinten dranhängen.

Guckst du hier:
   

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Exclamation Datenerfassung mit DAQ-Assistent - Graph erfasst keine Werte HTWSaar 4 4.825 03.01.2019 12:16
Letzter Beitrag: GerdW
  Delay für kontinuierliche Datenerfassung zwingend? Philipp841 9 6.720 12.07.2018 10:27
Letzter Beitrag: GerdW
  Kontinuierliche Datenerfassung mit USB 6003 Tobolf 18 12.412 02.02.2017 16:54
Letzter Beitrag: GerdW
  Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung dieseldunst 5 6.602 24.06.2016 14:49
Letzter Beitrag: jg
  kontinuierliche Datenerfassung in Array speichern Jonas_02 2 4.920 04.09.2015 16:17
Letzter Beitrag: Trinitatis
  Kontinuierliche Messung Ringpuffer dbuckl 9 8.137 07.04.2015 09:19
Letzter Beitrag: dbuckl

Gehe zu: