INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Queue erzeugt Fehler 1 bei jeder zweiten Ausführung



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!

10.07.2012, 07:44
Beitrag #1

LazyBoNe Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Jul 2012

11.0.1 (32bit)
2010
DE_EN


Sonstige
Queue erzeugt Fehler 1 bei jeder zweiten Ausführung
Hallo zusammen.

Ziel: Einen Wizard für vereinfachte Steuerung eines grossen VI erstellen.

Dafür habe ich den Wizard in einer parallel zum Hauptprogramm laufenden Schleife in einem Sub-VI programmiert. Im Angang befindet sich ein Dummy mit Patientendaten (Hans Mustermann) und Grundsignal (Basic). Das Programm wird vom DummyWizardTesting gestartet und dabei das SubVi Wizard gestartet.
Die Übergabe von Messdaten habe ich mittels Queu realisiert, welches die Referenz in das Sub-VI übergibt und dort ausgelesen wird.

Nun ist es so, dass das alles funktioniert bei der ersten Ausführung. Bei der zweiten Ausführung (Nach drücken eines der Beenden Buttons) kommt eine Fehlermeldung Fehler 1 (Anhang) beim Starten. Bei einer nächsten Ausführung funktioniert es wieder. Bei jeder zweiten Ausführung erhalte ich denselben Fehler.Blink

Wo könnte das Problem liegen?

Bin mit meinem VI-Latein am Ende und konnte via Forum Suche und google keine Antwort finden. Sad Ich hoffe, jemand kann mir helfen Smile

Liebe Grüsse,
LazyBoNe


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  DummyWizardTesting_v1.51.vi (Größe: 132,18 KB / Downloads: 177)

11.0 .vi  Wizard_v1.11.vi (Größe: 70,29 KB / Downloads: 194)

0.0 .txt  Basic.txt (Größe: 29 Bytes / Downloads: 262)

0.0 .txt  000_Hanspeter_Mustermann.txt (Größe: 87 Bytes / Downloads: 245)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.07.2012, 08:06 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2012 08:11 von GerdW.)
Beitrag #2

GerdW Online
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Queue erzeugt Fehler 1 bei jeder zweiten Ausführung
Hallo LazyBoNe,

1) ich kann das VI nicht laufen lassen, es fehlt ein subVI und ich habe SignalExpress nicht installiert...
2) Das SignalExpress-VI könnte man durch ein einfaches VI aus der SignalErzeugungs-Palette ersetzen...
3) Deine VIs nutzen VIEL ZU VIELE zu viele lokale Variablen!!!
4) Dein Wizard enthält keine Schleife, läuft also nur für ca 100ms?
5) Hast du schon mal debugged, wo der Fehler auftritt?
6) Der Wizard ließe sich wunderbar in eine Statemachine unterbringen, jeder Tab entspräche einem State...
7) Du hast viel unnützen/komplizierten Code (sogenannte RubeGoldbergs): wozu muss man einen boolschen Wert mit TRUE vergleichen? (Da ist noch vieles mehr...)
8) Zum Datenaustausch zwischen Wizard und Testing würde ich eine FGV empfehlen, die die diversen Bits/Werte speichert und zur Verfügung stellt. Zur Datenspeicherung dieser Werte würde sich ein (typdefinierter) Cluster anbieten...
9) Ich weiß ja nicht, was du für Monitore verwendest, aber eine Grundregel sagt: Ein BD sollte nie größer als die Monitorfläche sein!
10) Ebenfalls die FP-Größe: sollen deine User scrollen, wenn sie etwas sehen wollen oder eingeben müssen?
11) da käme jetzt noch vieles mehr...
12) Der Fehler dürfte ein Kombination aus Punkt 4 und der Weitergabe der Queue-Referenz sein, die du uns aber nicht zeigst! (Evtl. spielt Punkt 3 auch eine Rolle, Stichwort "RaceConditions"...)
13) Du hast echt schon 2 Jahre LabVIEW-Erfahrung?

Zitat:Das Programm wird vom DummyWizardTesting gestartet und dabei das SubVi Wizard gestartet.
Echt? Wo?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 09:34
Beitrag #3

LazyBoNe Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Jul 2012

11.0.1 (32bit)
2010
DE_EN


Sonstige
RE: Queue erzeugt Fehler 1 bei jeder zweiten Ausführung
(10.07.2012 08:06 )GerdW schrieb:  Hallo LazyBoNe,

1) ich kann das VI nicht laufen lassen, es fehlt ein subVI und ich habe SignalExpress nicht installiert...
2) Das SignalExpress-VI könnte man durch ein einfaches VI aus der SignalErzeugungs-Palette ersetzen...
3) Deine VIs nutzen VIEL ZU VIELE zu viele lokale Variablen!!!
4) Dein Wizard enthält keine Schleife, läuft also nur für ca 100ms?
5) Hast du schon mal debugged, wo der Fehler auftritt?
6) Der Wizard ließe sich wunderbar in eine Statemachine unterbringen, jeder Tab entspräche einem State...
7) Du hast viel unnützen/komplizierten Code (sogenannte RubeGoldbergs): wozu muss man einen boolschen Wert mit TRUE vergleichen? (Da ist noch vieles mehr...)
8) Zum Datenaustausch zwischen Wizard und Testing würde ich eine FGV empfehlen, die die diversen Bits/Werte speichert und zur Verfügung stellt. Zur Datenspeicherung dieser Werte würde sich ein (typdefinierter) Cluster anbieten...
9) Ich weiß ja nicht, was du für Monitore verwendest, aber eine Grundregel sagt: Ein BD sollte nie größer als die Monitorfläche sein!
10) Ebenfalls die FP-Größe: sollen deine User scrollen, wenn sie etwas sehen wollen oder eingeben müssen?
11) da käme jetzt noch vieles mehr...
12) Der Fehler dürfte ein Kombination aus Punkt 4 und der Weitergabe der Queue-Referenz sein, die du uns aber nicht zeigst! (Evtl. spielt Punkt 3 auch eine Rolle, Stichwort "RaceConditions"...)
13) Du hast echt schon 2 Jahre LabVIEW-Erfahrung?

Zitat:Das Programm wird vom DummyWizardTesting gestartet und dabei das SubVi Wizard gestartet.
Echt? Wo?

Hallo Herr GerdW

1) Nun sollte es gehen, habe das VI aus der SignalExpress ersetzt. Das VI Wizard wird nun auch korrekt erkannt. (Sorry für diesen Fehler)
2) Sehen Sie 1)
3) Ich weiss, dass dies ein grosses Thema ist. Dennoch wagte ich den Versuch, den Datenaustausch damit zu machen. Was sind Funktionelle Globale Variablen? Wo ist der Unterschied zu Globalen Variablen? Ich wusste nicht, wie ich den Datenaustausch zwischen Haupt VI und Sub-VI bewerkstelligen sollte.
4) Die Schleife befindet sich auf dem Haupt VI und läuft mit 10ms takt.
5) Ja habe ich, erscheint im Sub-VI bei Queue-Status lesen. Jedoch verstehe ich nicht, WAS falsch ist.
6) Hatte ich versucht, hatte aber Probleme mit dem Datenaustausch mit Queues.
7) Ja, darum geht es aber hier nicht. Denkfehler macht jeder und dieses VI ist ein Dummy, welches in ein grosses Programm integriert wird. Deshalb auch die nichts aussagenden Messerte...
8) Genau dies war für mich die Schwierigkeit. Gibt es dazu ein gutes Beispiel?
9) Ganz normaler Full HD Monitor, wie er zur heutigen Zeit Standardmässig verwendet wird. Wie gesagt: VI ist ein Prototyp. Habs für Sie korrigiert. FrontPanel von Haupt VI ist nur begrenzt von Interesse bei meinem Problem.
10) Es geht um den Wizard, dessen FP ist genügend klein, noch nicht fertig und wird noch für user angepasst.
11) ...
12) Würde Sie sich das VI freundlicherweise noch einmal anschauen und den Fehler begutachten?
13) Ich habe mein Profil angepasst damit ich solche beleidigenden Fragen nicht nochmal lesen muss.

Das Haupt VI muss gestartet werden, Run, dann erscheint Wizard, nachdem dieser mit Beenden beendet wurde erscheint Fehler bei nächster Ausführung.

Im Angang die korrigierte Version.

Mit freundlichen Grüssen
LazyBoNe


Angehängte Datei(en)
11.0 .vi  DummyWizardTesting_v1.52.vi (Größe: 91,16 KB / Downloads: 195)

11.0 .vi  Wizard_v1.12.vi (Größe: 70,16 KB / Downloads: 187)

0.0 .txt  000_Hanspeter_Mustermann.txt (Größe: 87 Bytes / Downloads: 232)

0.0 .txt  Basic.txt (Größe: 29 Bytes / Downloads: 246)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2012, 07:48 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2012 07:49 von GerdW.)
Beitrag #4

GerdW Online
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Queue erzeugt Fehler 1 bei jeder zweiten Ausführung
Hallo LazyBoNe,

erstmal vorne weg:
Zitat:13) Ich habe mein Profil angepasst damit ich solche beleidigenden Fragen nicht nochmal lesen muss.
Die Fragen waren in keinster Weise beleidigend gemeint. Eigentlich wollte ich nur 2 oder 3 Punkte schreiben, aber der ganze Rest kam hinzu nach dem Betrachten deiner beiden VIs. Und wenn man dann noch lesen muss, derjenige hätte schon 2 Jahre mit LabVIEW gearbeitet...

Problem gefunden: RaceCondition aufgrund übermäßiger Nutzung lokaler Variablen!
Ursache: RaceCondition der lokalen Variable "Wizard beenden"...

Umfassende Lösung: Die ganzen lokale Variablen, die vom Wizard gesetzt werden, durch eine einzige FGV ersetzen.
Quick&Dirty: Die Queue erst dann löschen, wenn wirklich alle While-Schleifen beendet wurden.

Zum Thema FGVs (oder auch AE=ActionEngines oder auch LV2-StyleGlobals) findest du hier im Forum und auch im NI-Forum sehr viele gute Beiträge mit guten Erläuterungen. Einfach mal suchen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2012, 08:13
Beitrag #5

