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 

Chart-History als Ringpuffer verwenden



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!

04.12.2009, 15:49 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2009 15:53 von dimitri84.)
Beitrag #1

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Chart-History als Ringpuffer verwenden
Einen wunderschönen Freitag Nachmittag,


ich habe heute eine ganze Weile nach einem passenden Ringpuffer-Konzept für mich gesucht und wohl auch gefunden. Als ich fertig war ist mir die Idee gekommen, dass man vielleicht einfach die Historie vom Diagramm nehmen könnte. Beim ersten Testen musste ich aber festestellen, dass hier von Historie (im Sinne von 'Vergangenes'Wink nicht die Rede sein kann. Denn die Signalblöcke der Historie sind genauso lang wie DAQrd sie mir ausspuckt und keinen Deut länger. Ich dachte, wenn ich z.B. Historielänge 512 einstelle, dass ich dann auch irgendwann 512er Blöcke erhalte. Anscheinend habe ich da was falsch verstanden. Wie ist das?

Das erstmal dazu. Nun zu meinem Ringpuffer-Konzept, dass ich letzten Endes nachgebaut habe:
   
Lv85_img
Sonstige .vi  Ringpuffer_emg_test.vi (Größe: 20,21 KB / Downloads: 273)


Das arbeitet genauso wie ich's haben will. Glaub ich zumindest. Aber ich bekomm's einfach nicht hin das ganze in meine DAQ-Test-Umgebung einzubinden:
   
Lv85_img
Sonstige .vi  BSP_DAQ_ringpuffer.vi (Größe: 38,59 KB / Downloads: 240)


Ein Satz zum Verwendungszweck: Ich habe pro Iteration zuwenig Samples um ein gescheites Spektrum darzustellen.

Gruß dimitri

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.12.2009, 17:35
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Chart-History als Ringpuffer verwenden
' schrieb:wenn ich z.B. Historielänge 512 einstelle, dass ich dann auch irgendwann 512er Blöcke erhalte
Historenlänge 512 heißt, dass pro Kanal 512 Samples gespeichert werden. Du erhälst also genau einen Block mit 512 Samples, nicht mehrere Blöcke zu je 512. Die Historie ist schon ein Schieberegister, halt nur auf die Anzahl geschränkt, die angegeben wird.

Zitat:Aber ich bekomm's einfach nicht hin das ganze in meine DAQ-Test-Umgebung einzubinden:
Ich schätze mal so:


Angehängte Datei(en) Thumbnail(s)
   

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
04.12.2009, 17:47 (Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2009 10:16 von dimitri84.)
Beitrag #3

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Chart-History als Ringpuffer verwenden
' schrieb:Du erhälst also genau einen Block mit 512 Samples, nicht mehrere Blöcke zu je 512. Die Historie ist schon ein Schieberegister, halt nur auf die Anzahl geschränkt, die angegeben wird.
Das ist klar. Ich hab' den Plural 'Blöcke' verwendet, weil ich ja viele Iterationen habe; hab' mich da blöd ausgedrückt.

Nur war da so: DAQrd war auf 64 Samples eingestellt. Historie war auf 512 eingestellt. Trotzdem habe ich von der Historie immer nur konstant 64er Blöcke bekommen. Ich habe aber erwartet von der Historie nach genug Durchläufen auch 512er Blöcke zu bekommen.

Zitat:Ich schätze mal so:
Ich probier's am Monatg aus. Sieht aber gut aus.


EDIT: Oder kann ich den Puffer vielleicht direkt als Signalverlauf initiieren und mir so die Umwandlung komplett sparen?

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2009, 08:49
Beitrag #4

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Chart-History als Ringpuffer verwenden
Zitat:[Bild: post-204-1259944483_thumb.png]

So klappt's doch nicht. Das "Array nach Cluster" nimmt nur 4 Elemente mit.

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2009, 09:02
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Chart-History als Ringpuffer verwenden
Irgendwie verstehe ich deine Initialisierung deines Ringpuffers nicht.

Du erstellst ein Array mit 4 Elementen, wandelst das in einen Cluster, und dann daraus wieder ein 512er Array. Dein Ringpuffer ist also ein Array of Cluster, Cluster bestehend aus 4 Double.

Aus DAQmx bekommst du (bei 4 Kanälen) 4 Arrays raus. Somit bietet sich als Ringpuffer doch viel eher ein 2D-Array an, oder halt ein Cluster of Array. So, wie du das jetzt aufgebaut hast, musst du jedes Array-Element einzeln in deinen Ringpuffer einbauen, halte ich für sehr umständlich.

Gruß, Jens

P.S.: Bei deinem Bsp. Ringpuffer_emg_test.vi stimmt doch auch was nicht, du übernimmst von der (simulierten) Datenerfassung immer nur den ersten Messpunkt in den Ringpuffer.

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
07.12.2009, 09:31
Beitrag #6

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Chart-History als Ringpuffer verwenden
' schrieb:Somit bietet sich als Ringpuffer doch viel eher ein 2D-Array an, ...
Ja so versuch ich das auch gerade mit 'nem 2d Array.
   
Alleine klappts so. Aber in dem DAQ VI fehlt mir die Übersicht. Soll ich transponieren oder nicht. Soll ich beim Array Indizieren den Zeilen oder Spalteneingang nehmen. Blödes Rumraten Dry

Zitat:P.S.: Bei deinem Bsp. Ringpuffer_emg_test.vi stimmt doch auch was nicht, du übernimmst von der (simulierten) Datenerfassung immer nur den ersten Messpunkt in den Ringpuffer.
Ja da stimmt noch sehr wenig. Ich weiß das VI "1d-Array rotieren" nicht besser einzusetzen als elementweise. (Glaub' ich versteh' nicht was du meinst.)

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
07.12.2009, 09:39 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2009 09:57 von jg.)
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Chart-History als Ringpuffer verwenden
Mal ein paar Hinweise zu deinem letzten Screenshot:

1. 2D-Array Initalisierung ist gut so, jeder Kanal stellt eine Zeile da. Somit musst du auch immer Zeilen ersetzen.
2. Im Normalfall erst rotieren, dann ersetzen.
3. Nicht nur um 1 Element rotieren, sondern um so viele Elemente, wie du in der Datenerfassung pro Lese-Vorgang erhalten hast (in Screenshot also 3).
4. Entsprechend musst du die unteren Shift-Register anders berechnen, aber das darfst du selber machen.

Gruß, Jens

EDIT:
5. Bei Replace-Array-Subset beim 2D-Array wirst du nicht drumherumkommen, jedes Element einzeln zu ersetzen, da diese Funktion bei 2D-Arrays entweder eine gesamte Zeile, eine gesamte Spalte oder ein Element ersetzen will...

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
07.12.2009, 09:46
Beitrag #8

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Chart-History als Ringpuffer verwenden
' schrieb:So klappt's doch nicht. Das "Array nach Cluster" nimmt nur 4 Elemente mit.
Hinweis:
Kontextmenü des Elementes "Array nach Cluster" öffnen und Anzahl der Clusterelemete eingeben.

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
07.12.2009, 10:11 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2009 09:48 von dimitri84.)
Beitrag #9

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Chart-History als Ringpuffer verwenden
' schrieb:Hinweis:
Kontextmenü des Elementes "Array nach Cluster" öffnen und Anzahl der Clusterelemete eingeben.
So bringt mir das nix, weil zum einen die Puffergröße auf 256 Elemente begrenzt wäre und man sie außerdem nicht dynamisch einstellen könnte.

@Jens ... Ich denke ich hab's jetzt. Vielen Dank für die Hinweise.
   

PS Falls man was "kürzen" kann bin gerne für Vorschläge zu haben.

Gruß dimitri


EDIT: Wie ist denn das eigentlich mit meiner ursprünglichen Idee mit der Chart History? Ist das ein Bug, dass die Länge, die ich erhalte, nicht der mit übereinstimmt, die ich einstelle?

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2009, 10:21
Beitrag #10

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Chart-History als Ringpuffer verwenden
' schrieb:PS Falls man was "kürzen" kann bin gerne für Vorschläge zu haben.
Dazu bitte VI hochladen, denn ich werde deinen Screenshot nicht nachprogrammieren.Wink

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  History.Revision geht nicht in EXEs? gottfried 10 8.263 28.03.2013 11:25
Letzter Beitrag: rolfk
  Ringpuffer - aber wie? dommae 17 19.152 19.05.2010 14:07
Letzter Beitrag: Ome
  Text-Eingabe mit History Lucki 17 12.553 03.09.2008 18:37
Letzter Beitrag: Lucki
  Array-Ringpuffer in While eg 9 12.112 21.03.2007 17:35
Letzter Beitrag: eg

Gehe zu: