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 

Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht



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!

28.10.2014, 10:12
Beitrag #1

dali4u Offline
LVF-Stammgast
***


Beiträge: 298
Registriert seit: Aug 2008

12SP1, 14SP1
2007
DE


Deutschland
Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht
Hi Leute,
ich bin gerade dabei für ein sehr umfangreiches Projekt ein komplett neues
Grundgerüst aufzustellen. Es sind 6 Schleifen die über Nachrichten-Queue
miteinander kommunizieren sollen und schon taucht das erste Problem auf.
In meiner Event-Schleife wird zwar "Exit" ausgeführt, aber die anderen Schleifen
erreicht es nicht und ich stehe auf dem Schlauch.

Kann mir jemand sagen was da falsch läuft? Komme nicht weiter.
VIs sind in LabVIEW 2012.

Stefan


Angehängte Datei(en)
0.0 .zip  mainvi.zip (Größe: 136,61 KB / Downloads: 251)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.10.2014, 10:21
Beitrag #2

Morpheus Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 205
Registriert seit: Jul 2009

2019 SP1, 2020 SP1
2005
EN

8000
Schweiz
RE: Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht
Das Problem ist, dass du beim Drücken des "Exit" Buttons den Loop mit dem Event-Handler nicht beendest.
Und der User-Event (Stop Event), den du auslöst, wird ebenfalls nicht abgehandelt!

Gruss
Chris
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.10.2014, 10:30
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht
Unschönheit:
Da dein Dequeue-Message-VI einerseits nicht reentrant ist, andererseits aber unendlich auf ein Dequeue wartet, kannst du nicht parallel an alle Consumer-Loops Nachrichten verschicken.
Bsp: Das Dequeue VI gerade in der Loop Fehlerbehandlung aktiv, und du schickst jetzt was an Kalibrierung. FAIL.

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.10.2014, 11:10 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2014 11:11 von dali4u.)
Beitrag #4

dali4u Offline
LVF-Stammgast
***


Beiträge: 298
Registriert seit: Aug 2008

12SP1, 14SP1
2007
DE


Deutschland
RE: Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht
(28.10.2014 10:30 )jg schrieb:  Unschönheit:
Da dein Dequeue-Message-VI einerseits nicht reentrant ist, andererseits aber unendlich auf ein Dequeue wartet, kannst du nicht parallel an alle Consumer-Loops Nachrichten verschicken.
Bsp: Das Dequeue VI gerade in der Loop Fehlerbehandlung aktiv, und du schickst jetzt was an Kalibrierung. FAIL.

Hi Jens,

arbeite das erste Mail mit einem solchen Aufbau, daher noch Versuchsstadium und
offen für alle Vorschläge. Schande über mein Haupt, aber "reentrant" sagt mir nicht
wirklich was. Habe zwar gelesen was es bedeutet aber wie mich das betrifft weiß ich
nicht.

In der Schleife Kalibrierung wird eine Statemaschine auflaufen die immer wieder
mit anderen Vorgaben und Abäufen gestartet werden sollte. Es wird rund 40-50 verschiedene
States geben aus denen rund 10-15 genutzt werden, wenn ein bestimmte Kalibrierrezept
gestartet wird. Bei einem anderen Kalibrier-Rezept können dass ganz andere sein.

Aus Kalibrierung heraus, wenn die über die Nachrichten-Queue "Start" erhält.
-> State: Druckänderung ein bestimmten Druckwert, z.B. 100mbar und warten bis Druckwert erreicht wird
-> State: Kalibrierung durchführen
-> State: Kalibrierwerte protokollieren und speichern
-> State: und mit anderem Druck weiter...
.. alle States durchlaufen und IDLE Mode. Ein Durchlauf der gewünschen States kann mehrere Stunden dauern
und rund 5 bis 10 mal werden Daten an die Protokollierung gesendet, nicht öfter. Zeitgleicher Aufruf ist ausgeschlossen.

Druckregelung:
-> hier läuft eine Statemaschine mit PID Regelung.
-> "Init" Voreinstellungen laden
-> "Start" PID Druckregelung läuft in einer Schleife, die Schleife kann NICHT über die
Nachrichten-Queue gestoppt werden. Ob das alles so geht muss ich noch testen.
Das wird vermutlich nicht funktionieren, oder? Die Nachrichten-Queue der Druckregelung
muss ich dann löschen und durch eine reine Statemaschine ersetzen, vermutlich besser.

Fehlerbehandlung:
-> hier sollten alle Fehler auflaufen und in einer Tabelle angezeigt werden, mehr nicht, soll
nur das Debug erleichtern. Das Dequeue kann hier unendlich warten bis ein neuer Fehler mit den
Nachrichtendaten übertragen wird und in der Tabelle angezeigt werden soll.

Danke
Stefan
(28.10.2014 10:21 )Morpheus schrieb:  Das Problem ist, dass du beim Drücken des "Exit" Buttons den Loop mit dem Event-Handler nicht beendest.
Und der User-Event (Stop Event), den du auslöst, wird ebenfalls nicht abgehandelt!

Ups, den hatte ich vergessen. Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.10.2014, 11:48 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2014 11:48 von jg.)
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht
Reentrant oder ablaufinvariant ist eine VI-Eigenschaft (Rechtsklick -> VI-Eigenschaften).

Im Normalfall kann ein VI ja nur 1x im Speicher sein und nur an 1 Stelle aufgerufen werden. Wenn es mehrfach parallel verwendet wird, dann wartet eine zweite Instanz solange, bis die erste Instanz mit der Abarbeitung fertig ist (sehr sinnvoll einsetzbar bei FGVs).

Anders bei Reentrant, dann kann das VI auch mehrfach parallel aufgerufen werden, jedes (Sub)VI ist dann eine eigene VI-Instanz.

Nach über 6 Jahren LabVIEW solltest du davon eigentlich schon mal gehört haben... Wink

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  CAN-Nachrichten ändern ta1997 5 3.460 05.05.2022 13:38
Letzter Beitrag: GerdW
  CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten Tomate27 4 4.541 17.07.2020 13:30
Letzter Beitrag: Tomate27
  Frontpanel wird beim beenden nicht immer geschlossen Winterkind 4 3.516 08.04.2020 08:30
Letzter Beitrag: Freddy
  Default Wert wird nicht gespeichert ares2013 8 6.683 27.02.2020 12:51
Letzter Beitrag: jg
  Probleme mit Queues und Programmaufbau stefan1312 6 5.397 30.10.2018 17:08
Letzter Beitrag: NoWay
  Drei Queues in einer While-Schleife mit case-Struktur EinVolvic 12 13.129 17.05.2017 20:25
Letzter Beitrag: EinVolvic

Gehe zu: