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 

Synchronisation mit 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!

20.09.2013, 09:49
Beitrag #1

Masterg4941 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Aug 2013

2012
2013
DE


Deutschland
Synchronisation mit Queues
Hallo Leute,

ich brauche da mal wieder eine Hilfestellung.
Ich bin gerade dabei verschiedene Signale zu synchronisieren, damit bei der Auswertung auch die zusammengehörenden Werte verwendet werden.
Ich habe mal ein BeispielVI erstellt, dass meinem Problem nahe kommt.

Ich habe z.B. 2 Signale (bei mir sind es mehr), die vom Messgerät erfasst werden. Alle Messwerte werden zur Weiterverarbeitung in globale Variablen geschrieben. Nun habe ich parallel zu den glob. Variablen jeweils ein Queue, dass gefüllt wird. Somit will ich für Berechnungen die richtigen Werte bekommen. Allerdings bekomme ich das mit den Queues nicht richtig hin Undecided
Wie bekomme ich die 2 Signale aus dem Beispielprogramm synchronisiert? Die Messwerte sollen nur bei einer bestimmten Spannung ausgegeben werden.
Ich glaube zwar, dass das Beispielprogramm synchron ist, aber wahrscheinlich nicht die beste/richtige Lösung.


P.S. Es wurden glob. Variablen eingesetzt, da es der einfachste Weg war Big Grin. Wir aber wohl komplett auf Queues umgestellt.

Für Ratschläge/Feedback wäre ich sehr dankbar!


LG


Angehängte Datei(en)
8.2 .vi  Senden.vi (Größe: 21,54 KB / Downloads: 253)

8.2 .vi  empfangen.vi (Größe: 15,06 KB / Downloads: 242)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.09.2013, 09:41
Beitrag #2

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Synchronisation mit Queues
Was spricht gegen eine "klassische" Producer/Consumer Struktur, bei der du die Queue unten einfach nach deinen Wunschkriterien filterst?

If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2013, 13:32
Beitrag #3

Masterg4941 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Aug 2013

2012
2013
DE


Deutschland
RE: Synchronisation mit Queues
(23.09.2013 09:41 )Kasi schrieb:  Was spricht gegen eine "klassische" Producer/Consumer Struktur, bei der du die Queue unten einfach nach deinen Wunschkriterien filterst?

Da spricht natürlich nix gegen Angel_not
Danke für den Tipp. Habs auch so umgesetzt

lg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2013, 20:35 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2013 15:33 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: Synchronisation mit Queues
(24.09.2013 13:32 )Masterg4941 schrieb:  Danke für den Tipp. Habs auch so umgesetzt
Interessant. Dein Programm ist zwar stark RubeGoldberg-haltig, aber es ist doch bereits eine Erzeuger-Verbraucher -Struktur. Was Hast Du denn jetzt noch verändert?
Um einen Erzeuger mit einem Verbracher zu synchronisieren, genügt eine Queue oder ein Melder. Du hast deren Drei in der Erzeuger- und Verbraucher-Schleife, und außerdem ist die Wartezeit-Erzeugung in der Erzeugerschleife dubios.
Du solltes Dich für eine der beiden Varianten entscheiden:
Entweder:
Eine Erzeuger- und eine Verbraucherschleufe (so wie jetzt).Dann nur eine Queue und in dieser Übertragung aller drei Daten in einer Clusterstruktur.
Oder:
Im Erzeuger-VI drei voneinader unabhängige Erzeugerschleifen und im Verbraucher-VI drei unabhängige Verbraucherschleifen.
(Wobei das hier im Falle der boolschen Variablen nicht funktioniert, das sie abhängig ist von den Daten)

Edit: Version in 8.2 geändert


Angehängte Datei(en)
8.2 .vi  Senden.vi (Größe: 14,62 KB / Downloads: 225)

8.2 .vi  empfangen.vi (Größe: 9,92 KB / Downloads: 218)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2013, 06:26
Beitrag #5

Masterg4941 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Aug 2013

2012
2013
DE


Deutschland
RE: Synchronisation mit Queues
(24.09.2013 20:35 )Lucki schrieb:  Interessant. Dein Programm ist zwar stark RubeGoldberg-haltig, aber es ist doch bereits eine Erzeuger-Verbraucher -Struktur. Was Hast Du denn jetzt noch verändert?
Naja an dem "Programmstil" nicht viel. Habe es nur in mein eigentliches Programm intigriert.

Zitat:und außerdem ist die Wartezeit-Erzeugung in der Erzeugerschleife dubios.
Ja da sickert wohl der Anfänger noch durch Tongue
Ich habe bisher in jeden While-Schleife eine Wartezeit eingefügt, um die CPU zu entlasten. Habs aber gerade getestet. Mit oder ohne Wartezeit macht der CPU nix aus. Danke für den Tipp

Zitat:Du solltes Dich für eine der beiden Varianten entscheiden:
Entweder:
Eine Erzeuger- und eine Verbraucherschleufe (so wie jetzt).Dann nur eine Queue und in dieser Übertragung aller drei Daten in einer Clusterstruktur.
Oder:
Im Erzeuger-VI drei voneinader unabhängige Erzeugerschleifen und im Verbraucher-VI drei unabhängige Verbraucherschleifen.
(Wobei das hier im Falle der boolschen Variablen nicht funktioniert, das sie abhängig ist von den Daten)
Ich habe es jetzt so belassen wie gehabt. Nur, das ich die drei Daten nicht in ein Cluster zusammenführe. Somit kann ich dann jeden Queue einzeln abfragen, falls gewünscht.

