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 

Versorgung paralleler Schleifen durch Melder



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!

21.04.2016, 12:27
Beitrag #1

Umpalumpa Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2016

LV Student 2015
2015
DE



Versorgung paralleler Schleifen durch Melder
Hallo zusammen,

ich versuche mich erst seit kurzem an LabVIEW und möchte gerne ein VI zu programmieren, welches Messwerte über DAQ einlesen kann, Fehler erkennt und entsprechende Ausgangsbefehle an externe Schaltgeräte sendet.
Soweit funktioniert auch alles wie es soll, nur möchte ich jetzt gerne in 2 Schleifen parallel die Messwerte auswerten lassen (z.B. in einer Schleife die der Geräte 1-4 und in der zweiten für die Geräte 5-8).
Ich bin hier schon auf den Ansatz der QSM gestoßen, habe mich aber aufgrund der "mehrere Quellen, eine Senke"-Problematik gegen Queues und für Melder entschieden.

Um meinen Ansatz zu verdeutlichen, habe ich mal ein Bild des VI angehängt.

Nun zu meinen Fragen:
1. Grundlegend: Sind Melder überhaupt für diese Anwendung geeignet?
2. Können Messwerte verloren gehen, ohne in den Schleifen ausgelesen worden zu sein, da diese zu schnell überschrieben werden?
3. Da die Schleifen nur im Fehlerfall stoppen, wird der Melder im Normalfall nicht freigegeben. Kommt es dadurch zum Überlaufen des Speichers? Falls ja, wie müsste ich die Sache angehen?
4. Ist es möglich, die Schleifendurchläufe zu synchronisieren, sodass eine Schleife nicht schon weitere Messwerte bearbeitet, während die andere noch mit älteren zu tun hat?
5. Ist die die globale Variable "Ausgänge" geeignet zur Übermittlung der Schaltbefehle?

Das ist nun ziemlich viel auf einmal aber ich hoffe, ihr könnt mir bei dem einen oder anderen Punkt helfen!

Viele Grüße,

Lars


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.04.2016, 13:03 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2016 13:04 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Versorgung paralleler Schleifen durch Melder
Hallo Umpa,

dein Konzept hat einen Pferdefuss, und der heißt "Race Condition"!
Du setzt in zwei parallelen Schleifen die globale Variable "Ausgänge" und liest diese in einer weiteren Schleife. Leider weißt du nie, welchen der beiden gesetzten Werte du liest!

Zitat:nur möchte ich jetzt gerne in 2 Schleifen parallel die Messwerte auswerten lassen (z.B. in einer Schleife die der Geräte 1-4 und in der zweiten für die Geräte 5-8).
Dann verteile deine Messwerte eben auf 2 Queues: "Gerät 1-4" für die erste Consumer-Loop und "Gerät 5-8" für die zweite!

Und Richtung Hardware-Ausgabe dann zwei Melder, die jeweils andere Schalter/Ausgabekanäle vorgeben…

1. Jein. (s.o.)
2. Vermeidet man mit Queues.
3. Vermeidet man mit TimeOuts.
4. Vermeidet man mit Queues.
5. Nein. (s.o.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2016, 13:06 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2016 13:08 von jg.)
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Versorgung paralleler Schleifen durch Melder
(21.04.2016 12:27 )Umpalumpa schrieb:  Nun zu meinen Fragen:
1. Grundlegend: Sind Melder überhaupt für diese Anwendung geeignet?
Das hängt davon ab...
(21.04.2016 12:27 )Umpalumpa schrieb:  2. Können Messwerte verloren gehen, ohne in den Schleifen ausgelesen worden zu sein, da diese zu schnell überschrieben werden?
Ja, bzw. es könnte sein, dass bestimmte Messwerte nicht verarbeitet werden. Ob dir das Probleme macht, das musst du entscheiden.
(21.04.2016 12:27 )Umpalumpa schrieb:  3. Da die Schleifen nur im Fehlerfall stoppen, wird der Melder im Normalfall nicht freigegeben. Kommt es dadurch zum Überlaufen des Speichers? Falls ja, wie müsste ich die Sache angehen?
Sieht auf den ersten Blick in deinem Bsp nicht so aus.
(21.04.2016 12:27 )Umpalumpa schrieb:  4. Ist es möglich, die Schleifendurchläufe zu synchronisieren, sodass eine Schleife nicht schon weitere Messwerte bearbeitet, während die andere noch mit älteren zu tun hat?
Möglich ist viel. Im einfachsten Fall verzichtest du auf die parallelen Schleifen
(21.04.2016 12:27 )Umpalumpa schrieb:  5. Ist die die globale Variable "Ausgänge" geeignet zur Übermittlung der Schaltbefehle?
Definitiv NEIN, Sichwort Race-Condition. Du setzt von 2 Schleifen dasselbe globale Array, überschreibst also dauernd gegenseitig Werte aus der jeweils anderen Schleife.

