Dataflow violation - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Dataflow violation (/Thread-Dataflow-violation) |
Dataflow violation - Frank M-F - 18.09.2015 13:30 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 ? RE: Dataflow violation - GerdW - 18.09.2015 14:01 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… RE: Dataflow violation - jg - 18.09.2015 14:10 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 RE: Dataflow violation - Frank M-F - 18.09.2015 14:17 Lustiger Weise hilft schon ein doppelter Error Draht.... Ich tippe auch auf den Compiler. RE: Dataflow violation - Frank M-F - 21.09.2015 10:35 FYI: CAR 547120 Tracken kann ich die nicht, oder? RE: Dataflow violation - Lucki - 21.09.2015 18:30 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] RE: Dataflow violation - BNT - 22.09.2015 19:45 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 RE: Dataflow violation - BNT - 22.09.2015 20:49 Zitat aus dem Champions Forum: Zitat:Bug noted, analyzed, diagnosed, and bug fixing is now in progress. Es handelt sich offenbar um dasselbe Problem. Der Optimizer schießt hier leider über das Ziel hinaus. Gruß Holger RE: Dataflow violation - jg - 22.09.2015 21:00 Da habe ich mit meiner Vermutung, dass der Compiler zu gut optimiert, genau richtig gelegen... Gruß, Jens |