SubVI ausführen, wenn Eingänge noch nicht anliegen
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!
SubVI ausführen, wenn Eingänge noch nicht anliegen
Hallo,
mir kam gerade eine Frage auf, zu der ich leider nichts finden konnte.
Ich habe ein SubVI in einem zeitkritischen Abschnitt. Dieses koennte bereits loslegen und rechnen, waehrend ein Eingang (der erst an spaeterer Stelle im SubVI gebraucht wird) noch gar nicht anliegt. Kann ich eine Einstellung vornehmen, das das VI bereits startet obwohl der Wert eines Eingangs noch nciht anliegt und es erst dann mit der Ausfuehrung wartet, bis es diesen Wert auch wirklich braucht?
SubVI ausführen, wenn Eingänge noch nicht anliegen
Moeglichkeit 1 wenn RT nicht vorhanden ist: Queue mit element size 1
Moeglichkeit 2 wenn RT vorhanden ist (egal ob windows oder RT): RT FIFO mit element size 1
SubVI ausführen, wenn Eingänge noch nicht anliegen
' schrieb:Kann ich eine Einstellung vornehmen, das das VI bereits startet obwohl der Wert eines Eingangs noch nciht anliegt und es erst dann mit der Ausfuehrung wartet, bis es diesen Wert auch wirklich braucht?
Du könntest die Berechnung einfach auf zwei SubVIs aufteilen...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
SubVI ausführen, wenn Eingänge noch nicht anliegen
' schrieb:Moeglichkeit 1 wenn RT nicht vorhanden ist: Queue mit element size 1
Moeglichkeit 2 wenn RT vorhanden ist (egal ob windows oder RT): RT FIFO mit element size 1
Hallo,
was verbirgt sich denn hinter der Abkürzung RT?
Gruß
SubVI ausführen, wenn Eingänge noch nicht anliegen
' schrieb:Du könntest die Berechnung einfach auf zwei SubVIs aufteilen...
Ja das stimmt, das habe ich auch Notloesung dann auch im hinterkopf. Allerdings wuerde ich das VI gerne so bestehen lassen.
' schrieb:Moeglichkeit 1 wenn RT nicht vorhanden ist: Queue mit element size 1
Moeglichkeit 2 wenn RT vorhanden ist (egal ob windows oder RT): RT FIFO mit element size 1
Real-Time ist nicht vorhanden. Du meinst also den kritischen Eingang nicht "normal" als Eingang implementieren sondern mit Hilfe einer Queue zu uebergeben..? Das ist schon gar nicht so schlecht, ja. Aber eine Eigenschaft am SubVI, welches diesem eine Ausfuehrung soweit moeglich erlaubt, exestiert so nicht?
SubVI ausführen, wenn Eingänge noch nicht anliegen
' schrieb:Ja das stimmt, das habe ich auch Notloesung dann auch im hinterkopf. Allerdings wuerde ich das VI gerne so bestehen lassen.
Es sollte eingentlich keine Notlösung sein, sondern die erste Lösung. Du berechnest im ersten VI was du kannst (Zwischenlösung als Ausgang), dann wartest du im zweiten VI auf die restlichen Daten und setzt deine Berechnung fort (Zwischenlösung als Eingang).
Was ist dran so schwer? Warum willst du dein VI beibehalten? Mit Queues in dem Falle machst du es viel komplexer.
SubVI ausführen, wenn Eingänge noch nicht anliegen
' schrieb:Es sollte eingentlich keine Notlösung sein, sondern die erste Lösung. Du berechnest im ersten VI was du kannst (Zwischenlösung als Ausgang), dann wartest du im zweiten VI auf die restlichen Daten und setzt deine Berechnung fort (Zwischenlösung als Eingang).
Was ist dran so schwer? Warum willst du dein VI beibehalten? Mit Queues in dem Falle machst du es viel komplexer.
Ja, ich was soll ich da nun viel dazu sagen. Es ist klar, das deine Aussage grundsaetzlich stimmt. In meinem SubVI werden Metadaten eines Bildes von Festplatte, vom laufenden Programm und eben auch von einem Bild, welches im zeitkritischen Abschnitt aber parallel dazu erst aufgenommen wird, gesammelt. Aus den Daten entstehen teils neue, sodass es bei einer Teilung des Vi's, zwei VI's gaebe, von denen das eine viele Ausgaenge, das andere viele Eingaenge besitzt. Auch von der Funktionalitaet waere es schoen das VI so bestehen zu lassen. In dem Fall haette ich eine Eigenschaft des SubVI's eben schoen gefunden, das diesem erlaubt loszulegen, bis es eben zu den noch nciht anliegenden Daten kommt.
SubVI ausführen, wenn Eingänge noch nicht anliegen
Mir kam grad die idee, einen boolschen Eingang zu erzeugen, der angibt ob die Daten schon schon komplett anliegen
-> falls ja, rechnet das Vi einfach wie immer (so kann ich dasselbe VI auch an anderen stellen des programms bestehen lassen, wo es nicht unter "Zeitdruck" steht)
-> falls nein lege ich an die fehlenden Eingaenge Dummywerte (Konstanten) an und hole die Daten an der entsprechenden Stelle im VI ueber eine Queue.
Allerdings mal abwarten ob das mit der zusaetlichen Logik dann noch einen Zeitvorteil bringt, auch weil ich ja die Queue pollen muss...