Kannst du bitte die hochgeladenen VI´s in 8.2 speichern? Oder hast du nix am Programm verändert?

LG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2013, 07:18 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2013 07:41 von Masterg4941.)
Beitrag #6

Masterg4941 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Aug 2013

2012
2013
DE


Deutschland
RE: Synchronisation mit Queues
Ich habe jetzt mal 2 Ausschnitte aus meinem Programm beigefügt.
In dem "senden.png" werden die Messdaten direkt von dem Messgerät eingelesen und in ein Queue geschoben. Ist die Nennspannung +- 1% erreicht, so soll das "OK" in die "empfangen.png" übergeben werden.
Nun meine Frage dazu:
Wenn ich das Programm jetzt so belasse, wird mir bei einem "OK" ja immer irgendein alter Wert aus dem Queue geholt. Sollte ich dann lieber im "senden.png" immer "Element am Anfang einfügen" verwenden? Würde ja eigentlich Sinn machen, oder?

P.S. konnte meinen letzten Beitrag nicht mehr editieren, da 30 min vergangen waren -.-


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.09.2013, 07:45
Beitrag #7

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Synchronisation mit Queues
Ich finde diese Art der Überprüfung immernoch nicht wirklich intuitiv.
Wenn du die Prüfung im "Empfangen"-Fall einsetzt und auf den zusätzlichen Nennspannungs-Melder verzichtest, erübrigt sich die Frage, wo genau das Element jetzt gerade in der Queue zu finden ist. Ansonsten läufst du (meiner Meinung nach) mit deiner Methode immer in die Gefahr einer Race Condition.

If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2013, 08:08 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2013 08:08 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Synchronisation mit Queues
Hallo MasterG,

- ich verstehe nicht, warum überhaupt Queues genutzt werden, wenn du sowieso alles in globalen Variablen pufferst...
- ich verstehe nicht, warum 3 Queues und ein 1 Notifier genutzt werden, wenn eine Queue (die einen Cluster enthält) ausreichen würde...
- ich verstehe nicht, warum man eine MathScript-Node verwenden muss, um eine einfache Multiplikation, für die auch die Compound-Arithmetik ausreichen würde, zu erledigen...

Kurzum: Ich halte ein Redesign für sehr angebracht...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2013, 12:16
Beitrag #9

Masterg4941 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Aug 2013

2012
2013
DE


Deutschland
RE: Synchronisation mit Queues
(25.09.2013 07:45 )Kasi schrieb:  Wenn du die Prüfung im "Empfangen"-Fall einsetzt und auf den zusätzlichen Nennspannungs-Melder verzichtest, erübrigt sich die Frage, wo genau das Element jetzt gerade in der Queue zu finden ist.
Danke habe ich geändert.



(25.09.2013 08:08 )GerdW schrieb:  - ich verstehe nicht, warum überhaupt Queues genutzt werden, wenn du sowieso alles in globalen Variablen pufferst...
GerdW bitte schau dir meinen Beitrag #1 an! Momentan funktioniert es mit den globalen Variablen, aber für manche Vorgänge brauche ich synchronisierte Daten und will deshalb auf Queues umrüsten.

Zitat:- ich verstehe nicht, warum 3 Queues und ein 1 Notifier genutzt werden, wenn eine Queue (die einen Cluster enthält) ausreichen würde...
Ja guter Einwand. Habe es jetzt mit einem Queue (Cluster) realisiert. Ist jetzt auch wesentlich übersichtlicher.

Zitat:- ich verstehe nicht, warum man eine MathScript-Node verwenden muss, um eine einfache Multiplikation, für die auch die Compound-Arithmetik ausreichen würde, zu erledigen...
Ich habe ein Mathscript verbaut, da
1. noch Berechnungen hinzugefügt werden
2. es für jemanden, der den Code nicht geschrieben hat, schneller zu verstehen ist (Meine Meinung).


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2013, 12:24 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2013 12:24 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Synchronisation mit Queues
Hallo MasterG,

Zitat:Ich habe ein Mathscript verbaut
Warum MathScript und keine FormulaNode?
Warum MathScript und keine ExpressionNode?

- MathScript ist ausgerechnet die Struktur, die die meisten Resourcen benötigt - für solch eine Rechnung...
- Ich wüsste nicht, was an einer Multiplikation mit 4 Eingängen schwer zu verstehen sein soll...

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Probleme mit Queues und Programmaufbau stefan1312 6 5.411 30.10.2018 17:08
Letzter Beitrag: NoWay
  Drei Queues in einer While-Schleife mit case-Struktur EinVolvic 12 13.157 17.05.2017 20:25
Letzter Beitrag: EinVolvic
  Synchronisation mehrerer Geräte BenW 1 3.366 03.04.2016 11:19
Letzter Beitrag: IchSelbst
  2D Arrays per Queues abfragen Jan S. 3 3.981 16.01.2016 08:56
Letzter Beitrag: Lucki
  Frage zu Message Queues, Queue Cluster mehrfach aufschlüsseln dali4u 8 8.053 11.12.2014 09:07
Letzter Beitrag: Lucki
  Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht dali4u 4 6.168 28.10.2014 11:48
Letzter Beitrag: jg

Gehe zu: