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 

Occurrence/Tasking/Timing



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!

16.01.2009, 14:12 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2009 14:41 von LLEA2.)
Beitrag #1

LLEA2 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jan 2008

8.5
2008
kA

10777
Deutschland
Occurrence/Tasking/Timing
hallo,

ich muss mir zurzeit Gedanken machen, wie ich ein bestimmtes Problem lösen kann. Ich möchte zwei Schleifen (später min 6) unabhängig voneinander also quasi parallel laufen lassen, nach n-Schritten soll eine Synchronisation erfolgen. Die Schleifen sind im Moment innerhalb eines Rahmens einer Sequenzstruktur untergebracht und dienen zur Ansteuerung mehrere Sondenverschiebegeräte mit jeweils zwei Achsen. Hierbei treten nun zwei Probleme auf. Aufgrund der gegegeben Struktur mit Sequenrahmen und einer While-Schleife können entweder alle gleichzeitg losfahren oder immer nur eine manuell pro Schleifendurchlauf. Hier sollen alle manuell und "quasi" parallel ansteuerbar sein (siehe hierzu das angehängte VI -Occurrence). Das viel größere Problem ist, dass es "schnelle" und "langsame" Sonden gibt. Im Moment wird mit jedem Durchlauf zunächst eine bestimmte Position mit der ersten Achse angefahren und im Anschluss die zweite Achse (Winkel) angesteuert. Schnelle Sonden fahren auf eine Höhe und einen Winkel und sind fertig, müssen aber im Moment auf die langsamen Warten, die sich ggf. in n-weiteren Schleifendurchläufen nach bestimmten Parametern ausrichten. In dieser Zeit könnte die schnelle Sonde schon weitere Winkel auf der selben Höhe anfahren, was aufgrund der gegebenen Programmstruktur nicht möglich ist, da darauf gewartet werden muss, dass die langsamen Sonden den Soll-Winkel auch wirklich (in mehreren Schritten, min. 2) erreicht haben. Meine Frage wäre nun, wie kann ich diese Probleme grundlegend am besten ändern. Die einzelnen Sonden müssen in eigenen Schleifen und nicht in einer großen angesteuert werden. Für die Synchronisation nach n-Schritten könnte ich Semaphoren oder Rendezvous-Elemente verwenden? Ich wäre für jeden Tipp dankbar.

In Bezug auf das manuelle und quasi parallele Ansteuern habe ich mich an Occurrence-Elementen versucht und hierbei das Problem, dass ich nur ein Ereignis zur Laufzeit generieren kann und demnach mein Zählbeispiel nicht erneut starten kann?! Des Weiteren kann ich bei dem VI nicht verhindern, dass die While-Schleifen das erste Mal durchläuft.

mfg


Lv85_img


Sonstige .vi  occurrence.vi (Größe: 18,46 KB / Downloads: 324)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2009, 14:38
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Occurrence/Tasking/Timing
Ohne jetzt dein VI anzuschauen, beschäftige dich mal mit den anderen Elementen in der Sychonizations-Palette und schau dir dazu die Beispiele an.

Also, mach dich schlau über Notifier, Semaphores und Rendezvous-VIs. Damit geht wesentlich mehr als mit Occurences.

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
16.01.2009, 15:17
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Occurrence/Tasking/Timing
' schrieb:Ich möchte zwei Schleifen (später min 6) unabhängig voneinander also quasi parallel laufen lassen, nach n-Schritten soll eine Synchronisation erfolgen.
Das VI hab ich jetzt nicht angekuckt.

Ich täte da folgendes machen: Ein ablaufinvariantes SubVI schreiben, dass einen kompletten Prüfablauf machen kann. Dieses SubVI wird dann zwei, drei oder auch sechs Mal parallel aufgerufen. Dieses SubVI wird von extern mittels einer Queue gesteuert. Das Synchronisieren an einer vorgesehenen Stelle ist im Prinzip ganz einfach. Irgendwann kommt ein SubVI an eine Position, an der synchronisiert werden soll. Jetzt sendet dieses SubVI (per Melder) an das allen SubVIs überlagerte Steuerungsprogramm eine Meldung "bin da, warte auf Synch". Wenn die Steuerung von allen diese Meldung hat, sendet es an alle "Jetzt weiter".

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2009, 12:09
Beitrag #4

LLEA2 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jan 2008

8.5
2008
kA

10777
Deutschland
Occurrence/Tasking/Timing
Ich hätte zwei weitere Fragen zu diesem Projekt. Es passt vielleicht nicht mehr ganz zu der Überschrift, aber ein neues Thema zu öffnen...^_^

Stand der Dinge ist, dass ich in Form von Cases zwischen zwei Sondentypen untescheiden werde. Für jede der sechs Sonden soll es eine Schleife geben, in der dann der/das jeweilige Case abläuft. Die 6 Einzelschleifen sollen in einer großen Schleife ablaufen, sodass eine "Gesamtmessung" ausgelöst werden kann, wenn alle sechs Schleifen abgearbeitet wurden. Zudem sollen noch neben der "Gesamtmessung" pro großen Schleifendurchlauf mehrere Einzelmessungen des zweiten Sondentyps möglich sein. Diese Sonden müssen dann untereinander synchronisiert werden. Dies ist hoffentlich mit der Rendezvous-Funktion umsetzbar. Ist es möglich, dass ich pro großen Schleifendurchlauf einen Rendezvouzpunkt mit der entsprechende Anzahl an vorhandenen Sonden des 2. Typs erstelle, aber in jedem der 6 Schleifen das Element "auf Rendezvous warten" einfüge. Könnten hierbei die Schleifen, die dann Sonden des 1. Typs abarbeiten zu Problemen führen im Bezug auf die Rendezvous-Funktion? Noch wichtiger wäre die Frage, wie ich Einzelmessungen auslösen kann ohne auch hier den entsprechenden Quellcode doppelt und dreiffach aufzuführen. Ich meine eq hätte da eine Bibliothek zur Verfügung gestellt, in der ein Hauptask mit mehreren Untertasks kommuniziert?!

