Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe eine Casestruktur mit ca. 8 Cases, die, durch Zustandsenums gesteuert, durchlaufe werden. Da Daten immer wieder in den einzelenen Cases verwendet werden, durchlaufen diese mehere Cluster. In einem dieser Cases (Index 1) wird ein Cluster geöffnet, mit neuen Daten gefüllt und verlässt dann den Case wieder. Ein paar Cases weiter soll dieser Cluster dann in einem Graph angezeigt werden, der Cluster ist jedoch leer. Ich versteh nicht warum.
Ich hab das Füllen des Clusters mit einem Graph im gleichen Case (1) getestet und die Daten (4 Arrays) sind vorhanden.
Was mir komisch erscheint, ist das eine Symbol, das den Durchgang durch die Cases anzeigt. Es ist nicht, wie alle anderen quadratisch und pink gefüllt, sondern quadratisch, pink und mit einem weißen Dreieck versehen. Was soll das bedeuten?
Sorry, dass ich die Datei nicht hochladen kann, aber es handelt sich um ein rießiges Programm, an dem ich als Praktikant in einer Firma arbeite.
Ich hab zur veranschaulichung mal eine kleine Skizze gemacht.
Vielen Dank für Tipps.
26.06.2012, 10:59 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2012 11:00 von GerdW.)
wenn du statt einer Skizze mal dein BD zeigen würdest, könnte man gleich sehen, ob du mit Tunneln oder mit Schieberegistern arbeitest... (Wozu haben wir eine graphische Programmiersprache, wenn du dann doch wieder zu Paint greifen musst?)
Du musst auf alle Fälle mit letzteren arbeiten, sonst wird das nichts...
"quadratisch mit Dreieck" bedeutet "Tunnel, der automatisch durchverdrahtet wird"... Hast du schon mal den Rechtsklick in LabVIEW benutzt?
Hört sich so an, als ob du den Cluster nicht sauber durch alle Cases durchschleifst sondern irgendwo (vielleicht mehrmals) den Default-Value des Clusters weitergibst. THINK DATAFLOW.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Phänomenologisch ein dataflow Problem. Simpel gesagt: Dein Cluster wird auf dem Kabel mit dem Wert "initialisiert" der von außerhalb der While Schleife kommt. Dann veränderst du den innerhalb des einen Case und dann wird der Wert an den Ausgang der aus der While Schleife geht angelegt. Da die While schleife nicht endet wird der Wert anschließend verworfen (es sei denn du hast autoindexing angemacht, dann wird aus allen Werten ein Array gebildet - auch das kannst du dann allerdings erst nutzen nachdem die Schleife beendet wurde).
Anschließend beginnt ein neuer Durchlauf und du startest wieder mit dem Wert mit dem der Cluster von aussen "initialisiert" wird. Kabel in Labview sind KEINE Variablen in die man einfach reinschreiben kann. Dazu musst du wie schon angesprochen Schieberegister verwenden. Die werden einmal am linken Rand der Schleife mit einem Wert initialisiert anschließend in der Schleife irgendwie damit gerechnet und der dabei erhaltene Wert mit dem entsprechenden Schieberegister auf der rechten Seite verdrahtet (das den Wert in den nächsten Schleifendurchlauf "schiebt").
p.S: Zu Veranschaulichung was schief geht kannst du vermutlich auch einfach mal das VI mit der Glühbirne laufen lassen. Dann solltest du sehen, dass er immer wieder auf den Wert von vorher initialisiert.
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
Hab vergessen zu erwähnen, dass ich für die While Schleife natürlich Schieberegister verwende.
Eigentlich seh ich keinen Unterschied zu anderen Clustern, die da durchlaufen. Der Inhalt dieser steht dann auch in den anderen Cases zur Verfügung.
Versteh ich, dass das Proplem schwer zu verstehen ist ohne das Blockdiagramm zu sehen.
Dachte auch, dass es ein Dataflow Proplem ist, aber der Cluster ist durch alle Cases durchgezogen und wird nur innerhalb des einen Cases verändert.
Schaus mir nochmal an und hoffentlich finde ich noch was auffälliges.
(27.06.2012 08:16 )123mibu schrieb: Schaus mir nochmal an und hoffentlich finde ich noch was auffälliges.
Vielleicht hat man in einem Case statt einem Anschlußport zwei Anschlußpunkte genau übereinander, so dass die Drähte außen und innen in Wirklichkeit gar nicht miteinander verbunden sind. Man sieht das, wenn man alle verdächtigen Anschlußports ein paar Pixel hin und herschiebt.
Anzeige
27.06.2012, 09:41 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2012 09:42 von Kiesch.)
Hmm... wenns wirklich mit Schieberegistern gemacht ist, bräuchte es vermutlich zumindest nen Screenshot / Snippet um das nachzuvollziehen...
"Blöde" Frage: Bist du dir sicher, dass der Case überhaupt durchlaufen wird in dem du den Wert änderst?
Falls ja könnte wie gesagt die Glühbirne oben helfen, dann siehst du zumindest was anschließend mit den Daten passiert bzw. wo die verschwinden.
Gruß Kiesch
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
27.06.2012, 10:01 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2012 10:12 von 123mibu.)
Ja, das blöde ist nur, dass das Programm auf einem externen Prüfstand läuft und ich das VI nicht einfach runterziehen kann. Bitte das zu verstehen. Ich versuche es daher gut zu beschreiben, bzw durch Paint zu visualisieren.
So der Unterschied zu den anderen Clustern ist, das dieser Cluster innerhalb der While Schleife und dem zustandgesteuerten Case nochmal eine Whileschleife durchläuft, welche wiederum mit Schieberegistern arbeitet. Könnte hier irgendwo der Denkfehler liegen?
Habe die "weißen Dreiecke" jetzt wegbekommen, indem ich am Caseausgang die Option "Offene Tunnel Löschen" gewählt habe.
Durch einen Test mit einem Graph kann ich sicher sagen, dass der Cluster beschrieben wird, da ein schöner Graph gezeichnet wird, allerdigs nur an der Stelle, an der der Cluster gefüllt wird.
In einem weiteren Graphen zwei, drei Schieberegister weiter sind die Arrays dann leer. Ich verzweifel langsam.
Wie gesagt, wenn alles richtig mit Schieberegistern gemacht ist, kann man da per Ferndiagnostik wohl eher nichts weiter aussagen...
Mir fallen lediglich noch 2 Möglichkeiten ein: In irgendeinem der Cases wird der Cluster nicht richtig durch den Case geschleift --> alle Cases nochmal checken ob die Verbindungen stimmen.
Fürs testen was passiert: Haltepunkt setzen direkt an das Wire bevor der Cluster in deinem Case beschrieben wird, dann sollte er dann da pausieren, dann die glühbirne an und kucken was ab da passiert und wo genau deine Daten verschwinden. Eventuell weitere Diagramteile die dabei stören würden mit einer Diagrammdeaktivierungsstruktur ausblenden wenn möglich.
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
Pu man darf manchmal einfach nicht aufgeben!
Zwar weiß ich nicht, was genau jetzt der Fehler war, aber es funktioniert.
Hab wie vorgeschlagen, die Verbindung nochmal neu durchgezogen und siehe da der Dataflow läuft wie ich mir das vorstelle.
Danke für eure Hilfe, super! Gib eins aus -->