24.04.2013, 12:24
(Dieser Beitrag wurde zuletzt bearbeitet: 24.04.2013 12:38 von eb.)
Beitrag #2
|
eb
LVF-Lernwilliger
Beiträge: 292
Registriert seit: Mar 2008
2014
2008
EN
12xxx
Deutschland
|
RE: Signalverlaufsgraph über die letzten 24h
Hallo,
statt eines Graphen kannst du einfach ein Signalverlaufsdiagramm verwenden. Dann mit Rechtsklick auf das Diagramm und unter Historienlänge die Anzahl der Datenpunkte einstellen. Fertig.
Das wäre das einfachste...
Gruß
Und wenn du schon am Quellcode arbeitest, hier noch ein paar VorschlägeFragen:
- müssen die ganzen Lokalen Variablen sein? (sie bergen die Gefahr der "Race Conditions")
- Bitte richte die Elemente ein wenig aneinander aus (oft als "Aufräumen" bezeichnet); es gibt auch eine Funktion dazu, die man ausprobieren kann (dieser Besen mit dem LabVIEW-Addierer oben rechts)
- Wenn du ein Array indizieren willst, und dabei sowieso von Index 0 bis n gehst, brauchst du keine Konstanten anschließen, siehe Snippet
Übrigens, bin auch Maschinenbauer, und komme halbwegs mit LV klar. Also keine Scheu
Bei Fragen einfach Fragen.
Gruß
|
|
|
24.04.2013, 17:49
Beitrag #3
|
derkukla
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Apr 2013
2009
2013
DE
|
RE: Signalverlaufsgraph über die letzten 24h
Danke schon mal für deinen Tipp, aber habe ich da nicht unendlich große Datenmengen? Die Abtastrate der Messkarte sind 25 Microsekunden, da kommt in 24h ja schon einiges zusammen. Oder kann ich bei dem Diagramm auch einstellen das er alle 5 min ein wert nimmt und mir entsprechend 288 anzeigt?
Die lokalen Variablen müssen sein, da es einen solchen Filmstreifen für den Hinweg und einen für den Rückweg gibt, man aber logischer Weise nicht jede Anzeige doppelt haben möchte. Die Variablen stellen nur Anzeigeelemente dar.
Das mit dem Array muss glaube ich doch so sein, da ich ja von der Messkarte die Werte für alle Sensoren bekomme und die dann in ein Array schreibe welches dann jeden Sensor an einer Position speichert. Und dann muss ich doch wenn ich die einzelnen Sensoren separat anzeigen möchte die Position des Array mit dem entsprechenden Wert anzeigen lassen, oder habe ich da was falsch verstanden?
Das mit dem aufräumen ist ein guter Tipp so was habe ich schon gesucht, sah vorher noch schlimmer aus aber von Hand das ganze ohne Einrasten zu machen ist doch sehr langwierig.
|
|
|
26.04.2013, 08:49
Beitrag #4
|
eb
LVF-Lernwilliger
Beiträge: 292
Registriert seit: Mar 2008
2014
2008
EN
12xxx
Deutschland
|
RE: Signalverlaufsgraph über die letzten 24h
Guten Morgen,
also ich hab nicht alles verstanden, von dem was du geschrieben hast, aber ich antworte mal so gut ich kann:
25µs entspricht ja 40kHz. Das sind eindeutig zu viele Daten für ein Plot, wenn dieser 24h anzeigen soll. Sind ja immerhin ca. 3,5Milliarden Werte! Ein Dbl hat 8Byte, also wären das ca. 27,5GB an Daten für einen Kanal (unkomprimiert).
Die Frage ist doch, wofür brauchst du diese hohe Abtastrate. Wenn du sie z.B. nur für eine OnlineAnalyse brauchst, dann würde ich sie zum Speichern verringern, so, wie du selbst schon vorgeschlagen hast: Indem man einfach X Werte zu einem Wert mittelt. Oder kannst du sogar einfach die Abtastrate herunter setzen?
In einem Diagramm sind eh nie mehr Datenpunkte sichtbar, als es Pixel breit ist. Daher würde ich entweder:
- die gemittelten Datenpunkte (1Wert/Minute z.B.) ODER
- die letze "hochgenaue" Analyse (sofern es sowas bei dir gibt) in hoher Auflösung darstellen.
Zu dem Signalverlaufsdiagramm noch ein Satz: Die Historienlänge sagt, wie viele Werte in den "Puffer" des Diagramms passen und dargestellt werden können. Wenn der Puffer voll ist, dann wird der älteste Wert entfernt, um Platz für den neuen zu machen.
Zu dem Snippet von mir mit dem einfachen Indexieren von Arrays: Probier es doch einfach mal aus! Die drei dargstellten Varianten machen alle das gleiche! Du musst die "Adresse" im Array nicht angeben, wenn du eh von 0..n-1 Anschlüsse aufziehst.
Zum Aufräumen: Ich glaube in neuen LabVIEW-Versionen kann man auch Teilbereiche aufräumen lassen, indem man vorher die Elemente markiert und dann erst den Button klickt.
Es wäre außerdem immernoch hilfreich, deinen Quellcode zu sehen. Du könntest deine hochgeheimen SubVI's ja einfach nicht hochladen oder entsprechende Bereiche aus dem Blockdiagramm entfernen.
Gruß
|
|
|
29.04.2013, 13:57
Beitrag #5
|
derkukla
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Apr 2013
2009
2013
DE
|
RE: Signalverlaufsgraph über die letzten 24h
Das das zu viele Daten sind ist mir auch klar, deshalb will ich ja alle 5min einen Wert abgreifen und im Diagramm darstellen. Das sind dann pro Sensor 288 Daten in 24h, das sollte im Rahmen liegen. Dazu brauche ich eine Schleife mit 5min Wartezeit. Die ein Wert pro Sensor abgreift und in eine Schlange mit 288 Einträgen speichert. Diese Schlangen müsste ich dann zusammenführen und als Diagramm, am besten mit der Uhrzeit zu der der Wert erfasst wurde, darstellen. Aber wie ich das genau umsetzten soll erschließt sich mir nicht wirklich. Das VI darf ich nicht hochladen. Aber das Bild zeigt den Interessanten Bereich, der Rest ist uninteressant für mein Problem.
|
|
|
30.04.2013, 08:20
(Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2013 08:21 von Schwand.)
Beitrag #6
|
|
|
07.05.2013, 12:17
Beitrag #7
|
derkukla
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Apr 2013
2009
2013
DE
|
RE: Signalverlaufsgraph über die letzten 24h
Der Versuchsstand wird zur Zeit umgebaut, deshalb kann ich nichts ausprobieren.
@Schwand: habe ich bei deiner Lösung nicht immer nur einen Wert im Graph?
Ich wollte auch erst mal abklären ob man das was ich brauche realisieren kann, bevor ich mich da ewig einarbeite und es am ende so gar nicht geht.
Also nochmals die Anforderungen:
von 10 Sensoren deren Werte über eine Messkarte eingelesen werden. Soll im 5min Takt pro Sensor ein Wert ausgelesen werden. Dieser Wert soll dann für 24h gespeichert werden. So dass ich nach 24h Laufzeit immer die Werte der letzten 24h von jedem der 10 Sensoren in einem Diagramm sehe. Also 10 Kurven in einem Graph. Am besten mit der jeweiligen Uhrzeit zu der der Wert ausgelesen wurde.
Mein Ansatz:
Ich habe ja für jeden der 10 Werte schon eine Anzeige. Dieses Signal will ich abgreifen und in eine Schleife "leiten". Die Schleife speichert im 5min Takt 1 Wert in eine Schlange mit 288 Einträgen. Am besten wäre wenn jedem Wert dann noch Datum und Uhrzeit zugeordnet werden würde, dann müssten aber alle 10 Schleifen exakt Zeitgleich laufen. Dann sollte ich 10 Schlangen mit je maximal 288 Werten haben. Und diese 10 Schlangen sollen dann in ein Diagramm.
Wenn das einfacher geht nur raus damit. Ich hab von Informatik echt soviel Ahnung wie die Kuh vom Eierlegen.
|
|
|
07.05.2013, 20:13
Beitrag #8
|
|
|
08.05.2013, 14:24
(Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2013 15:11 von Lucki.)
Beitrag #9
|
|
|
| |