Guten Tag zusammen,
seit rund zwei Stunden sitze ich an einem vermeintlich simplen Problem:
Ich habe einen Chart für dei Anzeige von 4 Temperaturen an einem Messaufbau. Nun möchte ich, dass der User später einstellen kann, wie lange die ältesten Werte zurückliegen sollen, die angezeigt werden, also die "Anzeigelänge" festlegen kann.
Dazu soll dann die aktuelle Systemzeit ganz rechts und die "aktuelle Systemzeit" - "Anzeigelänge" ganz links stehen.
Der User soll wenn möglich, nicht jedes Mal per Rechtsklick die Historienlänge einstellen müssen, sondern das einfach mit einem numerischen Element einstellen können.
Kann mir jemand helfen?
Gruß,
DT
Hallo DT,
die Historienlänge eines Charts ist nur in der Editierumgebung einstellbar. Willst du da mehr, bleibt dir immer noch ein Graph mit einer selbstprogrammierten Historie...
Danke Gerd, für die schnelle Antwort!
Leider bin ich ziemlicher Anfänger, wie genau kann ich eine Historie selbst programmieren? Meinst Du Minimum und Maximum per Eigenschaftsknoten festlgen? Das hatte ich schon einmal probiert, hat aber leider nicht so geklappt, wie ich wollte, da ich damit zwar Werte für Start und Ende festlegen kann, aber die Historienlänge dennoch so bleibt wie sie ist und der Chart anfängt zu flimmern und die Werte nicht stimmen.
Die Sache ist ganz einfach mit dem Signalverlaufsdiagramm lösbar, die mußt nicht alles glauben was die Leute so reden
. Die Historienlänge ist zwar fest, aber der Bereich den man im Diagramm sehen will, und auf den kommte es ja an, muß nicht identisch sein mit der Historienlänge. Die Historienlänge muß nur genügend groß gewählt werden, damit die größte Vergangenheit die man sehen will noch Platz hat. Der sichbare Bereich lässt sich dann mit Eigenschaftsknoten festlegen. Um etwas Verwirrung in das Ganze hineinzubringen, habe ich im Beispiel unten den Zeitbereich der X-Achse mit "Historienlänge" bezeichnet. Nicht vergessen: X-Autoskalierung ausschalten!
[
attachment=37774]
[
attachment=37775]
Hi Lucki,
Danke für die Antwort mit dem Beispiel! Die Sache ist ja überaschend einfach. Die Historienlänge habe ich jetzt mal auf 36000 festgelegt, sodass eine Stunde bei 10Hz Abtastrate dargestellt werden kann. Ist dieser Wert schon zu hoch oder ist das für einen 3 Jahre alten Rechner mit 2GB Ram noch ok? Wie sieht das aus, wenn ich 20 von solchen Diagrammen habe?
Und noch eine Frage: Ich habe noch nie mit einer Ereignisstruktur gearbeitet und deshalb die Eigenschaftsknoten direkt mit in die While-Schleife des Diagramms gesetzt. Ist das irgendwie nachteilig?
Gruß,
DT
Mistig Editierfunktion, also ein neuer Beitrag:
Noch etwas: Ich möchte die X-Achse gern mit der relativen Zeit skalieren, die seit Versuchsbeginn vergangen ist. Wenn ich aber einfach nur auf relative Zeit stelle, wird das Ganze so brechnet, als würde ein Messert pro Sekunde kommen. Dieser Wert ist aber variabel enstellbar. Wie kann ich das dem Diagramm sagen?
(20.12.2011 11:47 )DropTower schrieb: [ -> ]... Ist dieser Wert schon zu hoch oder ist das für einen 3 Jahre alten Rechner mit 2GB Ram noch ok? Wie sieht das aus, wenn ich 20 von solchen Diagrammen habe?
Keine Ahnung, und wieso soll ich das aus der Ferne diagnostizieren, wenn Du selbst das leicht ausprobieren kannst?
Zitat:Und noch eine Frage: Ich habe noch nie mit einer Ereignisstruktur gearbeitet und deshalb die Eigenschaftsknoten direkt mit in die While-Schleife des Diagramms gesetzt. Ist das irgendwie nachteilig?
Eigenschaftsknoten sind langsam, und man sollte den
unnötigen Aufruf in der zeitkritischen Haupschleife vermeiden. Also dafür sorgen, daß das dann nur bei Änderung "Historienlänge" geschieht, und nicht bei jedem Durchlauf.
Zitat:Noch etwas: Ich möchte die X-Achse gern mit der relativen Zeit skalieren, die seit Versuchsbeginn vergangen ist. Wenn ich aber einfach nur auf relative Zeit stelle, wird das Ganze so berechnet, als würde ein Messert pro Sekunde kommen. Dieser Wert ist aber variabel enstellbar. Wie kann ich das dem Diagramm sagen?
Da gibt es verschiedene Möglichkeiten: Zeitstempel korrigieren, In den Eigenschaften des Diagramms "Zeit ignorieren" einstellen, X-Offset ändern. Am besten du postest ein vorbereitetes Beispiel, ich trimme dir das dann so hin wie Du es haben möchtest.
Hi Lucki!
Der Urlaub ist zu Ende und ich konnte mich wieder dem Projekt widmen.
Vielen Dank für Deine hilfreichen Antworten!
Ereignisstrukturen sind mir jetzt recht klar geworden, die Leistungsfähigkeit des Rechners langt und die X-Achsenskalerung habe ich auch hinbekommen und zwar so:
Als X-Skalierungsfaktor habe ich den Kehrwert der Abtastrate (also den Abstand der eintreffenden Messwerte in Sekunden) genommen und schon gehts. Die Zeit ignorieren ging nicht, da ich DBL als Datentyp habe.
Leider habe ich aber ein neues vermeintlich einfaches Probem: Ich habe Registerkarten, deren Namen der User ändern kann. Nun möchte ich den Namen der Registerkarten auslesen. (Wie) Geht das? Bestimmt mit irgend einem Ereignisknoten, aber ich finde einfach nicht den richtigen.
Gruß,
DT