LabVIEWForum.de
Unterschied zw. Formelknoten und Formel VI - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Unterschied zw. Formelknoten und Formel VI (/Thread-Unterschied-zw-Formelknoten-und-Formel-VI)



Unterschied zw. Formelknoten und Formel VI - hansi9990 - 12.07.2017 08:08

Hallo

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?


RE: Unterschied zw. Formelknoten und Formel VI - GerdW - 12.07.2017 08:21

Hallo Hansi,

Zitat:leider funktioniert das nicht so wie ich mir es vorstelle.
Ich weiß ja nicht, was du dir "vorstellst". Aber ich weiß, was die LabVIEW-Hilfe zum Thema sagt…

Zitat:Gibt es dafür einen anderen Syntax oder sind darin if-else Anweisungen nicht vorgesehen?
Ja, siehe LabVIEW-Hilfe…

Vereinfacht ausgedrückt:
- FormulaParsing macht Mathematik in der Art von y=f(x)
- FormulaNode macht eine C-ähnliche Syntax inkl. Logikoperationen

P.S.:
Profil_ergaenzen
Oder mal für ältere LV-Versionen speichern…

P.P.S.:
- FormulaParsing unterstützt die MAX()-Funktion: output := MAX(a-b, b-a)…
- Alternativ gilt auch output := abs(a-b)…


RE: Unterschied zw. Formelknoten und Formel VI - hansi9990 - 12.07.2017 09:04

Auf jeden Fall habe ich mir das so 2hands nicht vorgestellt Wink

Dei Hilfe ist etwas undurchsichtig, hier steht nichts davon das if Anweisungen nicht erlaubt sind andererseits steht aber hier

http://zone.ni.com/reference/en-XX/help/371361H-01/gmath/dif_pars_math_vis_formnode/

das die von dir vorgeschlagenen Funktionen "atan2, max, min, mod, pow, rem und sizeOfDim sind ungültig."


RE: Unterschied zw. Formelknoten und Formel VI - GerdW - 12.07.2017 09:17

Hallo Hansi,

Zitat:Dei Hilfe ist etwas undurchsichtig
Im oben verlinkten Hilfe-Artikel einfach den Link im letzten Satz beachten.
Da steht, was FormulaParse kennt:
Zitat:Refer to Formula Node and Expression Node Functions for functions you can use with Formula Parsing VIs.
(Nach genauerem Lesen ist max(a,b) evtl. nicht im FormulaParse erlaubt, es werden "binary functions" ausgenommen. Aber dafür ist abs(x) nicht binär…)

Zitat:hier steht nichts davon das if Anweisungen nicht erlaubt
Wenn etwas nicht ausdrücklich als "erlaubt" gekennzeichnet ist, heißt das nicht, das es nicht "nicht erlaubt" ist… Big Grin


RE: Unterschied zw. Formelknoten und Formel VI - hansi9990 - 12.07.2017 12:35

Das ist doch der Link den ich geteilt hatte [url= http://zone.ni.com/reference/en-XX/help/..._formnode/] http://zone.ni.com/reference/en-XX/help/..._formnode/[/url]
und da steht doch:

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?


RE: Unterschied zw. Formelknoten und Formel VI - GerdW - 12.07.2017 12:50

Hallo Hansi,

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…


RE: Unterschied zw. Formelknoten und Formel VI - Lucki - 18.07.2017 13:57

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.
[attachment=58013]


RE: Unterschied zw. Formelknoten und Formel VI - hansi9990 - 01.10.2017 12:34

Zwar schon etwas her aber ich Antworte trotzdem mal Wink

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.