23.02.2015, 19:49
23.02.2015, 20:05
Ganz allgemeine Antwort: Ja.
Im speziellen: Ich weiß jetzt nicht, auf welches VI du dich beziehst, aber wenn es irgendwelche internen Werte zwischen den Aufrufen speichert, dann musst du darauf achten, dass das VI reentrant ist.
Gruß, Jens
Im speziellen: Ich weiß jetzt nicht, auf welches VI du dich beziehst, aber wenn es irgendwelche internen Werte zwischen den Aufrufen speichert, dann musst du darauf achten, dass das VI reentrant ist.
Gruß, Jens
23.02.2015, 23:17
Hallo,
da ich nur die Studentenversion besitze, konnte ich mich auf keine Beispiel-VI aus der Bibliothek beziehen.
Da ich kaum Erfahrung mit LabView habe, bin ich hier im Forum auf einen PID-Regler gestoßen, den dann auch verdrahtet habe und somit die Luftfeuchtigkeit einigermaßen geregelt bekommen habe. Nun wollte ich einen 2. PID-Regler in das Programm einsetzen, der mir den Flow regeln sollte. Leider funktioniert es nicht wie geplant .
Könntest Du deinen Satz genauer erläutern? Wie sollte ich dabei vorgehen, um das VI reentrant zu machen?
Grüße,
Alex
da ich nur die Studentenversion besitze, konnte ich mich auf keine Beispiel-VI aus der Bibliothek beziehen.
Da ich kaum Erfahrung mit LabView habe, bin ich hier im Forum auf einen PID-Regler gestoßen, den dann auch verdrahtet habe und somit die Luftfeuchtigkeit einigermaßen geregelt bekommen habe. Nun wollte ich einen 2. PID-Regler in das Programm einsetzen, der mir den Flow regeln sollte. Leider funktioniert es nicht wie geplant .
Könntest Du deinen Satz genauer erläutern? Wie sollte ich dabei vorgehen, um das VI reentrant zu machen?
Grüße,
Alex
24.02.2015, 08:44
Hallo Alex,
"reentrant"
- Normalerweise ist ein subVI nur einmal im Speicher und kann nicht parallel ausgeführt werden. Wenn aber ein VI mehrfach und parallel ausgeführt werden soll, muss es reentrant sein.
- Wenn ein VI interne Speicher verwendet (Schieberegister!, FeedbackNode!) und man es mehrfach/parallel aufruft, muss es reentrant sein, da sonst in verschiedenen Instanzen auf die gleichen Speicherstellen zurückgegriffen wird -> Kollision…
Dein SimplePID erfüllt beide Bedingungen: mehrfach parallele Nutzung und interne Speicher…
Nachtrag:
"reentrant"
- Normalerweise ist ein subVI nur einmal im Speicher und kann nicht parallel ausgeführt werden. Wenn aber ein VI mehrfach und parallel ausgeführt werden soll, muss es reentrant sein.
- Wenn ein VI interne Speicher verwendet (Schieberegister!, FeedbackNode!) und man es mehrfach/parallel aufruft, muss es reentrant sein, da sonst in verschiedenen Instanzen auf die gleichen Speicherstellen zurückgegriffen wird -> Kollision…
Dein SimplePID erfüllt beide Bedingungen: mehrfach parallele Nutzung und interne Speicher…
Nachtrag:
Zitat:bin ich hier im Forum auf einen PID-Regler gestoßenWenn man sich auf andere Forumsbeiträge bezieht, sollte man auch einen Link darauf angeben. Dann wissen alle sofort, worum es sich handelt…
24.02.2015, 13:38
Hallo Gerd,
vielen Dank für deine sehr verständliche Antwort! Hat mir sehr geholfen
Grüße,
Alex
vielen Dank für deine sehr verständliche Antwort! Hat mir sehr geholfen
Grüße,
Alex
24.02.2015, 13:46
(23.02.2015 23:17 )Alex_91 schrieb: [ -> ]Könntest Du deinen Satz genauer erläutern? Wie sollte ich dabei vorgehen, um das VI reentrant zu machen?Um diese eigentliche Frage zu beantworten:
Mit rechter Maustaste auf das Ikon rechts oben klicken --> VI-Eigenschaften --> Ausführung
--> ablaufinvariante Ausführung
Die schlechtere Alternative wäre, den beiden Reglern unterschiedliche Namen zu geben, also z.B PID1.vi und PID2.vi. Rein ausführungstechnisch wäre das etwa das Gleiche.
Dass der PID-Regeler nicht mit mit in der Beispielsammlung ist, hat nichts mit der Studentenversion zu tun. Er war bei älteren Versionen dabei, aber dann brachte NI ein kostenpflichtiges Regler-Zusatzmodul heraus. Warum mag wohl ab diesem Zeitpunkt das Beispiel nicht mehr in der Grundversion enthalten sein?
Ich glaube ich war es, der das alte Beispiel mal hier gepostet hatte, und es macht von den Downloads her Karriere. Hoffentlich macht man mich nicht verantwortlich, wenn NI deswegen vor die Hunde geht.