Des Weiteren will ich zwischen einem Automatik-Modus und einem Manuell-Modus unterscheiden. Im Prinzip unterscheiden sich die beiden Modi nur durch Ereignisstrukturen, die dafür sorgen, dass alles Sonden quasi parallel angesteuert werden können. Der Quellcode könnte dann einfach sehr unübersichtlich werden, weil ich alles doppelt verwende. Kann man das irgendwie geschickt umgehen ohne auf das "parallele" Ansteuern verzichten zu müssen ???

mfg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2009, 17:41
Beitrag #5

LLEA2 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jan 2008

8.5
2008
kA

10777
Deutschland
Occurrence/Tasking/Timing
Hallo nochmal,

ich habe ein Test-VI erstellt. Hierbei funktioniert die Übergabe der Rendezvous-Refnum per lokaler Variabel oder Referenz nicht bzw. die Rendezvous-Funktion an sich lässt sich nicht realisieren ohne alle Element miteinander zu verdrahten. Vielleicht kann mir jemand von euch weiterhelfen, wahrscheinlich kann man die Rendezvousfunktion so gar nicht einsetzten?


Vielen Dank !!!

Lv85_img

PS: Kann man den Titel des Themas vielleicht in etwas Rendezvous-spezifisches abändern?


Angehängte Datei(en)
Sonstige .vi  Sync_Test.vi (Größe: 80,19 KB / Downloads: 175)

Sonstige .vi  GLOBAL_SM.vi (Größe: 5,45 KB / Downloads: 208)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2009, 19:02
Beitrag #6

LLEA2 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jan 2008

8.5
2008
kA

10777
Deutschland
Occurrence/Tasking/Timing
Habe das VI ein bissel umgebastelt. Rendezvous-Treffpunkt an sich geht. Ein Fehler in dem VI bleibt, und zwar funktioniert die While-Schleife, welche den Rendezvous-Status abfragt, nicht so wie ich mir das erhofft habe. Das Abbruchkriterium Anzahl der Wartenden = Größe des Rendezvouspunktes tritt nicht ein bzw. es ergibt sich irgendwie eine zeitliche Diskrepanz zwischen dem Zeitpunkt, wo das Rendezvouz erfolgt und der parallel laufenden Statusabfrage. Hat vielleicht jemand eine Idee ?

Lv85_img


Angehängte Datei(en)
Sonstige .vi  Sync_Test.vi (Größe: 70,55 KB / Downloads: 238)

Sonstige .vi  GLOBAL_SM.vi (Größe: 5,76 KB / Downloads: 212)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.01.2009, 19:19 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2009 19:22 von IchSelbst.)
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Occurrence/Tasking/Timing
' schrieb:Das Abbruchkriterium Anzahl der Wartenden = Größe des Rendezvouspunktes tritt nicht ein bzw. es ergibt sich irgendwie eine zeitliche Diskrepanz zwischen dem Zeitpunkt, wo das Rendezvouz erfolgt und der parallel laufenden Statusabfrage.
JHier, ich. Siehe Anhang.

So wie du das gemacht hast geht es nicht. Da das Warten und nachfolgende Weitermachen (! dann gilt: Wartende=0) in den 6 parallenen Schleifen asynchron zu der Hauptschleife geht, ist auf keinen Fall gewährleistet, dass der Gleichheitszustand in der Hauptschleife festgestellt werden kann. Das weitermachen geht so schnell, da kommt die Hauptschleife überhaupt nicht nach.

Ich erlaube mir zu sagen, dass dein BD viel, viel zu groß ist. Hier darfst du dir ein Beispiel an meiner Ausführung nehmen.


Angehängte Datei(en)
Sonstige .zip  Trigger.zip (Größe: 53,32 KB / Downloads: 238)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.01.2009, 17:18
Beitrag #8

LLEA2 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jan 2008

8.5
2008
kA

10777
Deutschland
Occurrence/Tasking/Timing
vielen dank IchSelbst :DMusste es zunächst erstmal versuchen zu verstehen, aber danach hast du mir damit sehr geholfen. ich glaube, dass ich da ein "race-condition" problem gezaubert habe. Ich habe dein Beispiel jetzt für mein Projekt noch ein wenig erweitert, aber das Grundgerüst für die Synchronisation der Messung steht jetzt. Rolleyes

Bei weiteren Problemen melde ich mich dann einfach nochmal.
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
Lightbulb Windows 11 Timing Philipp_Kant 3 678 13.11.2024 14:03
Letzter Beitrag: Philipp_Kant
  Timing Einstellung DAQ-assistent bachatero18 6 4.419 26.02.2019 15:11
Letzter Beitrag: bachatero18
  Sequenz zur Dokumentation, Einfluss auf das Timing TSC 7 5.196 19.10.2016 07:08
Letzter Beitrag: TSC
  Timing-Probleme Joachim 1 3.166 20.08.2015 09:07
Letzter Beitrag: jg
  Timing Problem Nattdis 0 2.684 05.02.2015 14:56
Letzter Beitrag: Nattdis
  Timing simulation and control loop I2thavo 0 3.634 23.07.2014 19:49
Letzter Beitrag: I2thavo

Gehe zu: