LabVIEWForum.de - Formula Node - Funktionen erstellen ?

LabVIEWForum.de

Normale Version: Formula Node - Funktionen erstellen ?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich würde gerne wissen, ob es im Formula Node möglich ist auch Funktionen zu erstellen. Also das ich eine Funktion an einer Stelle definiere und dann öffters ausführen kann.
Leider habe ich dazu kein Beispiel gefunden, sofern das überhaupt geht.

Kann mir eventuell jemand einen Link zu einem Besipiel schicken, sofern es geht ?

Gruß & Danke

amin
Hallo,

ich kann´s zwar kaum glauben, aber es scheint tatsächlich nicht zu funktionien Huh
http://digital.ni.com/public.nsf/allkb/7B1...6256DDE006A1B9D
Ich denke, es gibt dann eine paar Herausforderungen mit dem Gültigkeitsbereich der Funktionsdefinition. Aber es ist auch kein Problem ein SubVI für eine Funktion zu erstellen.

Vielleicht hilft auch das VI Eval Formula Node (Full Development System).
nein das geht nicht und da gibt es auch kein Paket dazu. Die einzige Möglichkeit: eine DLL rufen. Geht auch nicht in MathScript (also rufen darfste eine aber nicht debugen) ... fragt mich nicht wozu dann das gut sein kann ...
' schrieb:nein das geht nicht und da gibt es auch kein Paket dazu. Die einzige Möglichkeit: eine DLL rufen. Geht auch nicht in MathScript (also rufen darfste eine aber nicht debugen) ... fragt mich nicht wozu dann das gut sein kann ...

Irgendwie klingt bei Dir oft Negatives durch wenn Du etwas über LabVIEW schreibst.

Es gibt Leute die können eine komplizierte Formel besser in Textform verstehen dann wenn sie durch kleine Icons dargestellt wird. Das war in LabVIEW 2 die einzige Funktion der Formula Node, da sie: eine ziemlich beschränkte eigene Syntax hatte, nur Skalars als Variablen akzeptierte. Irgendwann mal so um LabVIEW 6 oder LabVIEW 7 hat sich jemand dieser Formula Node angenommen und hat die Syntax mehr in Übereinstimmung mit C gebracht (ja C ist nicht die meist logische hier, aber eine eigene ein bischen C und doch auch wieder nicht und noch viel weniger war ganz sicher schlechter), und hat da noch ein paar Features eingebaut. Es war und ist nicht die Idee um eine volle C Syntax Node in LabVIEW zu haben weil LabVIEW bereits eine komplette auf ziemlich anderen Prinzipien beruhende Compilerumgebung ist und NI nicht auch noch einen kompletten C Compiler in LabVIEW integrieren will.

Ist die Formula Node hilfreich? Für manche Leute schon! Brauche ich sie selber? Nein, ausser zum damit spielen am Anfang, noch nie in meiner inzwischen 17jährigen LabVIEW Karriere. Musst Du sie benützen? Ganz sicher nicht.

Das Mathscript ist ein Versuch eingefleischten Mathlab Usern eine Möglichkeit zu bieten um ihre Mathlab Formeln direkt in LabVIEW benützen zu können ohne daneben auch noch Mathlab zu benötigen. Das funktioniert bei nicht zu komplexen Berechnungen aber Mathscript kann und will kein voller Ersatz für Mathlab sein. Das hat strategische Gründe aber auch legale, da The Mathworks genau so eifersüchtig auf ihr Schosskind achtet wie dies NI mit LabVIEW tut.

Wenn ich so lese was da alles für Probleme sind wenn man DLLs in Mathlab von einem Script aufrufen will, scheint mir das da eigentlich auch alles ausser Honigschlecken. Und was Du mit dem Debuggen einer DLL aus einem Script meinst weiss ich nicht so gut. Was geht denn da nicht? Willst du die DLL direkt von LabVIEW aus debuggen??? Kannst Du den System Debugger nicht dazu bringen anzuspringen wenn die DLL aufgerufen wird? Oder crasht das Ganze dann?

Für DLLs gibt es auch noch die Call Library Node mit wesentlich mehr Möglichkeiten und da habe ich noch nie unlogischeBig Grin Probleme damit gehabt mit Visual C auch Source Code Debugging zu tun wenn die DLL aus LabVIEW aufgerufen wird.

Rolf Kalbermatter
' schrieb:Irgendwie klingt bei Dir oft Negatives durch wenn Du etwas über LabVIEW schreibst.

Ich schätze LabVIEW wirklich sehr - siehe mein Beitrag "Liebeserklärung an LabVIEW" - ich finde den Beitrag im Moment nicht mehr - habe ich in "Allgemein" gepostet

In extremer Selbstüberschätzung ärgern mich an LabVIEW

* das faktische Fehlen einer Doku die den Namen verdient
* der schwachsinnigste Linker der EDV Branche - "rat mal was für ein Modul fehlt" - ein süßes Spiel oder 600MB für "hello world"
* halbe Sachen - und damit sind wir beim Thema

in der Formula Node gibt es keine Breakpoints, aber in der Mathscript Node schon. Das die Formula Node nur für ein paar Zeilen gut ist ... ja das ist OK, sagt einem auch nicht die LabVIEW-Werbung

' schrieb:Das Mathscript ist ein Versuch eingefleischten Mathlab Usern eine Möglichkeit zu bieten um ihre Mathlab Formeln direkt in LabVIEW benützen zu können ohne daneben auch noch Mathlab zu benötigen. Das funktioniert bei nicht zu komplexen Berechnungen aber Mathscript kann und will kein voller Ersatz für Mathlab sein. Das hat strategische Gründe aber auch legale, da The Mathworks genau so eifersüchtig auf ihr Schosskind achtet wie dies NI mit LabVIEW tut.

Da hat aber NI andere Erwartungen geweckt. Im Normalfall ist das was Du in Mathlab erstellst in Mathscript unbrauchbar. In Mathscript sind was weiss ich wie viele Funktionen nur in der Entwicklungsumgebung zugreifbar - was soll das? Und der Größte Schwachsinn: Du kannst zwar Functions aufrufen aber nicht debuggen. Toll, da mache ich ein inkompatible Sprache und dann kann man Fehler nur mit den Methoden von MS-Basich V1.0 "Print..." suchen. OK: für 3 Zeilen ganz nett aber es lohnt nicht sich damit zu beschäftigen. MatScript operiert mit Matrizen - das ist nun einfach für komplexere Rechnungen .... und dann das?

' schrieb:Und was Du mit dem Debuggen einer DLL aus einem Script meinst weiss ich nicht so gut.

Das war blöd ausgedrückt: Aber ich entwickle einen komplexen zeilenorientierten Programmteil eben mit einem normalen Compiler, mit all den netten Debug Features und baue dann auf DLL um.

Du siehst auch hier im Forum die Erwartung vieler User sie könnten Ihre MatLab Entwicklungen in LabVIEW so einfach laufen lassen. Das sage ich klar und deutlich - das geht nicht ausser "hello world"

Sonst finde ich LabVIEW echt gut, war meine eigene Entscheidung so viel Geld in eine Entwicklungsumgebung mit allen Features zu stecken und habe es nicht bereut.

Alles OK?

Gottfried
Hallo,

also ich für meinen Teil habe mich inzwischen gegen die Formula Node entschiedne und realisiere gerade das ganze mit den "normalen" LabVIEW Blöcken. Da ich das ganze ein Programm für den ARM werden soll, hätte ich sogar auf einen C-Block zugreifen können. Jedoch wäre auch auch das vergleichsweise aufwendiger, da ich hier alle mathematischen Funktionen erstellen müsste. Aus dem gleiche Grund kann ich im Übrigen nicht den Matlab Block verwenden und auch nicht den DLL-Block.

Dennoch finde ich es für die Zukunft gut zu wissen, das ich in LabVIEW beim Matlab Block auch keine Fuktionen erstellen kann (so wie ich das verstanden habe). Da es in Matlab eigentlich üblich ist wie in C Funktionen zu erstellen, ist das natürlich etwas doof, da man somit auch hier offensichtlich dann nicht einfach den Code übernehmen kann.

EDIT: Oder geht das im Matlab Block jetzt doch ? Oder was ist von gottfried gemeint, dass man Zugriff auf Funktionen hat ?

Gruß

amin
' schrieb:Ich schätze LabVIEW wirklich sehr - siehe mein Beitrag "Liebeserklärung an LabVIEW" - ich finde den Beitrag im Moment nicht mehr - habe ich in "Allgemein" gepostet

In extremer Selbstüberschätzung ärgern mich an LabVIEW

* das faktische Fehlen einer Doku die den Namen verdient
Hmm, also da ist schon sehr viel Doku auf Deiner Harddisk und auch noch aus dem Helpmenu in LabVIEW zugänglich. Diese Doku ist auch mit ein Grund dafür dass die LabVIEW Installation schon lange nicht mehr auf eine einzelne CD passt. Und da steht sehr viel Info drin und die ist meiner Meinung nach sogar noch zu finden.

Zwar mache ich in den letzten Jahren nicht mehr so viel Gebrauch davon weil:

- mir die Features die ich gebrauche recht geläufig sind
- ich mich weniger mit den neusten Schreien in LabVIEW abgebe (noch nie LVOOP gemacht, Mathscript noch nicht mal angeschaut, etc.)
- ich wenn ich etwas wissen muss, ob es nun in C, LabVIEW oder was auch immer ist, meist gleich mit Google suche und dabei im Falle von LabVIEW Fragen meist doch auf der NI Site und den entsprechenden Seiten aus eben den selben Manuals die auch mit LabVIEW mitinstalliert werden herauskomme.Big Grin
Zitat:* der schwachsinnigste Linker der EDV Branche - "rat mal was für ein Modul fehlt" - ein süßes Spiel oder 600MB für "hello world"
Auch das kann ich nicht nachvollziehen. Visual C (Gnu C, etc.) ist da meist wesentlich weniger aussagekräftig in meiner Erfahrung.
Und 600MB! Dann hast Du einen Installer gebaut in dem auch DAQmx mitinstalliert wird, was das aber bei einer "hello World" Applikation helfen soll ist mir ein riesiges Rätsel. Big Grin
Zitat:in der Formula Node gibt es keine Breakpoints, aber in der Mathscript Node schon. Das die Formula Node nur für ein paar Zeilen gut ist ... ja das ist OK, sagt einem auch nicht die LabVIEW-Werbung
Formula Node stammt aus der Zeit von LabVIEW 1.x. Da waren Breakpoints etwas was man höchstens vom Hörensagen von ganz teuren Unix Entwickelumgebungen kannte. Die Formula Node gehörte eigentlich grundsätzlich neu entwickelt, ABER: Rückwärtskompatibiliteit ist in LabVIEW ein ganz gross geschriebenes Wort und das ist mit einer kompleten Neuentwicklung einer Komponente fast unmöglich zu garantieren. Matscript war ein Versuch um da zwei Fliegen mit einer Klappe zu erschlagen nämlich eine Möglichkeit zu machen um Mathlab Benützer zu LabVIEW zu bekehren und eine neue und bessere Alternative zur Formula Node zu machen.

Das Erste ist vor allem marketingtechnisch ausgebeutet worden und ich bin mir sicher dass die Entwickler der Mathscript Node den Marketingleuten am Liebsten einen auf die F.. geben würden.:cool:Das Zweite ist einigermassen gut gelungen und wenn es nicht durch die falschen Erwartungen die das Marketing geweckt hat, frustriert worden wäre, könnte da inzwischen sogar eine wirklich gute Alternative zur Formula Node draus geworden sein.

Wenn Du komplexe Mathlab Scripts in LabVIEW ausführen willst gibt es grundsätzlich immer noch nur zwei gute Möglichkeiten. Entweder man konvertiert das ganze Script komplet nach LabVIEW. Genau gleich wie bei Mathlab gibt es auch bei LabVIEW eine recht umfangreiche Palette and Add-Ons die sehr viele analytische Problemlösungsansätze enthalten. oder man führt das Ganze in der Umgebung aus in der es geschrieben wurde, also Mathlab, und holt die Ergebnisse ins LabVIEW. Das kann entweder indem man aus dem Mathlab Script eine DLL macht und diese in LabVIEW integriert (aber hier ist scheinbar an Mathlab Seite auch noch ziemlich viel im argen) oder man verwendet ein Toolkit um mit Mathlab direkt zu kommunizieren (was natürlich neben der eventuellen LabVIEW Lizenz wenn Du keine Applikation baust auch noch eine Mathlab Lizenz für die Zielapplikation verlangt).
Zitat:Das war blöd ausgedrückt: Aber ich entwickle einen komplexen zeilenorientierten Programmteil eben mit einem normalen Compiler, mit all den netten Debug Features und baue dann auf DLL um.
Mache ich auch aber dann verwende ich ganz sicher die Call Library Node und das geht supi. Und ich brauche auch keine Kommandozeilenprogramme sondern debugge direkt mit Ausrufen von LabVIEW aus auch auf Source Code Level. Das einzige Problem dass man dabei haben kann ist das wenn man die Call Library Nodes nicht im UI Thread ausführen lässt der Visual C Debugger und LabVIEW sich gegenseitig komplet blockieren. Das hat aber weniger mit LabVIEW zu tun dann mit dem Fakt dass viele Windows Dinge durch die Message Queue einer Applikation synchronsiert werden und der Debugger diese zeitweilig blockiert wenn er sich in die Applikation einzuhängen versucht. Wenn das in LabVIEW innerhalb des UI Threads geschieht passiert nichts Schlimmes aber wenn das in einem anderen Thread passiert kan die Debugger Blokkade der LabVIEW Message Queue einen Deadlock verursachen.
Zitat:Du siehst auch hier im Forum die Erwartung vieler User sie könnten Ihre MatLab Entwicklungen in LabVIEW so einfach laufen lassen. Das sage ich klar und deutlich - das geht nicht ausser "hello world"
Da stimme ich Dir sicher zu. Etwas Eigenverantwortung bei der Evalution setze ich aber schon voraus. Das man Marketing nicht blind glauben soll, finde ich eine Selbstverständlichkeit. Wer das doch tut ist einfach naiv und von jemandem mit Ingenieursausbildung oder vergleichbarem erwarte ich einfach mehr Kritikfähigkeit. Big Grin

Rolf Kalbermatter
Referenz-URLs