Hallo,
kann mir jemand ein VI posten, aus dem ich die Syntax für die Programmierung im Formelknoten ablesen/abspicken/lernen kann? Vor Allem eine While-Schleife wäre mir wichtig. Die Hilfe finde ich zu dem Thema nicht sehr gelungen.
Danke.
Philipp
Hallo,
das hier ist ein Beispiel aus dem LabVIEW-Example-Finder. Was genau hinter der Berechnung steckt blicke ich nicht. Jedenfalls wird das Volumen berechnet.
Wenn Du (oder auch jemand anders) den Code genau verstanden hast (hat), dann kannst Du (er) ihn gerne posten. Mir ist die Verschachtelung der Schleifen und die Sytax (While(0), While(1)) suspekt. Irgendwie werden aber wohl die Schleifen so lange erhöht, bis der Eingangswert erreicht ist, aber wo dann multipliziert wird, weiß ich nicht.
[
attachment=10461]
Gruß Markus
' schrieb:Hallo,
das hier ist ein Beispiel aus dem LabVIEW-Example-Finder. Was genau hinter der Berechnung steckt blicke ich nicht. Jedenfalls wird das Volumen berechnet.
Wenn Du (oder auch jemand anders) den Code genau verstanden hast (hat), dann kannst Du (er) ihn gerne posten. Mir ist die Verschachtelung der Schleifen und die Sytax (While(0), While(1)) suspekt. Irgendwie werden aber wohl die Schleifen so lange erhöht, bis der Eingangswert erreicht ist, aber wo dann multipliziert wird, weiß ich nicht.
Der Formelknoten in neueren LabVIEW Versionen folgt im Wesentlichen der C Syntax. Ganz früher war das wesentlich eingeschränkter. Viele Dinge von C können auch im Formelknoten mit ein paar signifikanten Einschränkungen wie etwa keine Pointer, die aber auch die höhere Schule von C sind.
Rolf Kalbermatter
Ich weiß, das ist jetzt
, aber könntest Du kurz erklären was da in dem Formelknoten (in meinem Bsp. von Beitrag 2) vor sich geht?
Mit C habe ich schon ewig nichts mehr zu tun gehabt (und damals nur Grundlagen).
Rein interessehalber würde mich aber die Programmierung in dem Knoten doch interessieren.
Gruß Markus
' schrieb:Ich weiß, das ist jetzt , aber könntest Du kurz erklären was da in dem Formelknoten (in meinem Bsp. von Beitrag 2) vor sich geht?
Mit C habe ich schon ewig nichts mehr zu tun gehabt (und damals nur Grundlagen).
Rein interessehalber würde mich aber die Programmierung in dem Knoten doch interessieren.
Gruß Markus
Im wesentlichen sind es drei ineinander verschachtelte Schlaufen um das Volumen eines"Kubuses mit den Dimensionen x, y, und z zu berechnen. Im Prinzip macht diese Routine nichts anderes dann:
vol = 0;
for (i=0; i < x; i)
{
for (j=0; j < y; j)
{
for (k=0; k < z; k)
{
vol = vol + 1;
}
}
}
und noch einfacher:
vol = x * y * z;
while (1) ist eigentlich nichts anderes als "solange bis 1 nicht mehr 1 ist", was natürlich nie passiert,
aber mit dem break; wird die Schlaufe irgendwann doch abgebrochen.
Warum so kompliziert dann?
So wie das aussieht kommt das direkt aus dem Testframework von LabVIEW. Jede Nacht wird auf mehreren Servern automatisch eine neue Version von LabVIEW kompiliert aus den letzten Quellcodebestandteilen aus dem Quellcodecontrolsystem. Dieses LabVIEW wird dann auf eine umfangreiche Bibliothek von VIs losgelassen, die mittels eines Testframworks geladen und ausgeführt werden. Alle diese VIs geben eine Boolean zurück der Success oder Failure angibt. Alle Fehler werden gelogt und am morgen erhalten die Entwickler eine Liste von Fehlern die aufgetreten sind. Dann können sie gleich schauen, was sie am Tag zuvor vermurkst haben.
Dieses Beispiel verwendet nicht so oft benützte Schreib- und Benützungsweisenvon Schlaufen. Normalerweise werden die Abbruchbedingungen von Schlaufen in der Schalufenbedingung festgelegt, aber man kann eine Schlaufe auch voreitig mit einem break; abbrechen.
Rolf Kalbermatter
Danke für die Info. Das muss ich mir jetzt mal in Ruhe anschauen.
Gruß Markus
' schrieb:Warum so kompliziert dann?
So wie das aussieht kommt das direkt aus dem Testframework von LabVIEW.
Das ist die offensichtliche Erklärung, warum diese ganz einfache Sache auf maximal umständliche Art programmiert wird.
[
attachment=10472]
Habe das mal in LV umgesetzt. Wenn es nur darum ginge, die Einheits-Volumenwürfel auszuzählen, dann würde man es wie im Bild ganz unten mit 3 einfachen for-Schleifen machen. Die verschachtelten Schleifen darüber sollen den Formelknoten implementieren. Sie bewirken genau dasselbe, mit dem Unterschied, daß die Abbruchbedingung in jeder Schleife anders und immer möglichst kompliziert formuliert sind.
' schrieb:Das ist die offensichtliche Erklärung, warum diese ganz einfache Sache auf maximal umständliche Art programmiert wird.
[attachment=37495:Calculate.png]
Habe das mal in LV umgesetzt. Wenn es nur darum ginge, die Einheits-Volumenwürfel auszuzählen, dann würde man es wie im Bild ganz unten mit 3 einfachen for-Schleifen machen. Die verschachtelten Schleifen darüber sollen den Formelknoten implementieren. Sie bewirken genau dasselbe, mit dem Unterschied, daß die Abbruchbedingung in jeder Schleife anders und immer möglichst kompliziert formuliert sind.
Es ist nicht so sehr die Abbruchbedingung die hier wohl getested werden soll. Eher der Umstand das die richtigen Schleifen mit break verlassen werden (immer nur die jeweils Innerste), sowie die etwas ungebräuchliche Schreibweise der FOR Schlaufe, da der Bedingungsoperator leer ist.
Also einfach ein Test dass der eingebaute C Parser korrekten Code für diese Dinge produziert.
Rolf Kalbermatter
In LV2012 konnte ich noch im Formelknoten einfach
y=y+1;
programmieren, so wie in C, PASCA VC, VB. u.s.w
in LV2020 funktioniert das nicht mehr!!!
Wer weiß warum???
Hallo Traktor,
warum sollte ein "y=y+1;" in LabVIEW 2020 nicht mehr funktionieren?
(ziemlich unvorstellbar)
Wenn du das so in den Raum stellst, dann schiebe bitte noch ein Beispiel hinterher.