LabVIEWForum.de
Pausieren des Elapsed Timers? Array löschen? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Pausieren des Elapsed Timers? Array löschen? (/Thread-Pausieren-des-Elapsed-Timers-Array-loeschen)

Seiten: 1 2


Pausieren des Elapsed Timers? Array löschen? - Achim - 16.10.2007 10:33

' schrieb:BTW: Ich habe noch nie Feedback-Nodes verwendet (weil ich sie noch nicht gebraucht habe). Wozu sind die da? Was ich damit meine ist: Was können die, was ein Schieberegister nicht kann? Sind die wirklich nur da drin, um den Programmiergeschmack verschiedener Leute nachzukommen? Feedback-Nodes sparen mehr Platz, sind aber (zumindest für mich) undurchsichtiger. Ist das alles?

Hi,
ja das ist (fast) alles. Die wurden meines Wissens erfunden, um sich lange Leitungen zu sparen...die können ein Programm unübersichtlich machen, wenn sie quer durchs BD geführt werden müssen!

Der Unterschied zu Schieberegistern ist außerdem der, das nur der Wert aus der Iteration n-1 in der Iteration n verwendet werden kann, wohin gegen mit Schieberegistern "beliebig" viele in der Vergangenheit liegende Werte genutzt werden können - je nachdem wie weit man das Register am linken Schleifenrand aufzieht!

Ich hab die Feedback-Nodes auch noch nie gebraucht! Ich finde auch, die Funktion wird durch ein Schieberegister klarer und übersichtlicher dargestellt!

Gruss
Achim


Pausieren des Elapsed Timers? Array löschen? - monoceros84 - 16.10.2007 10:56

Hey toll, das mit dem Aufziehen des Schieberegisters habe ich noch gar nicht gewusst...

Ok, also wurde ich in meiner bisherigen Meinung bestätigt (fühlt sich immer gut an *lol*). Werde also auch weiterhin Schieberegister verwenden. Klar, wenn man mal was ganz nebensächliches hat, wie in Luckis Beispiel, dann biete sich Feedback Nodes an. Man kreuzt dann nicht seine ganzen wichtigen Leitungen...


Pausieren des Elapsed Timers? Array löschen? - rolfk - 16.10.2007 11:26

' schrieb:Hi,
ja das ist (fast) alles. Die wurden meines Wissens erfunden, um sich lange Leitungen zu sparen...die können ein Programm unübersichtlich machen, wenn sie quer durchs BD geführt werden müssen!

Der Unterschied zu Schieberegistern ist außerdem der, das nur der Wert aus der Iteration n-1 in der Iteration n verwendet werden kann, wohin gegen mit Schieberegistern "beliebig" viele in der Vergangenheit liegende Werte genutzt werden können - je nachdem wie weit man das Register am linken Schleifenrand aufzieht!

Ich hab die Feedback-Nodes auch noch nie gebraucht! Ich finde auch, die Funktion wird durch ein Schieberegister klarer und übersichtlicher dargestellt!

Stimmt alles soweit! Noch eine Zusatzinformation:

Seit LabVIEW 8.5 ist die Feedbacknode wirklich dasselbe wie ein Schieberegister und LabVIEW erzeugt auch den gleichen Code dafür. Von 8.0 bis 8.2.x war das anders. Da war die Feedbacknode ganz anders implementiert und hatte im Vergleich zu einem Schieberegister oftmals eine katastrophale Performance, da scheinbar keinerlei Datenkopieoptimalisierung durchgeführt wurde. Scheint ein Internship Projekt gewesen zu sein, und der Student hat leider übersehen dass die Feedbacknode im Prinzip dasselbe ist wie ein Schieberegister und hat alles nochmal implementiert, nur viel schlechter.

Für 8.5 hat sich ein LabVIEW-Programmierer dieses Gadgets angenommen und dieselben Routinen wiederverwendet die auch fürs Schieberegister verwendet werden mit allen Performancevorteilen davon.

Ich bin ebenfalls der Meinung dass die Feedback Node zwar Drahtmeter sparen kann, aber das Programm im Sinne der Datenflussprogrammierung nicht gerade verständlicher macht. Aber das ist vielleicht auch etwas Geschmacksache. Ich denke mal, dass das Schieberegisters, obwohl für effiziente Datenverarbeitung vielleicht das wichtigste Element in LabVIEW, das am Schwierigsten zu begreifende Element für LabVIEW Neulinge ist.

Rolf Kalbermatter


Pausieren des Elapsed Timers? Array löschen? - jg - 16.10.2007 11:42