Gruß, Jens

EDIT: Wieder mal 2 Stühle, 1 Meinung. Smile

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
21.04.2016, 13:49
Beitrag #4

Umpalumpa Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2016

LV Student 2015
2015
DE



RE: Versorgung paralleler Schleifen durch Melder
Hallo und danke für die schnelle Hilfe!

Okay, ich schließe daraus, dass ich eher nicht den Umweg über Melder gehen sondern eher mit 2 Queues arbeiten sollte, da mir die Vollständigkeit der Verarbeitung am Herzen liegt.
Da ich die Kanalzuweisung jedoch nicht von vornherein festlegen möchte und diese über das Frontpanel geändert werden können soll, muss ich den komplette Datensatz an beide Queues übergeben, sodass sich die jeweiligen Schleifen "ihre" Werte raussuchen können.

Wird sich das Programm deutlich verlangsamen, wenn ich 2 Queues mit allen Messwerten laufen lasse?

Das Problem der Race-Condition mit einer globalen Variable leuchtet ein!

Viele Grüße,

Lars
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2016, 14:25 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2016 14:35 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Versorgung paralleler Schleifen durch Melder
(21.04.2016 12:27 )Umpalumpa schrieb:  Ich bin hier schon auf den Ansatz der QSM gestoßen, habe mich aber aufgrund der "mehrere Quellen, eine Senke"-Problematik gegen Queues und für Melder entschieden.
Hier liegts Du definitiv falsch. Ein Queue kann viele Qellen haben, aber nur eine Senke. Also sind Queues hier genau richtig.
Die Senke sollte allerdings wissen sollen, aus welcher Quelle die Daten kommen. Deshalb sollte das Datenformat der Queue ein Cluster sein, bestehend aus Absenderadresse (Enum) und Daten. Und falls, wie meistens, die Daten aus den unterschiedlichen Quellen unterschiedliches Format haben, dann sollte das Datenformat ein Variant sein.
Und versuche Dich nicht mit mehreren Queues. Mit einer einzigen Queue, betehend aus einem Cluster mit Enum und Variant, wirst Du glücklich werden. Alles andere ist Mumpitz.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2016, 14:49
Beitrag #6

Umpalumpa Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2016

LV Student 2015
2015
DE



RE: Versorgung paralleler Schleifen durch Melder
(21.04.2016 14:25 )Lucki schrieb:  Hier liegts Du definitiv falsch. Ein Queue kann viele Qellen haben, aber nur eine Senke. Also sind Queues hier genau richtig.

Das war es ja, was ich meinte. Ich habe zwar nur eine Quelle (auch wenn mehrere funktionieren würden), kann aber nur eine Senke bedienen mit einer Queue. Aber ich möchte ja 2 While-Schleifen, also 2 Senken bedienen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2016, 16:17 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2016 16:12 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Versorgung paralleler Schleifen durch Melder
Entschuldigung, da habe ich das sozusagen Kleingedruckte (nicht fett gedruckte) in deinem Posting überlesen...
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
  Paralleler Betrieb zweier Netzwerkgeräte via UTP Mr_Futile 1 3.396 26.09.2013 15:50
Letzter Beitrag: GerdW

Gehe zu: