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 

Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues



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!

19.04.2012, 17:22
Beitrag #1

JensLV Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2012

2009
2006
DE



Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues
Hallo alle zusammen.

Ich habe folgende Problemstellung:
Ich möchte ein Programm schreiben welches mehrere Messgeräte ausliest, Auf Usereingaben reagiert, aus den Messdaten und Usereingaben Steuerbefehle generiert und diese dann wiederum an externe Hardware ausgibt. Dabei ist es so, dass die Messinstrumente unterschiedlich schnell ausgelesen werden können. Jedes Messinstrument soll mit seiner maximal möglichen Geschwindigkeit arbeiten. Die Steuerbefehle sollen aus den aktuellsten Messwerten berechnet werden, die zum Zeitpunkt des Durchlaufens des "SubVI Steuerung"-Schleife. Sollten keine neuen Messwerte von einem der Geräte generiert werden, soll der letzte gemessene Wert zur Berechnung der Steuerbefehle verwendet werden. Zudem soll das Programm möglichst Modular aufgebaut sein, um leicht Messgeräte hinzufgen zu können. Eine Skizze des Programms habe ich angehängt.

Folgende Fragen hätte ich dazu:
- Ist es möglich diese Programm mit einer Queue zu programmieren?Diese soll alle alle Variablen (Usereingaben, Messwerte, Steuerbefehle) des Programms beinhalten.
Ich habe bereits eine Version programmiert, welche genau die Anforderungen erfüllt, jedoch mehrere Queues (eine pro Messgerät, Steuer-Schleife, Frontpanel) enthält, was es wieder für andere schwer nachvollziehbar macht.

- Wenn nicht mit Queues, gibt es eine andere Möglichkeit so etwas zu programmieren?


Grüße
Jens


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.04.2012, 06:42
Beitrag #2

RMR Offline
Laborkater
**


Beiträge: 238
Registriert seit: Nov 2008

09f1 - 2010SP1(f4) - 2012SP1f5 - 2014 SP1f10 -2017f3
2009
DE_EN

76437
Deutschland
RE: Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues
Hallo Jens,

ich hoffe ich habe deine Problemstellung verstanden.
Die Anwendung von Queues ist schon mal ein sehr guter Ansatz. Dies stellt sicher, dass deine übermittelten Daten über identische Zeitstempel verfügen.
Was ich nicht ganz verstanden habe, wie willst du mit einer Queue Frontpaneleingaben, Messwerte und Ergebnisse übermitteln?
Eine Queue ist eine "Einbahnstraße". Wie sollen deine Messwerte von der Erfassung zur Verabeitung und weiter zur Ausgabe kommen?

Suche hier im Forum nach den Stichworten "Producer / Consumer". Dort findest du viele Beispiele für dein Problem.

Hoffe etwas geholfen zu haben.

VG, Ralf aka RMR

100nF passen immer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 07:12
Beitrag #3

JensLV Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2012

2009
2006
DE



RE: Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues
Hallo Ralf,

schonmal danke für deine Antwort.
Zum Thema:
Ich habe eine "Queue" bisher immer als eine Art reservierter Speicher im Arbeitsspeicher verstanden, auf dem bis zu einer gewissen Größe (maximale Queue Größe) Daten geschribeben werden können. Daher hatte ich mir eben gedacht, diese könnten dann auch jederzeit gelesen werden. Was Du beschreibst hört sich leider anders an. Gibt es in LV eine Möglichkeit so etwas zu realisieren?
Aber noch eine allgemeine Funktion von Queues:
Angenommen ich habe eine Queue in der sich die Varbiablen a,b,c und d befinden. Jetzt Füge ich mittel "Element Einfügen" neue WErte für die Größen a und c ein. Was passiert mit b und d? Werden die unverändert ins neue Queue Element übernommen?

Grüße Jens
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 07:50 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2012 07:59 von Lucki.)
Beitrag #4

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: Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues
Google mal mit "Queued State machine" oder "QSM" und lies das hier. QSM ist für meine Begriffe die fortgeschrittenste Architektur überhaupt.
Bei Queues hat man nur einen Empfänger, es kann aber von mehreren Stellen des Programms gesendet werden. Der Empfänger sollte natürlich wissen, woher die Daten jeweils kommen, und außerdem kann das Format der Daten, je nachdem woher es kommt, unterschiedlich sein. Die Lösung dafür ist: Die Queue-Elemente sind Cluster, bestehend aus einen String oder Enum als Beschreibung, und einem Variant zur Aufnahme jedes Datenformates.
Außer Queues gibt es noch Melder, und bei denen können die Daten auch von mehreren Empfängern gelesen werden. (Die Daten werden hier nicht, wie bei der Queue, durch Lesen gelöscht, sondern erst durch neues Beschreiben). Habe ich allerdings noch nicht benutzt und wüßte jetzt kein Beispiel, wo man das braucht.

NB: Die exzessive Verwendung von Sequenzstrukturen ist meiner Erfahrung nach die Visitenkarte jeden Anfängers. In Deinem Fall: Die Referenzleitung der Queue besorgt die richtige Reihenfolge der Ausführung, Sequenz überflüssig
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 07:53 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2012 08:03 von RMR.)
Beitrag #5

RMR Offline
Laborkater
**


Beiträge: 238
Registriert seit: Nov 2008

09f1 - 2010SP1(f4) - 2012SP1f5 - 2014 SP1f10 -2017f3
2009
DE_EN

76437
Deutschland
RE: Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues
Hallo Jens.

du solltest deinen Queue-Inhalt als "Type-def-cluster" einrichten. Somit hast du jan jeder Stelle im Code den Überblick, was zu gerade schreibst, bzw liest.
(Bundle-/unbudle by name) Die Queue macht dir "Päckchen" in welchen deine Werte zusammen "transportiert" werden.
Deine Päckchen beinhalten also immer die Variablen A,b,c,d..... fügst du ein, überschreibst du.

In den (LV) Beispielen findest du ein paar nette Codes hierzu.

VG, Ralf
(20.04.2012 07:50 )Lucki schrieb:  "QSM" und lies das hier.

DANKE! Guru1

Schönes WE, Ralf

100nF passen immer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 08:18
Beitrag #6

JensLV Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2012

2009
2006
DE



RE: Datenkomunikation zwischen parallelen Schleifen: Frage zu Queues
Hallo alle zusammen,

schön das man hier gehofen bekommt.

Cluster zur Grupierung und benennung meiner Variablen nutze ich schon. Ist eigentlich auch einer meiner Hauptgründe die Queues zu verwenden, da duch die möglichkeit des Bundel/Unbundle by name das Programm auch für den, der es nicht geschrieben hat sofort verständelich wird.

Die Sache mit der QSM muss ich mir in einer ruhigen Minute mal zu gemüte führen.

Grüße Jens
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
  LabVIEW Queues Schrankwand 3 4.439 14.12.2023 13:41
Letzter Beitrag: Schrankwand
  Bool Werte über Queues maxil 52 25.096 12.07.2019 14:00
Letzter Beitrag: GerdW
  Queues? flizzer82 14 30.738 23.05.2017 19:58
Letzter Beitrag: jg
  Queues VI übergreifend verwenden mdu 12 16.889 14.03.2015 15:34
Letzter Beitrag: Lucki
  Queues mit FGVs in Polymorphen VI Andre_A 7 7.399 17.05.2014 07:39
Letzter Beitrag: cb
  If Schleife und queues Danjo 4 7.260 27.05.2013 15:14
Letzter Beitrag: jg

Gehe zu: