LabVIEWForum.de
verschiedene DLLs über ein Libary Fct Node - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: verschiedene DLLs über ein Libary Fct Node (/Thread-verschiedene-DLLs-ueber-ein-Libary-Fct-Node)

Seiten: 1 2


RE: verschiedene DLLs über ein Libary Fct Node - GerdW - 19.08.2011 10:19

Hallo Daniel,

warum soll eine DLL die (DAQmx?)-Tasks starten? Warum willst du das nicht in LV selbst machen?
Deine DLL/INI/whatever kann doch als Parameter zurückgeben, was du wirklich brauchst. Und nur diese DAQmx-Task konfigurierst du dann auch...


RE: verschiedene DLLs über ein Libary Fct Node - M@rRy - 19.08.2011 10:28

Die Idee wäre in sofern Ressourcen schonnender das der NI-DAQmx Task nicht gestartet würde. Aber er wäre trotzdem im Speicher. Genau das wollte ich so umgehen weil ich mir davon eine besser Performance versprochen hatte ...
Ein weiteres Problem was ich bei der Variante haben werde ist die Ausgabe. Bei der DLL war vorgesehen zwei Bereiche zu schaffen, einer der den Task startet und die Parameter übergibt und einer der dann das schreiben auf den Kanal ermöglicht. Dabei hätte ich dann auch wieder nur die NI-DAQmx Elemente die ich genau für die Anlage brauche. Bei der anderen müsste ich auch hier alle drei Kanäle erstellen, dreimal das Schreiben und dreimal das Terminieren und das ganze über eine switch-case (oder ein ähnlicher Weg) abfangen. Hier hatte ich mir ebenfalls eine Verbesserung erhofft.

Gruß


RE: verschiedene DLLs über ein Libary Fct Node - GerdW - 19.08.2011 10:33

Hallo Daniel,

Zitat:Ressourcen schonnender das der NI-DAQmx Task nicht gestartet würde. Aber er wäre trotzdem im Speicher.
???
Wenn du weißt, das du einen Task nicht benötigst, musst du ihn weder starten noch anlegen/konfigurieren/beenden/löschen...

Zitat:Ein weiteres Problem was ich bei der Variante haben werde ist die Ausgabe.
Aha. Also nicht nur Parameter durch die DLL bereitstellen, sondern auch weitere Funktionalität...

Ich habe Probleme, deiner Vorgehensweise zu folgen. Du willst Funktionen, die sich einfach aus LV heraus benutzen lassen, in eine externe DLL auslagern.
Warum? Alles, was du durch Nachladen einer DLL erledigst, lässt sich auch durch Nachladen von VIs in LV selbst erledigen... Und das Ganze ohne irgendwelche Probleme mit der Parameterübergabe/Anlegen und Nutzen von Speicherbereichen/etc!


RE: verschiedene DLLs über ein Libary Fct Node - M@rRy - 19.08.2011 10:47

Ich mache mal ein kleines Beispiel, vielleicht kannst du mir dann besser folgen. Wir haben drei Anlagen, eine braucht zur Ansteuerung ein analoges Signal (-10V bis +10V) eine ein PWM-Signal und die dritte kennt nur volle Power oder eben Aus.

Die drei Anlagen werden niemals gleichzeitig laufen. Wenn ich also nun beigehe und die erste Anlage nutzen möchte brauche ich zum einen desen Daten (Bearbeitungsfeld, Verfahrgeschwindigkeit, uws...) und dazu möchte ich gern den entsprechenden Task mit "Create Channel" und AO voltage starten. Desweiteren soll es möglich sein das die Daten dann genau auf den zuvor gestarteten Task geschrieben werden (AOut write). Sollte ich nun Lust haben mit Maschine zwei zu arbeiten, würde es mir genügen eine andere DLL zu laden und ich hätte alle meine Daten drinne und könnte gemütlich weiterarbeiten. Während die anderen Tasks in meinem Hauptprogram nicht auftauchen.

Zitat:Wenn du weißt, das du einen Task nicht benötigst, musst du ihn weder starten noch anlegen/konfigurieren/beenden/löschen...

Durch das erstellen einer Switch-Case-Anweisung, wobei jeder Case ein NI-DAQmx enthält und halt den richtigen startet, sind diese doch trotzdem im Speicher vorhanden oder habe ich das falsch verstanden? Natürlich wird dann nur der entsprechende gestartet und die restlichen zwei nicht, das ist mir klar.


RE: verschiedene DLLs über ein Libary Fct Node - GerdW - 19.08.2011 10:50

Hallo Daniel,

Zitat:Alles, was du durch Nachladen einer DLL erledigst, lässt sich auch durch Nachladen von VIs in LV selbst erledigen...
Du brauchst keine große CaseStruktur - nur eine vernünftige Programmarchitektur mit nachzuladenden VIs, die (z.B.) über Queues kommunizieren...


RE: verschiedene DLLs über ein Libary Fct Node - M@rRy - 19.08.2011 11:20

(19.08.2011 10:50 )GerdW schrieb:  Du brauchst keine große CaseStruktur - nur eine vernünftige Programmarchitektur mit nachzuladenden VIs, die (z.B.) über Queues kommunizieren...

Ich finde die Idee klingt sehr interessant, ich gebe allerdings zu das ich sie nicht ganz verstehe ... Du meinst also drei verschiedene VI's mit dem entsprechendem Task? Auch mit den Daten für die Anlage? Und wie sollen die Unterschieden werden wenn nich mit Switch-Case?

Ich hab mich mit Queues noch nicht wirklich auseinander gesetzt, aber das was ich gerade auf die schnelle lesen könnte klingt sehr nach C, LIFO und FIFO, wars das dann auch schon oder kann LV mehr?


RE: verschiedene DLLs über ein Libary Fct Node - GerdW - 19.08.2011 12:37

Hallo Daniel,

du könntest für jeden Prüfstand ein VI anlegen, was dann geladen/gestartet wird.
Oder (individueller anpassbar) für jeden DAQmx-Teil ein VI, was nachgeladen wird...
Guckst du in den Beispielen nach "VI Server"!

Queue: Ist erstmal nur ein FIFO. Aber einer mit eigenständiger Speicherverwaltung und sich bei Bedarf automatisch verlängernder Warteschlange...
Guckst du in den Beispielen nach "Queue"...