27.07.2010, 16:13
(Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2010 16:13 von Matze.)
Beitrag #1
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Diagramm-Methode "Bild lesen"
Hallo,
ich speichere das Bild eines Signalverlaufsdiagramms über den Methodenknoten "Bild lesen".
Meist klappt das wie gewünscht, doch ab und zu sind die Hilfslinien vor den Messkurven.
Ich dachte erst, es könnte sich um eine Race-Condition handeln, aber das kann nicht sein, da ich sämtliche Fehlercluster seriell verdrahtet habe.
Womit kann das zusammenhängen?
|
|
|
27.07.2010, 18:07
Beitrag #2
|
|
|
28.07.2010, 05:25
Beitrag #3
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Diagramm-Methode "Bild lesen"
Sehr gute Frage, darauf habe ich nicht geachtet.
Falls das heute nochmals auftreten sollte, werde ich Bescheid geben.
Es könnte jedoch sein, dass es auf dem Frontpanel nicht so aussieht, wie oben angehängt.
|
|
|
28.07.2010, 08:36
Beitrag #4
|
IchSelbst
LVF-Guru
Beiträge: 3.689
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Diagramm-Methode "Bild lesen"
' schrieb:Es könnte jedoch sein, dass es auf dem Frontpanel nicht so aussieht, wie oben angehängt.
Dann könnte folgendes passieren. Was natürlich rein spekulativ, aber möglich ist.
Du tust ja vor Bild holen den Graphen skalieren. Das aber dauert ein Weilchen - und geschieht im Hindergrund. Hintergrund heißt, dass in dem Moment, in dem das Skalier-Property an sich beendet wird, die Skalierung selbst noch nicht beendet ist. Die dauert noch etwas länger. Skalieren könnte nun aus mehreren Schritten bestehen. Letzter Schritt wäre z.B. die Reihenfolge Graph-Raster wieder zu berichtigen.
Wenn du das Bild nun holst bevor der letzte Schritt getan ist, ist das Bild falsch - das FP aber nicht.
Lösung, falls es denn so sein sollte: 250ms warten.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
28.07.2010, 10:34
(Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2010 11:03 von Matze.)
Beitrag #5
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Diagramm-Methode "Bild lesen"
Ich habe wirklich alles probiert, aber der Fehler tritt aktuell nicht mehr auf.
Wenn es wirklich so ist, dass die Skalierung im Hintergrund läuft, ist das natürlich schlecht. Das widerspricht meiner Meinung nach dem Datenflussprinzip, denn dafür habe ich den Fehlercluster.
Was für deine Überlegung spricht ist folgendes:
Ganz selten fehlt die y-Achse, doch meistens ist sie da.
Dann werde ich eine Wartezeit einbauen, danke. Nur wenn das mal länger als 250 ms dauern sollte, tritt das Problem wieder auf ...
Edit: Kommando zurück: Selbst bei 500 ms tritt das Problem auf. Natürlich hatte ich das Bild-Speichern-VI gerade zu und konnte nicht sehen, ob das im Frontpanel auch so aussieht.
Hier noch ein Screenshot vom Blockdiagramm (ja, es ist sehr breit):
"Wait" enthält nur einen Warten-VI mit Fehleranschlüssen.
Mir wäre wichtig, dass das zuverlässig läuft.
|
|
|
28.07.2010, 11:27
(Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2010 11:31 von IchSelbst.)
Beitrag #6
|
IchSelbst
LVF-Guru
Beiträge: 3.689
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Diagramm-Methode "Bild lesen"
' schrieb:Wenn es wirklich so ist, dass die Skalierung im Hintergrund läuft, ist das natürlich schlecht. Das widerspricht meiner Meinung nach dem Datenflussprinzip, denn dafür habe ich den Fehlercluster.
Das muss nicht unbedingt dem Datenfluss widersprechen.
Ein Graph ist hier wie ein Standalone-Objekt zu sehen, das seine Daten/Befehle per Queue bekommt. Warum die Applikation anhalten, wenn es lediglich darum geht ein FP zu refreshen? Das kann nebenbei geschehen. Natürlich muss der Graph beachten, dass Daten etc. konsistent bleiben. Ein FP-Refresh muss aber nicht zwangsläufig unter Konsistent-Erhaltung fallen.
Zitat:Ganz selten fehlt die y-Achse, doch meistens ist sie da.
Das kommt dann wie folgt: Neue Daten/Befehle (per Queue) an den Graph. Der ist aber gerade beim Refresh der Achsen, muss nun feststellen, dass dieser Refresh sich mit einem neuen Befehl (oder neuen Daten) beißt - und muss den Refresh zwangsweise abbrechen.
Zitat:Natürlich hatte ich das Bild-Speichern-VI gerade zu und konnte nicht sehen, ob das im Frontpanel auch so aussieht.
Schade.
Zitat:Mir wäre wichtig, dass das zuverlässig läuft.
Was natürlich schwierig wird, wenn das Graph-Objekt diverse Bugs hat.
Wenn das Problem relativ schnell reproduzierbar ist, könntest du folgendes probieren: Einfach das Skalieren (bei Nichterfolg dann weitere Funktionen) weglassen und kucken ob der Fehler noch immer vorhanden ist.
Noch was zum Probieren:
Mach mal den FarbeFeinGitter-Zugriff ganz an den Angang der Verarbeitungskette.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
28.07.2010, 11:47
(Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2010 11:53 von Matze.)
Beitrag #7
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Diagramm-Methode "Bild lesen"
Hallo,
am Feingitter liegt es nicht, da ich das ers heute hinzugefügt habe.
Gibt es evtl. einen Eigenschafts- oder Methodenknoten wie "Frontpanel refreshed"?
Es ist nun reproduzierbar! Also schon ein Fortschritt, da so die Ursachensuche vernünftig beginnen kann.
Wenn ich das Frontpanel des Bild-Speichern-VIs geöffnet habe, dann ist das DIagramm immer korrekt. Wenn ich dieses geschlossen habe, immer falsch (= Plots hinter dem Gitter bzw. fehlende Achse).
Ich vermute, dass bei geöffnetem Frontpanel ein "Refresh" o.ä. gesendet wird und sonst nicht.
Daher habe ich das Diagramm im Frontpanel auch nie erwischt.
Selbst wenn ich alles entferne bis auf "Bild lesen" tritt der Fehler auf. Also Skalierung, Wertzuweisung etc. werden nicht durchgeführt.
Nachtrag: In der Hilfe steht dazu sogar etwas:
Zitat:Wenn ein Frontpanel nicht sichtbar ist, werden die Werte in den Frontpanel-Objekten auch nicht im Hintergrund angepasst. Beim Aufruf eines VIs, dessen Frontpanel nicht angezeigt wird, und auf das die Methode "Bild lesen" angewandt wird, um eine Abbildung von Frontpanel-Elementen zu erstellen, zeigt das Bild keine Wertänderungen an, die während der VI-Ausführung aufgetreten sind.
Wenn die Abbildung die neuesten Werte enthalten soll, öffnen Sie daher das Frontpanel. Wenn das Frontpanel nicht angezeigt werden soll, Wertänderungen jedoch auf der Abbildung sichtbar sein sollen, können Sie an irgendeinem Frontpanel-Element im Blockdiagramm des betreffenden VIs einen Eigenschaftsknoten erzeugen.
Welchen Eigenschaftsknoten soll ich denn verwenden? Eigentlich nutze ich doch viele davon.
|
|
|
28.07.2010, 11:52
Beitrag #8
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
Diagramm-Methode "Bild lesen"
Hallo Mechatroniker,
damit hast du heute wieder etwas dazugelernt:
LabVIEW refresht Frontpanel-Elemente von nicht geöffneten Frontpaneln nur sehr ungern/zögerlich. Das ist durchaus so gewollt. Wieso Rechenzeit für etwas verschwenden, was eh nicht zu sehen ist?
Lösung:
Frontpanel öffnen, aber in den nicht sichtbaren Bereich deines Screens verschieben. Oder mal "minimized"/"hidden" probieren. Also irgendetwas, was das Frontpanel zwar öffnet, aber nicht sichtbar werden lässt...
|
|
|
28.07.2010, 11:55
Beitrag #9
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Diagramm-Methode "Bild lesen"
Hallo Gerd,
vollkommen richtig. Versteckte Frontpanelelemente zu aktualisieren wäre verschwendete Rechenzeit. Doch bei einem direkten Zugriff wie "Bild lesen" hätte ich eine Aktualisierung erwartet.
Das mit dem nicht sichtbaren Bereich gefällt mir nicht.
Ich würde es gerne über den in der Hilfedatei angesprochenen Eigenschaftsknoten lösen. Nur ist die Frage: Wie?
|
|
|
| |