Hallo zusammen,
ich bin grade in meinem Code auf einen blöden Fehler gestoßen, der mich einiges an Zeit gekostet hat.
Anbei ein runtergebrochenes Beispiel VI.
Ich erwarte eine Zeitdauer von 2002 ms. Aber der Datenfluss umgeht das wait, sodass eine Zeitdauer von 2ms gemessen wird.
Ich habe zwar verschiedenste Lösungswege für das Problem gefunden aber ich finde, dass hier eine Verletzung des Datenflusses vorliegt. Und als LabVIEW-Prorgammierer verlasse ich mich ja auf den Datenfluss.
Gibts da weitergehende Informationen zu ?
Hallo Frank,
ich konnte den Fehler mit LV2014SP1 nachvollziehen.
Lösung/Workaround: entweder die parallele Ausführung der FOR-Loop deaktivieren oder eine flache Sequenz um diese FOR-Loop herum programmieren.
Ich würde den Support bemühen und mir eine CAR geben lassen…
Auch ich kann das nachstellen - aber man muss genau sein: die Gesamtausführungsdauer liegt schon bei 2 Sekunden, das VI spukt dir in der Anzeige aber nur 2 ms aus.
Hier noch eine Möglichkeit, das Problem zu umgehen: Ein Schieberegister für den Error-Cluster in der While Loop.
Wieso passt das? Da kann ich nur spekulieren. Vermutlich optimiert der Compiler im Hintergrund zu viel heraus. Er erkennt wahrscheinlich, dass prinzipiell deine Parallel-Loop auch schon während der While-Loop gestartet werden kann, denn der Error-Cluster stellt so kein "Hindernis" dar, da er in der While-Loop nicht manipuliert wird. Zwecks Parallelität der For-Loop wird dann offensichtlich die Ausführung nach vorne gezogen.
Trotzdem hast du Recht, so sollte das nicht sein, wenn man sich auf DATAFLOW verlassen will.
Ab mit dem Bsp zu NI!
Gruß, Jens
Lustiger Weise hilft schon ein doppelter Error Draht....
Ich tippe auch auf den Compiler.
FYI: CAR 547120
Tracken kann ich die nicht, oder?
Es besteht da wahrscheinlich kein Grund zur Aufregung. Ich habe mit dem VI etwas herumgespielt, dann aber den Originalzustand wieder hergestellt. Überraschenderweise funktioniert es jetzt richtig.
Und ohne die parallele Ausführung der For-Schleife funktionert es sowieso.
[
attachment=54117]
Es gibt im LabVIEW Champions Forum eine Diskussion zu diesem Thema.
Dort geht es um eine anderes Detail, könnte aber mit diesem zu tun haben.
Es handelt sich um Einen Compiler-Bug, für den es bereits ein Fix gefunden wurde.
Vielleicht hilft dieses Beispiel, das Problem genauer zu erfassen.
Ich habe diesen Thread dort zitiert. Ich berichte, wenn ich etwas Neues weis.
Holger
Zitat aus dem Champions Forum:
Zitat:Bug noted, analyzed, diagnosed, and bug fixing is now in progress.
CAR 547269
Es handelt sich offenbar um dasselbe Problem.
Der Optimizer schießt hier leider über das Ziel hinaus.
Gruß Holger
Da habe ich mit meiner Vermutung, dass der Compiler zu gut optimiert, genau richtig gelegen...
Gruß, Jens