LazyBoNe Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Jul 2012

11.0.1 (32bit)
2010
DE_EN


Sonstige
RE: Queue erzeugt Fehler 1 bei jeder zweiten Ausführung
(11.07.2012 07:48 )GerdW schrieb:  Hallo LazyBoNe,

erstmal vorne weg:
Zitat:13) Ich habe mein Profil angepasst damit ich solche beleidigenden Fragen nicht nochmal lesen muss.
Die Fragen waren in keinster Weise beleidigend gemeint. Eigentlich wollte ich nur 2 oder 3 Punkte schreiben, aber der ganze Rest kam hinzu nach dem Betrachten deiner beiden VIs. Und wenn man dann noch lesen muss, derjenige hätte schon 2 Jahre mit LabVIEW gearbeitet...

Problem gefunden: RaceCondition aufgrund übermäßiger Nutzung lokaler Variablen!
Ursache: RaceCondition der lokalen Variable "Wizard beenden"...

Umfassende Lösung: Die ganzen lokale Variablen, die vom Wizard gesetzt werden, durch eine einzige FGV ersetzen.
Quick&Dirty: Die Queue erst dann löschen, wenn wirklich alle While-Schleifen beendet wurden.

Zum Thema FGVs (oder auch AE=ActionEngines oder auch LV2-StyleGlobals) findest du hier im Forum und auch im NI-Forum sehr viele gute Beiträge mit guten Erläuterungen. Einfach mal suchen!

Hallo,

bei der schriftlichen Kommunikation ist es nicht ausschlaggebend, wie jedmand etwas gemeint hat, sondern wie der geschriebene Text interpretiert wird. Und ich habe Ihren Beitrag in keinster weise als freundlich aufgefasst. Die hälfte der Punkte waren Offtopic2 und für mich beleidigend aufzufassen. Der erste Eindruck des Forums war für mich somit ernüchternd. Zudem heisst es nicht, wenn ich labview seit 2010 benutze, dass ich 2 Jahre damit Erfahrung habe. Meine Aufgaben sind jeweils sehr unterschiedlich und dafür wähle ich ein geeignetes Tool aus, so siehts nunmal aus bei meinem Job.

Zurück zum Thema:

Habe die Lösung soeben gefunden, die Beenden Variable war bei einem Neustart der VI noch auf True und dies verursachte das Problem.

Lösung: Initialisieren der Beenden Variable mit False ausserhalb beider Schleifen.

Mittlerweile habe ich die Kommunikation zwischen SubVi und HauptVI mittels Globalen Variablen gelöst. RaceConditions treten dabei keine auf und der Wizard funktioniert nun einwandfrei.

Grüsse
LazyBoNe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2012, 08:21 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2012 08:25 von GerdW.)
Beitrag #6

GerdW Online
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Queue erzeugt Fehler 1 bei jeder zweiten Ausführung
Hallo LazyBoNe,

Zitat:Die hälfte der Punkte waren Offtopic und für mich beleidigend aufzufassen.
Also:
- Du hängst ein VI ran, welches nicht lauffähig ist! Man weiß nicht, was Haupt- und SubVI ist. Man muss raten, was du machst. Mindestens die Hälfte meiner Punkte beruhen auf eben diesem deinem Fehler.
- Dazu kommen die Punkte 9&10, die du mal vom Standpunkt eines handelsüblichen Laptop aus betrachten solltest: man ist nur am Scrollen in deinen VIs. Nicht gerade hilfreich für eine Fehlersuche...
- Dann noch Punkt 3 mit der Fehlerursache und Punkt 6&8 mit der möglichen Lösung (im Nachhinein betrachtet).
Tut mir leid, aber wenn du das schon als Beleidigung auffasst...

Schön, dass ich dir helfen konnte! (Sarkasmus! [Um Missverständnissen vorzubeugen!])

Zitat:Kommunikation zwischen SubVi und HauptVI mittels Globalen Variablen gelöst. RaceConditions treten dabei keine auf...
Ich glaube, wir werden uns hier wiedersehen! (Keine Beleidigung, nur eine Schlussfolgerung aus bisher gesehener Programmierung in Verbindung mit dieser Aussage...)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Case Ausführung - automatisch und einzeln ar7ur8 4 4.511 16.07.2021 15:46
Letzter Beitrag: ar7ur8
  parallele Ausführung von for-loops stsc 5 4.999 24.07.2019 15:12
Letzter Beitrag: stsc
  Zeitstempel hinter jeder messaufnahme bachatero18 5 3.163 17.02.2019 11:50
Letzter Beitrag: Lucki
  Beendet die Methode FP schließen auch die Ausführung? hansi9990 3 4.487 23.10.2017 07:41
Letzter Beitrag: GerdW
  Wie auf abgearbeitete Queue warten mez15 11 8.037 28.09.2017 13:02
Letzter Beitrag: TR61
  Datum Uhrzeit Queue DeleteAll 8 5.646 24.03.2017 15:47
Letzter Beitrag: GerdW

Gehe zu: