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!
29.08.2013, 09:58 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2013 10:08 von finalr.)
@Jens: Hättest du vielleicht ein Beispiel?
1)while-Schleife parallel zur Event-Struktur und den Rest so lassen?
2)Finde den Knoten "Run-VI" nicht
3)Ich habe also könnte ich alles so lassen und dann per asychronen Aufruf lösen?
Gruss Daniel
EDIT:
Ich habe jetzt den Aufruf über Referenz durch ein asynchronen Aufruf ersetzt und es scheint zu funktionieren.
Weiterhin die Option "mit Datenaufnahme" beim Erstellen der Referenz hinzugefügt.
zu:
1) Stichwort hierzu wäre eine Producer-Consumer-Struktur, zu finden u.a. unter den VI Templates von LabVIEW. Per Notifier oder Queue löst du in einer parallelen Schleife den Start deiner Messprozedur aus.
2 )"Run VI" ist eine Methode der Klasse VI, keine Eigenschaft, vielleicht findest du es deshalb nicht?
3) Probieren geht über Studieren. Hilfe durchlesen, Beispiele im NI Example Finder anschauen, und testen. Sollte prinzipiell gehen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
mit hilfe des asynchronen Aufrufs kann ich zwar das Haupt-VI nun bedienen (nicht mehr eingefroren), aber sobald ich das Prüf-VI per Referenz beenden möchte, kommt folgender Fehler:
Fehler 0 bei nicht identifizierter Position.
Mögliche Fehlerursache: Fehler beim Herstellen einer Verbindung zum GPIB-Treiber oder Gerät.
29.08.2013, 10:56 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2013 11:04 von jg.)
(29.08.2013 10:44 )finalr schrieb: mit hilfe des asynchronen Aufrufs kann ich zwar das Haupt-VI nun bedienen (nicht mehr eingefroren), aber sobald ich das Prüf-VI per Referenz beenden möchte, kommt folgender Fehler:
Fehler 0 bei nicht identifizierter Position.
Mögliche Fehlerursache: Fehler beim Herstellen einer Verbindung zum GPIB-Treiber oder Gerät.
Das kann alles Mögliche sein. , ich kenne deinen Code nicht.
Gruß, Jens
EDIT: Kannst du deinen Prüfablauf überhaupt sauber unterbrechen? Laut Screenshot ist das als starre Sequenz programmiert, da erfordert ein Unterbrechen immer einiges an Klimmzügen.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ich frage vor jedem Aufruf eines VI's ab, ob beendet werden soll.
Aber ich bekomme leider den schon erwähnten Fehler nicht raus.
Es klappt soweit, bis der Prüfablauf auf die NI-Karte zugreift.
Im Haupt-VI werden periodisch Daten von der NI-Karte abgefragt, kann es sein, dass es dort zu einer Kollision kommt?
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Aufruf über Referenz
Dann bitte . Da steht noch LabVIEW 2010.
Gruß Markus
(29.08.2013 09:58 )finalr schrieb: Ich habe
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
(29.08.2013 09:46 )jg schrieb: @Marko: Haken oder nicht, das nützt bei dem Aufbau nichts. Wie schon gesagt, Call by Reference ist identisch zu einem SubVI Aufruf. Die Node wartet also, bis das SubVI abgearbeitet ist. Erst dann wird die Event Struktur beendet und erst danach kann ein weiteres Event verarbeitet werden.
THINK Dataflow.
Gruß, Jens
@Jens,:
Dass in einer Eventstruktur ein ausgeführtes Event nicht durch ein neu aufgerufenes abgebrochen werden kann, ist schon klar. Wenn aber das gestartete SubVI durch Abfrage der glob. Var. oder der reference gestoppt werden kann, dann ist es ja auch abbrechbar. Und wenn das Problem ist, dass der Abbrechen-Knopf nicht gedrückt werden kann, dann ist ja offensichtlich das FP gesperrt.
Wenn also das Sub-VI per Referenz auf den Status eines Schalters reagierte und dann abbräche, dann wäre doch das Problem behoben, oder ?
Die glob. Variable müsste natürlich im übergeordneten VI erst geschrieben werden, was natürlich nur parallel ginge - deshalb ja auch mein Tip über die Referenz des Knopfes.
@Marko: THINK Dataflow: Damit dein Vorschlag funktioniert, muss auch eine Möglichkeit bestehen, dass der neue Wert des Abbruch-Button an eine globale Variable weitergegeben wird, so wir du es vorschlägst. Das geht dann aber nur, wenn der Abbruch-Button nicht in der Event-Struktur sondern in einer parallelen Schleife abgefragt wird.
Damit sind wir wieder beim Hinweis, dass lange andauernde Prozesse prinzipiell nicht in den Case einer Event-Struktur gehören. (Stichwort: Producer-Consumer o.ä.).
@finalr: Weiterhin , bin deinen spärlichen Information lässt sich keine eindeutige Fehleraussage treffen. Parallele Zugriffe auf eine Hardware-Resource können natürlich zu Problemen führen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(30.08.2013 10:08 )jg schrieb: @Marko: THINK Dataflow: Damit dein Vorschlag funktioniert, muss auch eine Möglichkeit bestehen, dass der neue Wert des Abbruch-Button an eine globale Variable weitergegeben wird, so wir du es vorschlägst. Das geht dann aber nur, wenn der Abbruch-Button nicht in der Event-Struktur sondern in einer parallelen Schleife abgefragt wird.
Gruß, Jens
Was könnte ich denn hiermit gemeint haben?
(29.08.2013 19:54 )Trinitatis schrieb: Die glob. Variable müsste natürlich im übergeordneten VI erst geschrieben werden, was natürlich nur parallel ginge - deshalb ja auch mein Tip über die Referenz des Knopfes.
Ich habe lediglich 2 Möglichkeiten aufgezeigt, mit denen es ginge, die aber beide eine Anpassung des Quellcodes beinhalten.