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 versuche gerade mit den VI's zum Formelknoten analysieren eine Formel auszurechnen, leider funktioniert das nicht so wie ich mir es vorstelle.
Kann es sein das die VI's "Auswertung: Analysierter Formelknoten" und "Auswertung: Analysierter Formelknoten" anders funktionieren als die Formelknotenstruktur?
In dem angehängten VI möchte ich die Eingänge a und b vergleichen und immmer den größeen Wert vom kleineren subtrahieren, mit dem normalen Formelknoten funktioniert das aber mit den vi's nicht.
Gibt es dafür einen anderen Syntax oder sind darin if-else Anweisungen nicht vorgesehen?
12.07.2017, 08:21 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2017 08:27 von GerdW.)
The parser in the Mathematics VIs supports all elements that Formula Nodes support with the following exceptions:
Variables—Only a, a0, ..., a9, ... z, z0, ..., z9, are valid.
Logical, conditional, inequality, equality—?:,, &&, !=, ==, <, >, <=, and >= are not valid.
Functions—atan2, max, min, mod, pow, rem, and sizeOfDim are not valid. You can use these functions in a Formula Node or use their corresponding LabVIEW functions.
Wenn da steht, das die gleichen Elemente wie im Forlemknoten unterstützt werden, ausgenommen der angeführten Elemente, woher soll man denn jetzt wissen das if nicht unterstütz wird?
12.07.2017, 12:50 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2017 12:58 von GerdW.)
wenn du meinem Link oben folgst und dort dann auf den Link im letzten Satz klickst, landest du hier!
Dort steht keine IF-Funktion…
Ich probiere es nochmal so:
Der Formelparser ist zum Parsen (mehr oder weniger komplexer) mathematischer Formeln der Art y=f(x) da. Ich kenne keine mathematische Formel, die einem IF oder WHILE oder CASE entspricht.
Der Formelknoten verarbeitet eine C-ähnliche Syntax, dort sind durchaus Befehle zur Programmflusssteuerung (eben IF, WHILE, CASE, etc.) erlaubt…
Bei mir funktioniert alles, wenn man die überflüssigen geschweiften Klammern weglässt - aber frage mich nicht warum. Und frage mich auch nicht, warum im Ausgangsarray zwei mal das richtige Ergebnis erscheint. Wenn man statt deiner überflüssig langen Formel einfach "o=abs(a-b);" eingibt ist das nicht der Fall.
01.10.2017, 12:34 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2017 12:34 von hansi9990.)
Zwar schon etwas her aber ich Antworte trotzdem mal
Nee das Funktioniert eben nicht,
angenommen a=2 und b=1, dann kommt am Formelknoten 1 raus (was es ja auch machen soll) und an den Formel vi's zwei mal -1 (falsch),
wenn a=1 und b=2 dann kommt am Formelknoten wieder 1 raus und an den Formel vi's auch zwei mal 1
Ergo die if then else Anweisungen in den Formel vi's haben keine Funktion, lediglich das o=a-b wird ausgeführt.
Und nochmal zur Beschreibung, hier Formelknotensyntax steht eindeutig das if then else Anweisungen in Formelknoten zulässig sind, hier Differences between the Parser in the Mathematics VIs and the Formula Node stehen eindeutig die Unterschiede bzw. die Ausschließungen (The parser in the Mathematics VIs supports all elements that Formula Nodes support with the following exceptions: ) und die "if then elses..." Anweisungen werden hier nicht ausgeschlossen, wenn also die "if then else..." Anweisungen in Formelknoten erlaubt sind und in den Unterschieden nicht ausgeschlossen werden woher soll man dann wissen das diese in den Parser VI nicht zulässig sind, ergo die Hilfe ist nicht vollständig oder undurchsichtig.