Hallo, Rolf,

danke für die tollen Hintergrundinfos.

Ansonsten kann ich dir nur zustimmen. Ich mag die Feedback-Node auch nicht. Hatte sie anfangs mal zu Testzwecken eingesetzt, aber logischer wird der Code dadurch nicht. Wenn man mal das mit Datenfluß und Shift-Register gerafft hat, ist das auch aus meiner Sicht wesentlich übersichtlicher und verständlicher als die Feedback-Node. Ich kann mich erinneren, irgendwo in den CLAD-Beispiel-Tests war auch mal ne Frage mit Feedback-Node, fand ich total unübersichtlich.

MfG, Jens


Pausieren des Elapsed Timers? Array löschen? - Lucki - 16.10.2007 12:55

' schrieb:Der Unterschied zu Schieberegistern ist außerdem der, das nur der Wert aus der Iteration n-1 in der Iteration n verwendet werden kann, wohin gegen mit Schieberegistern "beliebig" viele in der Vergangenheit liegende Werte genutzt werden können - je nachdem wie weit man das Register am linken Schleifenrand aufzieht!

Das stimmt - und auch wieder nicht. Ein aufgezogenes Schieberegister (Bild 1) ist ja nur eine platzsparende Schreibweise für mehrere verkettete Schieberegister (Bild 2), und die kann ich wiederum einzeln durch Feedbacks ersetzen Bild 3). Ob das im Einzelfall Sinn macht, ist etwas anderes, es geht hier nur um die Realisierbarkeit.
[attachment=9183]

Zitat:Ich hab die Feedback-Nodes auch noch nie gebraucht!
Kein Wunder, denn "brauchen" tut sie niemand, genau so wenig wie man das Wort xxx braucht, wenn es dafür schon das Synonym yyy gibt. Es bereichert nur die Sprache - hier die deutsche, dort die von LabVIEW.


Pausieren des Elapsed Timers? Array löschen? - Achim - 16.10.2007 14:48

' schrieb:Das stimmt - und auch wieder nicht. Ein aufgezogenes Schieberegister (Bild 1) ist ja nur eine platzsparende Schreibweise für mehrere verkettete Schieberegister (Bild 2)
[attachment=36075:Rueckkop...gsknoten.png]

Ich weiß nicht...ich interpretiere das etwas anders:

Für mich ist das sowas wie ein "1D-Array von Werten", die hintereinander im Speicher liegen. Dieses Array allokiert immer genau so viele "Speicherplätze", wie ich am Schleifenrand "Abgriffe" des Schieberegisters aufziehe. Durch Schreiben in das Register am Schleifenausgang schiebt man die Werte innerhalb des allokierten Speichers nach "hinten", der letzte Wert fällt raus.

Bei deiner Variante hätte ich mehrere Schieberegister mit je einer Speicherstelle, die ich tatsächlich miteinander verkette. Ist das so? Ich glaube nicht, lasse mich aber gerne eines besseren belehren!

Ob das Speichertechnisch einen Unterschied macht, vermag ich nicht zu sagen. Was nach der Kompilierung besser "da stehen" würde, weiß ich auch nicht...

Gruss
Achim


Pausieren des Elapsed Timers? Array löschen? - Lucki - 18.10.2007 07:35

' schrieb:Bei deiner Variante hätte ich mehrere Schieberegister mit je einer Speicherstelle, die ich tatsächlich miteinander verkette. Ist das so? Ich glaube nicht, lasse mich aber gerne eines besseren belehren!

Weiß auch nicht mehr als Du, und ehrlich gesagt bin ich da auch nicht sonderlich wissbegierig, denn es gibt gar keinen vernünftigen Grund - und darin stimme ich sicher mit Dir überein -, etwas anderes als die Aufzieh-Variante zu verwenden. Die anderen beiden Varianten sind doch nur eine rein schöngeistige Spielerei, man könnte fast sagen sie sind hier "off topic". Bekenne mich schuldig, diesen Müll gepostet zu haben


Pausieren des Elapsed Timers? Array löschen? - Achim - 18.10.2007 07:41

' schrieb:Weiß auch nicht mehr als Du, und ehrlich gesagt bin ich da auch nicht sonderlich wissbegierig, denn es gibt gar keinen vernünftigen Grund

Aber gut das wir drüber geredet haben Tongue

Nee, mal ehrlich...ich finde solche "Off-Topic-Diskussionen" ziemlich interessant...im eigentlichen Sinne sind sie nämlich doch nicht am Thema vorbei!

Gruss
Achim